protozero: Add ProtoZero vs protolite benchmark

Numbers will be used for docs

Change-Id: I161664352167ea01bd0620544368fdb40b9be77f
diff --git a/src/protozero/BUILD.gn b/src/protozero/BUILD.gn
index 124bb56..18f8e7e 100644
--- a/src/protozero/BUILD.gn
+++ b/src/protozero/BUILD.gn
@@ -92,3 +92,17 @@
     "../base",
   ]
 }
+
+if (enable_perfetto_benchmarks) {
+  source_set("benchmarks") {
+    testonly = true
+    deps = [
+      ":protozero",
+      ":testing_messages_lite",
+      ":testing_messages_zero",
+      "../../gn:benchmark",
+      "../../gn:default_deps",
+    ]
+    sources = [ "test/protozero_benchmark.cc" ]
+  }
+}
diff --git a/src/protozero/test/example_proto/test_messages.descriptor.h b/src/protozero/test/example_proto/test_messages.descriptor.h
index 417a711..4c69fcb 100644
--- a/src/protozero/test/example_proto/test_messages.descriptor.h
+++ b/src/protozero/test/example_proto/test_messages.descriptor.h
@@ -27,14 +27,14 @@
 // SHA1(tools/gen_binary_descriptors)
 // 3df80477da2ea38cc659967487b37051a154bb69
 // SHA1(src/protozero/test/example_proto/test_messages.proto)
-// bd59c7719b091c8277d2dce867d28dfa5b40bab2
+// 6db2d291c87441f363d941410a1c326078566aa0
 
 // This is the proto TestMessages encoded as a ProtoFileDescriptor to allow
 // for reflection without libprotobuf full/non-lite protos.
 
 namespace perfetto {
 
-constexpr std::array<uint8_t, 4165> kTestMessagesDescriptor{
+constexpr std::array<uint8_t, 4235> kTestMessagesDescriptor{
     {0x0a, 0x62, 0x0a, 0x33, 0x73, 0x72, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74,
      0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x65,
      0x78, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f,
@@ -96,7 +96,7 @@
      0x6e, 0x65, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f,
      0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x05, 0x20, 0x01,
      0x28, 0x0c, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x4d, 0x65, 0x73,
-     0x73, 0x61, 0x67, 0x65, 0x50, 0x00, 0x0a, 0xe0, 0x1a, 0x0a, 0x34, 0x73,
+     0x73, 0x61, 0x67, 0x65, 0x50, 0x00, 0x0a, 0xa6, 0x1b, 0x0a, 0x34, 0x73,
      0x72, 0x63, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f,
      0x2f, 0x74, 0x65, 0x73, 0x74, 0x2f, 0x65, 0x78, 0x61, 0x6d, 0x70, 0x6c,
      0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x74, 0x65, 0x73, 0x74,
@@ -118,7 +118,7 @@
      0x65, 0x12, 0x23, 0x0a, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e,
      0x67, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09,
      0x52, 0x0c, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x43, 0x6f,
-     0x64, 0x65, 0x22, 0xf5, 0x06, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x72, 0x79,
+     0x64, 0x65, 0x22, 0xbb, 0x07, 0x0a, 0x0a, 0x45, 0x76, 0x65, 0x72, 0x79,
      0x46, 0x69, 0x65, 0x6c, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x66, 0x69, 0x65,
      0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20, 0x01,
      0x28, 0x05, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x74,
@@ -157,232 +157,237 @@
      0x66, 0x69, 0x65, 0x6c, 0x64, 0x44, 0x6f, 0x75, 0x62, 0x6c, 0x65, 0x12,
      0x1d, 0x0a, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x62, 0x6f, 0x6f,
      0x6c, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x69, 0x65,
-     0x6c, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x6d,
-     0x61, 0x6c, 0x6c, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x01,
-     0x28, 0x0e, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
-     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-     0x6f, 0x73, 0x2e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d,
-     0x52, 0x09, 0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12,
-     0x42, 0x0a, 0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x6e,
-     0x75, 0x6d, 0x18, 0x34, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70,
-     0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-     0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69, 0x67,
-     0x6e, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x73, 0x69, 0x67,
-     0x6e, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x08, 0x62,
-     0x69, 0x67, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x01, 0x28,
-     0x0e, 0x32, 0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72,
-     0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-     0x73, 0x2e, 0x42, 0x69, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x62,
-     0x69, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69,
-     0x65, 0x6c, 0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xf4,
-     0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64,
-     0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69,
-     0x65, 0x6c, 0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0xf9, 0x03,
-     0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42,
-     0x79, 0x74, 0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74,
-     0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xd8, 0x04, 0x20, 0x01,
-     0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
-     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-     0x6f, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c,
-     0x64, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
-     0x52, 0x0a, 0x6e, 0x65, 0x73, 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, 0xe7, 0x07, 0x20, 0x03, 0x28,
-     0x05, 0x52, 0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49,
-     0x6e, 0x74, 0x33, 0x32, 0x22, 0x20, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74,
-     0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x49,
-     0x4e, 0x47, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4e, 0x47,
-     0x10, 0x02, 0x22, 0x9b, 0x02, 0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65,
-     0x64, 0x41, 0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74,
-     0x65, 0x64, 0x5f, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26,
-     0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74,
-     0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4e,
-     0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
-     0x64, 0x42, 0x52, 0x09, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
-     0x41, 0x12, 0x51, 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x65, 0x72, 0x5f, 0x6e,
-     0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32,
-     0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e,
-     0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
-     0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x2e, 0x4e, 0x65, 0x73, 0x74,
-     0x65, 0x64, 0x42, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x52,
-     0x0b, 0x73, 0x75, 0x70, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
-     0x1a, 0x76, 0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x12,
-     0x47, 0x0a, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x18, 0x01,
-     0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+     0x6c, 0x64, 0x42, 0x6f, 0x6f, 0x6c, 0x12, 0x44, 0x0a, 0x0c, 0x66, 0x69,
+     0x65, 0x6c, 0x64, 0x5f, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x18, 0x0e,
+     0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
      0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72,
-     0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41,
-     0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x2e, 0x4e, 0x65, 0x73,
-     0x74, 0x65, 0x64, 0x43, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42,
-     0x1a, 0x22, 0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x12,
-     0x17, 0x0a, 0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x18, 0x01,
-     0x20, 0x01, 0x28, 0x05, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43,
-     0x22, 0x80, 0x02, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61,
-     0x73, 0x65, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0b,
-     0x66, 0x6f, 0x6f, 0x5f, 0x62, 0x61, 0x72, 0x5f, 0x62, 0x61, 0x7a, 0x18,
-     0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x6f, 0x42, 0x61,
-     0x72, 0x42, 0x61, 0x7a, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x72, 0x42,
-     0x61, 0x7a, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61,
-     0x72, 0x42, 0x61, 0x7a, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x6f, 0x6f, 0x4d,
-     0x6f, 0x6f, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4d, 0x6f,
-     0x6f, 0x4d, 0x6f, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x45,
-     0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08,
-     0x52, 0x0a, 0x55, 0x52, 0x4c, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72,
-     0x12, 0x12, 0x0a, 0x04, 0x58, 0x4d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x01,
-     0x28, 0x08, 0x52, 0x04, 0x58, 0x4d, 0x61, 0x70, 0x12, 0x21, 0x0a, 0x0d,
-     0x55, 0x72, 0x4c, 0x45, 0x5f, 0x6e, 0x63, 0x6f, 0x5f, 0x5f, 0x64, 0x65,
-     0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x55, 0x72, 0x4c,
-     0x45, 0x4e, 0x63, 0x6f, 0x44, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x09, 0x5f,
-     0x5f, 0x62, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01,
-     0x28, 0x08, 0x52, 0x07, 0x42, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x67, 0x12,
-     0x0e, 0x0a, 0x02, 0x55, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52,
-     0x02, 0x55, 0x32, 0x12, 0x1a, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x67, 0x42,
-     0x69, 0x67, 0x5f, 0x5f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07,
-     0x62, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x67, 0x22, 0x8f, 0x01, 0x0a, 0x14,
-     0x50, 0x61, 0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74,
-     0x65, 0x64, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0b,
-     0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18,
-     0x01, 0x20, 0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66,
-     0x69, 0x65, 0x6c, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a,
-     0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64,
-     0x33, 0x32, 0x18, 0x02, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01,
-     0x52, 0x0c, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64,
-     0x33, 0x32, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f,
-     0x73, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03,
-     0x28, 0x10, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c,
-     0x64, 0x53, 0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x22, 0x82, 0x04,
-     0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
-     0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x31, 0x12, 0x19, 0x0a, 0x08, 0x72,
-     0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
-     0x05, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x12, 0x47,
-     0x0a, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x18, 0x02, 0x20, 0x03, 0x28,
-     0x0e, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72,
-     0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-     0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
-     0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d,
-     0x7a, 0x5f, 0x56, 0x31, 0x52, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x12,
-     0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69,
-     0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f,
-     0x6f, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a,
-     0x72, 0x65, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04,
-     0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x70, 0x53, 0x74, 0x72,
-     0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x31, 0x18,
-     0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+     0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x46, 0x69,
+     0x65, 0x6c, 0x64, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x4e, 0x65,
+     0x73, 0x74, 0x65, 0x64, 0x12, 0x3f, 0x0a, 0x0a, 0x73, 0x6d, 0x61, 0x6c,
+     0x6c, 0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x33, 0x20, 0x01, 0x28, 0x0e,
+     0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f,
+     0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+     0x2e, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x09,
+     0x73, 0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x42, 0x0a,
+     0x0b, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x65, 0x6e, 0x75, 0x6d,
+     0x18, 0x34, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f,
+     0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
+     0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x65,
+     0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a, 0x73, 0x69, 0x67, 0x6e, 0x65,
+     0x64, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x39, 0x0a, 0x08, 0x62, 0x69, 0x67,
+     0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0x35, 0x20, 0x01, 0x28, 0x0e, 0x32,
+     0x1e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e,
+     0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
+     0x42, 0x69, 0x67, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x07, 0x62, 0x69, 0x67,
+     0x45, 0x6e, 0x75, 0x6d, 0x12, 0x22, 0x0a, 0x0c, 0x66, 0x69, 0x65, 0x6c,
+     0x64, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0xf4, 0x03, 0x20,
+     0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x74,
+     0x72, 0x69, 0x6e, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x65, 0x6c,
+     0x64, 0x5f, 0x62, 0x79, 0x74, 0x65, 0x73, 0x18, 0xf9, 0x03, 0x20, 0x01,
+     0x28, 0x0c, 0x52, 0x0a, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x42, 0x79, 0x74,
+     0x65, 0x73, 0x12, 0x4e, 0x0a, 0x0b, 0x6e, 0x65, 0x73, 0x74, 0x65, 0x64,
+     0x5f, 0x65, 0x6e, 0x75, 0x6d, 0x18, 0xd8, 0x04, 0x20, 0x01, 0x28, 0x0e,
+     0x32, 0x2c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f,
+     0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+     0x2e, 0x45, 0x76, 0x65, 0x72, 0x79, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x2e,
+     0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d, 0x52, 0x0a,
+     0x6e, 0x65, 0x73, 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, 0xe7, 0x07, 0x20, 0x03, 0x28, 0x05, 0x52,
+     0x0d, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x49, 0x6e, 0x74,
+     0x33, 0x32, 0x22, 0x20, 0x0a, 0x0a, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+     0x45, 0x6e, 0x75, 0x6d, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x49, 0x4e, 0x47,
+     0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x4e, 0x47, 0x10, 0x02,
+     0x22, 0x9b, 0x02, 0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41,
+     0x12, 0x45, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+     0x5f, 0x61, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x70,
+     0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73,
+     0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4e, 0x65, 0x73,
+     0x74, 0x65, 0x64, 0x41, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42,
+     0x52, 0x09, 0x72, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x12,
+     0x51, 0x0a, 0x0c, 0x73, 0x75, 0x70, 0x65, 0x72, 0x5f, 0x6e, 0x65, 0x73,
+     0x74, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e,
+     0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65,
+     0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x4e, 0x65,
+     0x73, 0x74, 0x65, 0x64, 0x41, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64,
+     0x42, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x52, 0x0b, 0x73,
+     0x75, 0x70, 0x65, 0x72, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x1a, 0x76,
+     0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x12, 0x47, 0x0a,
+     0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x62, 0x18, 0x01, 0x20, 0x01,
+     0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
+     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+     0x6f, 0x73, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x41, 0x2e, 0x4e,
+     0x65, 0x73, 0x74, 0x65, 0x64, 0x42, 0x2e, 0x4e, 0x65, 0x73, 0x74, 0x65,
+     0x64, 0x43, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x42, 0x1a, 0x22,
+     0x0a, 0x07, 0x4e, 0x65, 0x73, 0x74, 0x65, 0x64, 0x43, 0x12, 0x17, 0x0a,
+     0x07, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x5f, 0x63, 0x18, 0x01, 0x20, 0x01,
+     0x28, 0x05, 0x52, 0x06, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x43, 0x22, 0x80,
+     0x02, 0x0a, 0x0f, 0x43, 0x61, 0x6d, 0x65, 0x6c, 0x43, 0x61, 0x73, 0x65,
+     0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x1e, 0x0a, 0x0b, 0x66, 0x6f,
+     0x6f, 0x5f, 0x62, 0x61, 0x72, 0x5f, 0x62, 0x61, 0x7a, 0x18, 0x01, 0x20,
+     0x01, 0x28, 0x08, 0x52, 0x09, 0x66, 0x6f, 0x6f, 0x42, 0x61, 0x72, 0x42,
+     0x61, 0x7a, 0x12, 0x16, 0x0a, 0x06, 0x62, 0x61, 0x72, 0x42, 0x61, 0x7a,
+     0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x62, 0x61, 0x72, 0x42,
+     0x61, 0x7a, 0x12, 0x16, 0x0a, 0x06, 0x4d, 0x6f, 0x6f, 0x4d, 0x6f, 0x6f,
+     0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x4d, 0x6f, 0x6f, 0x4d,
+     0x6f, 0x6f, 0x12, 0x1e, 0x0a, 0x0a, 0x55, 0x52, 0x4c, 0x45, 0x6e, 0x63,
+     0x6f, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a,
+     0x55, 0x52, 0x4c, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x65, 0x72, 0x12, 0x12,
+     0x0a, 0x04, 0x58, 0x4d, 0x61, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08,
+     0x52, 0x04, 0x58, 0x4d, 0x61, 0x70, 0x12, 0x21, 0x0a, 0x0d, 0x55, 0x72,
+     0x4c, 0x45, 0x5f, 0x6e, 0x63, 0x6f, 0x5f, 0x5f, 0x64, 0x65, 0x72, 0x18,
+     0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x55, 0x72, 0x4c, 0x45, 0x4e,
+     0x63, 0x6f, 0x44, 0x65, 0x72, 0x12, 0x1a, 0x0a, 0x09, 0x5f, 0x5f, 0x62,
+     0x69, 0x67, 0x42, 0x61, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08,
+     0x52, 0x07, 0x42, 0x69, 0x67, 0x42, 0x61, 0x6e, 0x67, 0x12, 0x0e, 0x0a,
+     0x02, 0x55, 0x32, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x02, 0x55,
+     0x32, 0x12, 0x1a, 0x0a, 0x09, 0x62, 0x61, 0x6e, 0x67, 0x42, 0x69, 0x67,
+     0x5f, 0x5f, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x62, 0x61,
+     0x6e, 0x67, 0x42, 0x69, 0x67, 0x22, 0x8f, 0x01, 0x0a, 0x14, 0x50, 0x61,
+     0x63, 0x6b, 0x65, 0x64, 0x52, 0x65, 0x70, 0x65, 0x61, 0x74, 0x65, 0x64,
+     0x46, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x12, 0x23, 0x0a, 0x0b, 0x66, 0x69,
+     0x65, 0x6c, 0x64, 0x5f, 0x69, 0x6e, 0x74, 0x33, 0x32, 0x18, 0x01, 0x20,
+     0x03, 0x28, 0x05, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0a, 0x66, 0x69, 0x65,
+     0x6c, 0x64, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x12, 0x27, 0x0a, 0x0d, 0x66,
+     0x69, 0x65, 0x6c, 0x64, 0x5f, 0x66, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+     0x18, 0x02, 0x20, 0x03, 0x28, 0x07, 0x42, 0x02, 0x10, 0x01, 0x52, 0x0c,
+     0x66, 0x69, 0x65, 0x6c, 0x64, 0x46, 0x69, 0x78, 0x65, 0x64, 0x33, 0x32,
+     0x12, 0x29, 0x0a, 0x0e, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x5f, 0x73, 0x66,
+     0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x18, 0x03, 0x20, 0x03, 0x28, 0x10,
+     0x42, 0x02, 0x10, 0x01, 0x52, 0x0d, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x53,
+     0x66, 0x69, 0x78, 0x65, 0x64, 0x36, 0x34, 0x22, 0x82, 0x04, 0x0a, 0x11,
+     0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69,
+     0x6e, 0x67, 0x5f, 0x56, 0x31, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f, 0x6f,
+     0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52,
+     0x07, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x12, 0x47, 0x0a, 0x05,
+     0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32,
+     0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e,
+     0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
+     0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69,
+     0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x7a, 0x5f,
+     0x56, 0x31, 0x52, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x12, 0x1f, 0x0a,
+     0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67,
+     0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f, 0x74,
+     0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x65,
+     0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x03,
+     0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x70, 0x53, 0x74, 0x72, 0x69, 0x6e,
+     0x67, 0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x31, 0x18, 0x05, 0x20,
+     0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a,
+     0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f,
+     0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73,
+     0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e, 0x53, 0x75,
+     0x62, 0x31, 0x5f, 0x56, 0x31, 0x52, 0x04, 0x73, 0x75, 0x62, 0x31, 0x12,
+     0x4b, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x72, 0x65, 0x70, 0x18,
+     0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74,
      0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70,
      0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65,
      0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e,
-     0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x31, 0x52, 0x04, 0x73, 0x75, 0x62,
-     0x31, 0x12, 0x4b, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x72, 0x65,
-     0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72,
-     0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74,
-     0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74,
-     0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56,
-     0x31, 0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x31, 0x52, 0x07, 0x73,
-     0x75, 0x62, 0x31, 0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73, 0x75,
-     0x62, 0x31, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28,
-     0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72,
-     0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
-     0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f,
-     0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x31,
-     0x5f, 0x56, 0x31, 0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75, 0x62,
-     0x31, 0x4c, 0x61, 0x7a, 0x79, 0x1a, 0x45, 0x0a, 0x07, 0x53, 0x75, 0x62,
-     0x31, 0x5f, 0x56, 0x31, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31,
-     0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
-     0x73, 0x75, 0x62, 0x31, 0x49, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
-     0x75, 0x62, 0x31, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02,
-     0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x31, 0x53, 0x74,
-     0x72, 0x69, 0x6e, 0x67, 0x22, 0x1c, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d,
-     0x7a, 0x5f, 0x56, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10,
-     0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x22, 0xa4,
-     0x07, 0x0a, 0x11, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69,
-     0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x12, 0x19, 0x0a, 0x08,
-     0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01,
-     0x28, 0x05, 0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x12,
-     0x47, 0x0a, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x18, 0x02, 0x20, 0x03,
-     0x28, 0x0e, 0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
-     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-     0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69,
-     0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x45, 0x6e, 0x75,
-     0x6d, 0x7a, 0x5f, 0x56, 0x32, 0x52, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a,
-     0x12, 0x1f, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x72,
-     0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72,
-     0x6f, 0x6f, 0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a,
-     0x0a, 0x72, 0x65, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18,
-     0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x70, 0x53, 0x74,
-     0x72, 0x69, 0x6e, 0x67, 0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x31,
-     0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f,
-     0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
-     0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56,
-     0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32,
-     0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x32, 0x52, 0x04, 0x73, 0x75,
-     0x62, 0x31, 0x12, 0x4b, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x72,
-     0x65, 0x70, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70,
-     0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73,
-     0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73,
-     0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f,
-     0x56, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x32, 0x52, 0x07,
-     0x73, 0x75, 0x62, 0x31, 0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73,
-     0x75, 0x62, 0x31, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x07, 0x20, 0x01,
-     0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
-     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
-     0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69,
-     0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53, 0x75, 0x62,
-     0x31, 0x5f, 0x56, 0x32, 0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75,
-     0x62, 0x31, 0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x6f,
-     0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x0a, 0x20,
-     0x01, 0x28, 0x05, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74,
-     0x56, 0x32, 0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x32, 0x18, 0x0b,
+     0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x31, 0x52, 0x07, 0x73, 0x75, 0x62,
+     0x31, 0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x31,
+     0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32,
+     0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e,
+     0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e,
+     0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69,
+     0x6e, 0x67, 0x5f, 0x56, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f, 0x56,
+     0x31, 0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75, 0x62, 0x31, 0x4c,
+     0x61, 0x7a, 0x79, 0x1a, 0x45, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x31, 0x5f,
+     0x56, 0x31, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x69,
+     0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75,
+     0x62, 0x31, 0x49, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62,
+     0x31, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
+     0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x31, 0x53, 0x74, 0x72, 0x69,
+     0x6e, 0x67, 0x22, 0x1c, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x7a, 0x5f,
+     0x56, 0x31, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12,
+     0x07, 0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x22, 0xa4, 0x07, 0x0a,
+     0x11, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+     0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x6f,
+     0x6f, 0x74, 0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05,
+     0x52, 0x07, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x12, 0x47, 0x0a,
+     0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e,
+     0x32, 0x31, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f,
+     0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
+     0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
+     0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x45, 0x6e, 0x75, 0x6d, 0x7a,
+     0x5f, 0x56, 0x32, 0x52, 0x05, 0x65, 0x6e, 0x75, 0x6d, 0x7a, 0x12, 0x1f,
+     0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+     0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x6f, 0x6f,
+     0x74, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x72,
+     0x65, 0x70, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20,
+     0x03, 0x28, 0x09, 0x52, 0x09, 0x72, 0x65, 0x70, 0x53, 0x74, 0x72, 0x69,
+     0x6e, 0x67, 0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x31, 0x18, 0x05,
      0x20, 0x01, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
      0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72,
      0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72,
      0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53,
-     0x75, 0x62, 0x32, 0x5f, 0x56, 0x32, 0x52, 0x04, 0x73, 0x75, 0x62, 0x32,
-     0x12, 0x4b, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x32, 0x5f, 0x72, 0x65, 0x70,
-     0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f,
+     0x75, 0x62, 0x31, 0x5f, 0x56, 0x32, 0x52, 0x04, 0x73, 0x75, 0x62, 0x31,
+     0x12, 0x4b, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x72, 0x65, 0x70,
+     0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f,
      0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e,
      0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56,
      0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32,
-     0x2e, 0x53, 0x75, 0x62, 0x32, 0x5f, 0x56, 0x32, 0x52, 0x07, 0x73, 0x75,
-     0x62, 0x32, 0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73, 0x75, 0x62,
-     0x32, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b,
+     0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f, 0x56, 0x32, 0x52, 0x07, 0x73, 0x75,
+     0x62, 0x31, 0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73, 0x75, 0x62,
+     0x31, 0x5f, 0x6c, 0x61, 0x7a, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b,
      0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f,
      0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73,
      0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e,
-     0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x32, 0x5f,
-     0x56, 0x32, 0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75, 0x62, 0x32,
-     0x4c, 0x61, 0x7a, 0x79, 0x1a, 0x8b, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x62,
-     0x31, 0x5f, 0x56, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31,
-     0x5f, 0x69, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07,
-     0x73, 0x75, 0x62, 0x31, 0x49, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73,
-     0x75, 0x62, 0x31, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02,
-     0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x31, 0x53, 0x74,
-     0x72, 0x69, 0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x31,
-     0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28,
-     0x05, 0x52, 0x09, 0x73, 0x75, 0x62, 0x31, 0x49, 0x6e, 0x74, 0x56, 0x32,
-     0x12, 0x24, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x73, 0x74, 0x72,
-     0x69, 0x6e, 0x67, 0x5f, 0x76, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09,
-     0x52, 0x0c, 0x73, 0x75, 0x62, 0x31, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67,
-     0x56, 0x32, 0x1a, 0x45, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x32, 0x5f, 0x56,
-     0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x32, 0x5f, 0x69, 0x6e,
-     0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62,
-     0x32, 0x49, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x32,
-     0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28,
-     0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x32, 0x53, 0x74, 0x72, 0x69, 0x6e,
-     0x67, 0x22, 0x2a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x7a, 0x5f, 0x56,
-     0x32, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07,
-     0x0a, 0x03, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x54,
-     0x48, 0x52, 0x45, 0x45, 0x5f, 0x56, 0x32, 0x10, 0x03, 0x2a, 0x25, 0x0a,
-     0x09, 0x53, 0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x09,
-     0x0a, 0x05, 0x54, 0x4f, 0x5f, 0x42, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a,
-     0x09, 0x4e, 0x4f, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x45, 0x10, 0x00,
-     0x2a, 0x3e, 0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x6e,
-     0x75, 0x6d, 0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49,
-     0x56, 0x45, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x55, 0x54,
-     0x52, 0x41, 0x4c, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47,
-     0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
-     0xff, 0xff, 0xff, 0x01, 0x2a, 0x1f, 0x0a, 0x07, 0x42, 0x69, 0x67, 0x45,
-     0x6e, 0x75, 0x6d, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x45, 0x47, 0x49, 0x4e,
-     0x10, 0x0a, 0x12, 0x09, 0x0a, 0x03, 0x45, 0x4e, 0x44, 0x10, 0x94, 0x91,
-     0x06}};
+     0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x31, 0x5f,
+     0x56, 0x32, 0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75, 0x62, 0x31,
+     0x4c, 0x61, 0x7a, 0x79, 0x12, 0x1e, 0x0a, 0x0b, 0x72, 0x6f, 0x6f, 0x74,
+     0x5f, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x0a, 0x20, 0x01, 0x28,
+     0x05, 0x52, 0x09, 0x72, 0x6f, 0x6f, 0x74, 0x49, 0x6e, 0x74, 0x56, 0x32,
+     0x12, 0x44, 0x0a, 0x04, 0x73, 0x75, 0x62, 0x32, 0x18, 0x0b, 0x20, 0x01,
+     0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65,
+     0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
+     0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69,
+     0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53, 0x75, 0x62,
+     0x32, 0x5f, 0x56, 0x32, 0x52, 0x04, 0x73, 0x75, 0x62, 0x32, 0x12, 0x4b,
+     0x0a, 0x08, 0x73, 0x75, 0x62, 0x32, 0x5f, 0x72, 0x65, 0x70, 0x18, 0x0c,
+     0x20, 0x03, 0x28, 0x0b, 0x32, 0x30, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
+     0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74, 0x65, 0x73, 0x74, 0x2e, 0x70, 0x72,
+     0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x56, 0x65, 0x72,
+     0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e, 0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53,
+     0x75, 0x62, 0x32, 0x5f, 0x56, 0x32, 0x52, 0x07, 0x73, 0x75, 0x62, 0x32,
+     0x52, 0x65, 0x70, 0x12, 0x51, 0x0a, 0x09, 0x73, 0x75, 0x62, 0x32, 0x5f,
+     0x6c, 0x61, 0x7a, 0x79, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x30,
+     0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x7a, 0x65, 0x72, 0x6f, 0x2e, 0x74,
+     0x65, 0x73, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x54,
+     0x65, 0x73, 0x74, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x69, 0x6e,
+     0x67, 0x5f, 0x56, 0x32, 0x2e, 0x53, 0x75, 0x62, 0x32, 0x5f, 0x56, 0x32,
+     0x42, 0x02, 0x28, 0x01, 0x52, 0x08, 0x73, 0x75, 0x62, 0x32, 0x4c, 0x61,
+     0x7a, 0x79, 0x1a, 0x8b, 0x01, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x31, 0x5f,
+     0x56, 0x32, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x69,
+     0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75,
+     0x62, 0x31, 0x49, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62,
+     0x31, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01,
+     0x28, 0x09, 0x52, 0x0a, 0x73, 0x75, 0x62, 0x31, 0x53, 0x74, 0x72, 0x69,
+     0x6e, 0x67, 0x12, 0x1e, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x69,
+     0x6e, 0x74, 0x5f, 0x76, 0x32, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52,
+     0x09, 0x73, 0x75, 0x62, 0x31, 0x49, 0x6e, 0x74, 0x56, 0x32, 0x12, 0x24,
+     0x0a, 0x0e, 0x73, 0x75, 0x62, 0x31, 0x5f, 0x73, 0x74, 0x72, 0x69, 0x6e,
+     0x67, 0x5f, 0x76, 0x32, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c,
+     0x73, 0x75, 0x62, 0x31, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x32,
+     0x1a, 0x45, 0x0a, 0x07, 0x53, 0x75, 0x62, 0x32, 0x5f, 0x56, 0x32, 0x12,
+     0x19, 0x0a, 0x08, 0x73, 0x75, 0x62, 0x32, 0x5f, 0x69, 0x6e, 0x74, 0x18,
+     0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x73, 0x75, 0x62, 0x32, 0x49,
+     0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x75, 0x62, 0x32, 0x5f, 0x73,
+     0x74, 0x72, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52,
+     0x0a, 0x73, 0x75, 0x62, 0x32, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x22,
+     0x2a, 0x0a, 0x08, 0x45, 0x6e, 0x75, 0x6d, 0x7a, 0x5f, 0x56, 0x32, 0x12,
+     0x07, 0x0a, 0x03, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03,
+     0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x54, 0x48, 0x52,
+     0x45, 0x45, 0x5f, 0x56, 0x32, 0x10, 0x03, 0x2a, 0x25, 0x0a, 0x09, 0x53,
+     0x6d, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x75, 0x6d, 0x12, 0x09, 0x0a, 0x05,
+     0x54, 0x4f, 0x5f, 0x42, 0x45, 0x10, 0x01, 0x12, 0x0d, 0x0a, 0x09, 0x4e,
+     0x4f, 0x54, 0x5f, 0x54, 0x4f, 0x5f, 0x42, 0x45, 0x10, 0x00, 0x2a, 0x3e,
+     0x0a, 0x0a, 0x53, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x45, 0x6e, 0x75, 0x6d,
+     0x12, 0x0c, 0x0a, 0x08, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x49, 0x56, 0x45,
+     0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x45, 0x55, 0x54, 0x52, 0x41,
+     0x4c, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x08, 0x4e, 0x45, 0x47, 0x41, 0x54,
+     0x49, 0x56, 0x45, 0x10, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
+     0xff, 0x01, 0x2a, 0x1f, 0x0a, 0x07, 0x42, 0x69, 0x67, 0x45, 0x6e, 0x75,
+     0x6d, 0x12, 0x09, 0x0a, 0x05, 0x42, 0x45, 0x47, 0x49, 0x4e, 0x10, 0x0a,
+     0x12, 0x09, 0x0a, 0x03, 0x45, 0x4e, 0x44, 0x10, 0x94, 0x91, 0x06}};
 
 }  // namespace perfetto
 
diff --git a/src/protozero/test/example_proto/test_messages.proto b/src/protozero/test/example_proto/test_messages.proto
index f8f2d31..8e710b4 100644
--- a/src/protozero/test/example_proto/test_messages.proto
+++ b/src/protozero/test/example_proto/test_messages.proto
@@ -59,6 +59,7 @@
   optional float field_float = 11;
   optional double field_double = 12;
   optional bool field_bool = 13;
+  repeated EveryField field_nested = 14;
 
   optional SmallEnum small_enum = 51;
   optional SignedEnum signed_enum = 52;
diff --git a/src/protozero/test/protozero_benchmark.cc b/src/protozero/test/protozero_benchmark.cc
new file mode 100644
index 0000000..31b8349
--- /dev/null
+++ b/src/protozero/test/protozero_benchmark.cc
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+// See /docs/design-docs/protozero.md for rationale and results.
+
+#include <memory>
+#include <vector>
+
+#include <unistd.h>
+
+#include <benchmark/benchmark.h>
+
+#include "perfetto/base/compiler.h"
+#include "perfetto/protozero/static_buffer.h"
+
+// Autogenerated headers in out/*/gen/
+#include "src/protozero/test/example_proto/library.pbzero.h"
+#include "src/protozero/test/example_proto/test_messages.pb.h"
+#include "src/protozero/test/example_proto/test_messages.pbzero.h"
+
+// Generated by the protozero plugin.
+namespace pbzero = protozero::test::protos::pbzero;
+
+// Generated by the official protobuf compiler.
+namespace pblite = protozero::test::protos;
+
+namespace {
+
+// This needs to be > the max size written by each iteration.
+constexpr size_t kBufPerIteration = 512;
+
+// Write cyclically on a 64 MB buffer set to simulate a realistic tracing
+// scenario.
+constexpr size_t kTotalWorkingSetSize = 64 * 1024 * 1024;
+alignas(uint64_t) char g_out_buffer[kTotalWorkingSetSize];
+
+char* g_cur = g_out_buffer;
+
+uint64_t g_fake_input_simple[] = {0x12345678,
+                                  0x90ABCDEF,
+                                  0x11111111,
+                                  0xFFFFFFFF,
+                                  0x6666666666666666ULL,
+                                  0x6666666666666666ULL,
+                                  0x6666666666666666ULL,
+                                  0x0066666666666666ULL};
+
+// Speed-of-light serializer. Aa very simple C++ class that just appends data
+// into a linear buffer making all sorts of favourable assumptions. It does not
+// use any binary-stable encoding, it does not perform bound checking,
+// all writes are 64-bit aligned, it doesn't deal with any thread-safety.
+// The speed-of-light serializer serves as a reference for how fast a serializer
+// could be if argument marshalling and bound checking were zero cost.
+struct SOLMsg {
+  template <typename T>
+  void Append(T x) {
+    // The reinterpret_cast is to give favorable alignment guarantees.
+    memcpy(reinterpret_cast<T*>(ptr_), &x, sizeof(x));
+    ptr_ += sizeof(x);
+  }
+
+  void set_field_int32(int32_t x) { Append(x); }
+  void set_field_uint32(uint32_t x) { Append(x); }
+  void set_field_int64(int64_t x) { Append(x); }
+  void set_field_uint64(uint64_t x) { Append(x); }
+  void set_field_string(const char* str) { ptr_ = strcpy(ptr_, str); }
+
+  SOLMsg* add_field_nested() { return new (this + 1) SOLMsg(); }
+
+  char storage_[sizeof(g_fake_input_simple)];
+  char* ptr_ = &storage_[0];
+};
+
+template <typename T>
+PERFETTO_ALWAYS_INLINE void FillMessage_Simple(T* msg) {
+  benchmark::DoNotOptimize(g_fake_input_simple);
+  msg->set_field_int32(static_cast<int32_t>(g_fake_input_simple[0]));
+  msg->set_field_uint32(static_cast<uint32_t>(g_fake_input_simple[1]));
+  msg->set_field_int64(static_cast<int64_t>(g_fake_input_simple[2]));
+  msg->set_field_uint64(static_cast<uint64_t>(g_fake_input_simple[3]));
+  msg->set_field_string(reinterpret_cast<const char*>(&g_fake_input_simple[4]));
+}
+
+template <typename T>
+PERFETTO_ALWAYS_INLINE void FillMessage_Nested(T* msg, int depth = 0) {
+  benchmark::DoNotOptimize(g_fake_input_simple);
+  FillMessage_Simple(msg);
+  if (depth < 3) {
+    auto* child = msg->add_field_nested();
+    FillMessage_Nested(child, depth + 1);
+  }
+}
+
+PERFETTO_ALWAYS_INLINE void Clobber(benchmark::State& state) {
+  uint64_t* buf = reinterpret_cast<uint64_t*>(g_cur);
+
+  // Read-back the data written to have a realistic evaluation of the
+  // speed-of-light scenario. This is to deal with architecture of modern CPUs.
+  // If we write a bunch of memory bytes, never read-back from them, and then
+  // just over-write them, the CPU can just throw away the whole stream of
+  // instructions that produced them, if that's still in flight and tracked in
+  // the out-of-order units.
+  // The buf[i-1] ^= buf forces the CPU to consume the result of the writes.
+  buf[0] = reinterpret_cast<uint64_t>(&state);
+  for (size_t i = 1; i < kBufPerIteration / sizeof(uint64_t); i++)
+    buf[i] ^= buf[i - 1];
+  if (buf[kBufPerIteration - 1] == 42)
+    PERFETTO_CHECK(false);
+  benchmark::DoNotOptimize(buf);
+
+  constexpr size_t kWrap = kTotalWorkingSetSize / kBufPerIteration;
+  g_cur = &g_out_buffer[(state.iterations() % kWrap) * kBufPerIteration];
+  benchmark::ClobberMemory();
+}
+
+}  // namespace
+
+static void BM_Protozero_Simple_Libprotobuf(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    {
+      // The nested block is to account for RAII finalizers.
+      pblite::EveryField msg;
+      FillMessage_Simple(&msg);
+      msg.SerializeToArray(g_cur, kBufPerIteration);
+    }
+    Clobber(state);
+  }
+}
+
+static void BM_Protozero_Simple_Protozero(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    {
+      protozero::StaticBuffered<pbzero::EveryField> msg(g_cur,
+                                                        kBufPerIteration);
+      FillMessage_Simple(msg.get());
+    }
+    Clobber(state);
+  }
+}
+
+static void BM_Protozero_Simple_SpeedOfLight(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    SOLMsg* msg = new (g_cur) SOLMsg();
+    FillMessage_Simple(msg);
+    Clobber(state);
+  }
+}
+
+static void BM_Protozero_Nested_Libprotobuf(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    {
+      pblite::EveryField msg;
+      FillMessage_Nested(&msg);
+      msg.SerializeToArray(g_cur, kBufPerIteration);
+    }
+    Clobber(state);
+  }
+}
+
+static void BM_Protozero_Nested_Protozero(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    {
+      protozero::StaticBuffered<pbzero::EveryField> msg(g_cur,
+                                                        kBufPerIteration);
+      FillMessage_Nested(msg.get());
+    }
+    Clobber(state);
+  }
+}
+
+static void BM_Protozero_Nested_SpeedOfLight(benchmark::State& state) {
+  while (state.KeepRunning()) {
+    SOLMsg* msg = new (g_cur) SOLMsg();
+    FillMessage_Nested(msg);
+    Clobber(state);
+  }
+}
+
+BENCHMARK(BM_Protozero_Simple_Libprotobuf);
+BENCHMARK(BM_Protozero_Simple_Protozero);
+BENCHMARK(BM_Protozero_Simple_SpeedOfLight);
+
+BENCHMARK(BM_Protozero_Nested_Libprotobuf);
+BENCHMARK(BM_Protozero_Nested_Protozero);
+BENCHMARK(BM_Protozero_Nested_SpeedOfLight);