diff options
author | Jie Luo <jieluo@google.com> | 2015-05-29 12:48:25 -0700 |
---|---|---|
committer | Jie Luo <jieluo@google.com> | 2015-05-29 13:29:30 -0700 |
commit | f7b417ddfe63cb4d39775e5fd4560894cc547d65 (patch) | |
tree | 2ffb9956310e6aeb46078e7ad58db94d517f1d86 | |
parent | 55df12194f5f0348c3ddf0636c63ba2b3978fab5 (diff) |
Add oneof support for C#
39 files changed, 4720 insertions, 2163 deletions
diff --git a/csharp/src/ProtocolBuffers.Test/AbstractMessageTest.cs b/csharp/src/ProtocolBuffers.Test/AbstractMessageTest.cs index 595fb3ae..8118808b 100644 --- a/csharp/src/ProtocolBuffers.Test/AbstractMessageTest.cs +++ b/csharp/src/ProtocolBuffers.Test/AbstractMessageTest.cs @@ -374,6 +374,16 @@ namespace Google.ProtocolBuffers return wrappedMessage.HasField(field);
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ return wrappedMessage.HasOneof(oneof);
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ return wrappedMessage.OneofFieldDescriptor(oneof);
+ }
+
public override object this[FieldDescriptor field]
{
get { return wrappedMessage[field]; }
@@ -461,6 +471,16 @@ namespace Google.ProtocolBuffers return wrappedBuilder.HasField(field);
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ return wrappedBuilder.HasOneof(oneof);
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ return wrappedBuilder.OneofFieldDescriptor(oneof);
+ }
+
public override UnknownFieldSet UnknownFields
{
get { return wrappedBuilder.UnknownFields; }
@@ -493,6 +513,12 @@ namespace Google.ProtocolBuffers return this;
}
+ public override Builder ClearOneof(OneofDescriptor oneof)
+ {
+ wrappedBuilder.WeakClearOneof(oneof);
+ return this;
+ }
+
public override Builder AddRepeatedField(FieldDescriptor field, object value)
{
wrappedBuilder.WeakAddRepeatedField(field, value);
diff --git a/csharp/src/ProtocolBuffers.Test/DynamicMessageTest.cs b/csharp/src/ProtocolBuffers.Test/DynamicMessageTest.cs index d38d66d7..f60db213 100644 --- a/csharp/src/ProtocolBuffers.Test/DynamicMessageTest.cs +++ b/csharp/src/ProtocolBuffers.Test/DynamicMessageTest.cs @@ -36,6 +36,7 @@ using System;
using System.Collections.Generic;
+using Google.ProtocolBuffers.Descriptors;
using Google.ProtocolBuffers.TestProtos;
using NUnit.Framework;
@@ -200,6 +201,21 @@ namespace Google.ProtocolBuffers DynamicMessage copy = DynamicMessage.CreateBuilder(message).Build();
reflectionTester.AssertAllFieldsSetViaReflection(copy);
+
+ // Oneof
+ FieldDescriptor bytesField =
+ TestAllTypes.Descriptor.FindFieldByName("oneof_bytes");
+ FieldDescriptor uint32Field =
+ TestAllTypes.Descriptor.FindFieldByName("oneof_uint32");
+ Assert.True(copy.HasField(bytesField));
+ Assert.False(copy.HasField(uint32Field));
+
+ DynamicMessage.Builder dynamicBuilder = DynamicMessage.CreateBuilder(message);
+ dynamicBuilder[uint32Field] = 123U;
+ DynamicMessage copy2 = dynamicBuilder.Build();
+ Assert.IsFalse(copy2.HasField(bytesField));
+ Assert.IsTrue(copy2.HasField(uint32Field));
+ Assert.AreEqual(123U, copy2[uint32Field]);
}
[Test]
@@ -223,5 +239,38 @@ namespace Google.ProtocolBuffers Assert.AreEqual(1, values.Count);
Assert.AreEqual(unknownFieldVal, values[0]);
}
+
+ [Test]
+ public void DynamicOneofMessage()
+ {
+ DynamicMessage.Builder builder =
+ DynamicMessage.CreateBuilder(TestAllTypes.Descriptor);
+ OneofDescriptor oneof = TestAllTypes.Descriptor.Oneofs[0];
+ Assert.False(builder.HasOneof(oneof));
+ Assert.AreSame(null, builder.OneofFieldDescriptor(oneof));
+
+ reflectionTester.SetAllFieldsViaReflection(builder);
+ Assert.True(builder.HasOneof(oneof));
+ FieldDescriptor field = oneof.Field(3);
+ Assert.AreSame(field, builder.OneofFieldDescriptor(oneof));
+ Assert.AreEqual(TestUtil.ToBytes("604"), builder[field]);
+
+ DynamicMessage message = builder.BuildPartial();
+ Assert.IsTrue(message.HasOneof(oneof));
+
+ DynamicMessage.Builder mergedBuilder =
+ DynamicMessage.CreateBuilder(TestAllTypes.Descriptor);
+ FieldDescriptor mergedField = oneof.Field(0);
+ mergedBuilder[mergedField] = 123U;
+ Assert.IsTrue(mergedBuilder.HasField(mergedField));
+ mergedBuilder.MergeFrom(message);
+ Assert.IsTrue(mergedBuilder.HasField(field));
+ Assert.IsFalse(mergedBuilder.HasField(mergedField));
+
+ mergedBuilder.ClearOneof(oneof);
+ Assert.AreSame(null, mergedBuilder.OneofFieldDescriptor(oneof));
+ message = mergedBuilder.Build();
+ Assert.AreSame(null, message.OneofFieldDescriptor(oneof));
+ }
}
}
\ No newline at end of file diff --git a/csharp/src/ProtocolBuffers.Test/FieldPresenceTest.cs b/csharp/src/ProtocolBuffers.Test/FieldPresenceTest.cs index 8f59334e..66214221 100644 --- a/csharp/src/ProtocolBuffers.Test/FieldPresenceTest.cs +++ b/csharp/src/ProtocolBuffers.Test/FieldPresenceTest.cs @@ -59,16 +59,25 @@ namespace Google.ProtocolBuffers CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalBytes");
CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalNestedEnum");
- proto2Type = typeof(Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder);
- proto3Type = typeof(TestAllTypes.Builder);
- CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalInt32");
- CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalString");
- CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalBytes");
- CheckHasMethodRemoved(proto2Type, proto3Type, "OptionalNestedEnum");
+ Type proto2BuilderType = typeof(Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder);
+ Type proto3BuilderType = typeof(TestAllTypes.Builder);
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OptionalInt32");
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OptionalString");
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OptionalBytes");
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OptionalNestedEnum");
// message fields still have the HasFoo method generated
Assert.IsFalse(TestAllTypes.CreateBuilder().Build().HasOptionalNestedMessage);
Assert.IsFalse(TestAllTypes.CreateBuilder().HasOptionalNestedMessage);
+
+ // oneof fields don't have the HasFoo method (even for message types)
+ CheckHasMethodRemoved(proto2Type, proto3Type, "OneofUint32");
+ CheckHasMethodRemoved(proto2Type, proto3Type, "OneofString");
+ CheckHasMethodRemoved(proto2Type, proto3Type, "OneofNestedMessage");
+
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OneofUint32");
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OneofString");
+ CheckHasMethodRemoved(proto2BuilderType, proto3BuilderType, "OneofNestedMessage");
}
[Test]
@@ -114,6 +123,7 @@ namespace Google.ProtocolBuffers FieldDescriptor optionalStringField = descriptor.FindFieldByName("optional_string");
FieldDescriptor optionalBytesField = descriptor.FindFieldByName("optional_bytes");
FieldDescriptor optionalNestedEnumField = descriptor.FindFieldByName("optional_nested_enum");
+ FieldDescriptor oneofUint32Field = descriptor.FindFieldByName("oneof_uint32");
TestAllTypes message = TestAllTypes.CreateBuilder().Build();
Assert.IsFalse(message.HasField(optionalInt32Field));
@@ -121,20 +131,23 @@ namespace Google.ProtocolBuffers Assert.IsFalse(message.HasField(optionalBytesField));
Assert.IsFalse(message.HasField(optionalNestedEnumField));
- // Set to default value is seen as not present
+ // Set to default value is seen as not present for optional fields.
+ // Set to default value is seen as present for oneof fields.
message = TestAllTypes.CreateBuilder()
.SetOptionalInt32(0)
.SetOptionalString("")
.SetOptionalBytes(ByteString.Empty)
.SetOptionalNestedEnum(TestAllTypes.Types.NestedEnum.FOO)
+ .SetOneofUint32(0U)
.Build();
Assert.IsFalse(message.HasField(optionalInt32Field));
Assert.IsFalse(message.HasField(optionalStringField));
Assert.IsFalse(message.HasField(optionalBytesField));
Assert.IsFalse(message.HasField(optionalNestedEnumField));
- Assert.AreEqual(0, message.AllFields.Count);
+ Assert.IsTrue(message.HasField(oneofUint32Field));
+ Assert.AreEqual(1, message.AllFields.Count);
- // Set t0 non-defalut value is seen as present
+ // Set to non-defalut value is seen as present
message = TestAllTypes.CreateBuilder()
.SetOptionalInt32(1)
.SetOptionalString("x")
@@ -169,6 +182,7 @@ namespace Google.ProtocolBuffers builder.SetOptionalInt32(1234);
builder.SetOptionalString("hello");
builder.SetOptionalNestedMessage(TestAllTypes.Types.NestedMessage.DefaultInstance);
+ builder.SetOneofUint32(0U);
ByteString data = builder.Build().ToByteString();
TestAllTypes message = TestAllTypes.ParseFrom(data);
@@ -178,6 +192,7 @@ namespace Google.ProtocolBuffers Assert.AreEqual(TestAllTypes.Types.NestedEnum.FOO, message.OptionalNestedEnum);
Assert.IsTrue(message.HasOptionalNestedMessage);
Assert.AreEqual(0, message.OptionalNestedMessage.Bb);
+ Assert.AreEqual(TestAllTypes.OneofFieldOneofCase.OneofUint32, message.OneofFieldCase);
}
}
}
diff --git a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs index 984c36e6..4f669449 100644 --- a/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs +++ b/csharp/src/ProtocolBuffers.Test/GeneratedMessageTest.cs @@ -36,6 +36,7 @@ using System;
using System.Collections.Generic;
+using Google.ProtocolBuffers.Descriptors;
using Google.ProtocolBuffers.Collections;
using Google.ProtocolBuffers.TestProtos;
using NUnit.Framework;
@@ -292,6 +293,31 @@ namespace Google.ProtocolBuffers });
}
+ [Test]
+ public void ReflectionGetOneof()
+ {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+ reflectionTester.SetAllFieldsViaReflection(builder);
+ Descriptors.OneofDescriptor oneof = TestAllTypes.Descriptor.Oneofs[0];
+ Descriptors.FieldDescriptor field = TestAllTypes.Descriptor.FindFieldByName("oneof_bytes");
+ Assert.AreSame(field, builder.OneofFieldDescriptor(oneof));
+ }
+
+ [Test]
+ public void ReflectionClearOneof()
+ {
+ TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
+ reflectionTester.SetAllFieldsViaReflection(builder);
+ OneofDescriptor oneof = TestAllTypes.Descriptor.Oneofs[0];
+ FieldDescriptor field = TestAllTypes.Descriptor.FindFieldByName("oneof_bytes");
+
+ Assert.IsTrue(builder.HasOneof(oneof));
+ Assert.IsTrue(builder.HasField(field));
+ builder.ClearOneof(oneof);
+ Assert.IsFalse(builder.HasOneof(oneof));
+ Assert.IsFalse(builder.HasField(field));
+ }
+
// =================================================================
// Extensions.
@@ -510,5 +536,241 @@ namespace Google.ProtocolBuffers TestPackedTypes empty = new TestPackedTypes.Builder().Build();
Assert.AreEqual(0, empty.SerializedSize);
}
+
+ // oneof tests
+ [Test]
+ public void TestOneofEnumCase()
+ {
+ TestOneof2 message = TestOneof2.CreateBuilder()
+ .SetFooInt(123).SetFooString("foo").SetFooCord("bar").Build();
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+ }
+
+ [Test]
+ public void TestClearOneof()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder().SetFooInt(123);
+ Assert.AreEqual(TestOneof2.FooOneofCase.FooInt, builder.FooCase);
+ builder.ClearFoo();
+ Assert.AreEqual(TestOneof2.FooOneofCase.None, builder.FooCase);
+ }
+
+ [Test]
+ public void TestSetOneofClearsOthers()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message =
+ builder.SetFooInt(123).SetFooString("foo").Build();
+ Assert.IsTrue(message.HasFooString);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooCord("bar").Build();
+ Assert.IsTrue(message.HasFooCord);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooStringPiece("baz").Build();
+ Assert.IsTrue(message.HasFooStringPiece);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooBytes(TestUtil.ToBytes("qux")).Build();
+ Assert.IsTrue(message.HasFooBytes);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooEnum(TestOneof2.Types.NestedEnum.FOO).Build();
+ Assert.IsTrue(message.HasFooEnum);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooMessage(
+ TestOneof2.Types.NestedMessage.CreateBuilder().SetQuxInt(234).Build()).Build();
+ Assert.IsTrue(message.HasFooMessage);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+
+ message = builder.SetFooInt(123).Build();
+ Assert.IsTrue(message.HasFooInt);
+ TestUtil.AssertAtMostOneFieldSetOneof(message);
+ }
+
+ [Test]
+ public void TestOneofTypes_Primitive()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ Assert.AreEqual(builder.FooInt, 0);
+ Assert.IsFalse(builder.HasFooInt);
+ Assert.IsTrue(builder.SetFooInt(123).HasFooInt);
+ Assert.AreEqual(builder.FooInt, 123);
+ TestOneof2 message = builder.BuildPartial();
+ Assert.IsTrue(message.HasFooInt);
+ Assert.AreEqual(message.FooInt, 123);
+
+ Assert.IsFalse(builder.ClearFooInt().HasFooInt);
+ TestOneof2 message2 = builder.Build();
+ Assert.IsFalse(message2.HasFooInt);
+ Assert.AreEqual(message2.FooInt, 0);
+ }
+
+ [Test]
+ public void TestOneofTypes_Enum()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ Assert.AreEqual(builder.FooEnum, TestOneof2.Types.NestedEnum.FOO);
+ Assert.IsTrue(builder.SetFooEnum(TestOneof2.Types.NestedEnum.BAR).HasFooEnum);
+ Assert.AreEqual(builder.FooEnum, TestOneof2.Types.NestedEnum.BAR);
+ TestOneof2 message = builder.BuildPartial();
+ Assert.IsTrue(message.HasFooEnum);
+ Assert.AreEqual(message.FooEnum, TestOneof2.Types.NestedEnum.BAR);
+
+ Assert.IsFalse(builder.ClearFooEnum().HasFooEnum);
+ TestOneof2 message2 = builder.Build();
+ Assert.IsFalse(message2.HasFooEnum);
+ Assert.AreEqual(message2.FooEnum, TestOneof2.Types.NestedEnum.FOO);
+ }
+
+ [Test]
+ public void TestOneofTypes_String()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ Assert.AreEqual(builder.FooString, "");
+ Assert.IsTrue(builder.SetFooString("foo").HasFooString);
+ Assert.AreEqual(builder.FooString, "foo");
+ TestOneof2 message = builder.BuildPartial();
+ Assert.IsTrue(message.HasFooString);
+ Assert.AreEqual(message.FooString, "foo");
+
+ Assert.IsFalse(builder.ClearFooString().HasFooString);
+ TestOneof2 message2 = builder.Build();
+ Assert.IsFalse(message2.HasFooString);
+ Assert.AreEqual(message2.FooString, "");
+
+ builder.SetFooInt(123);
+ Assert.AreEqual(builder.FooString, "");
+ Assert.AreEqual(builder.FooInt, 123);
+ message = builder.Build();
+ Assert.AreEqual(message.FooString, "");
+ Assert.AreEqual(message.FooInt, 123);
+ }
+
+ [Test]
+ public void TestOneofTypes_Message()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ Assert.AreEqual(builder.FooMessage.QuxInt, 0);
+ builder.SetFooMessage(TestOneof2.Types.NestedMessage.CreateBuilder().SetQuxInt(234).Build());
+ Assert.IsTrue(builder.HasFooMessage);
+ Assert.AreEqual(builder.FooMessage.QuxInt, 234);
+ TestOneof2 message = builder.BuildPartial();
+ Assert.IsTrue(message.HasFooMessage);
+ Assert.AreEqual(message.FooMessage.QuxInt, 234);
+
+ Assert.IsFalse(builder.ClearFooMessage().HasFooMessage);
+ message = builder.Build();
+ Assert.IsFalse(message.HasFooMessage);
+ Assert.AreEqual(message.FooMessage.QuxInt, 0);
+
+ builder = TestOneof2.CreateBuilder();
+ Assert.IsFalse(builder.HasFooMessage);
+ builder.SetFooMessage(TestOneof2.Types.NestedMessage.CreateBuilder().SetQuxInt(123));
+ Assert.IsTrue(builder.HasFooMessage);
+ Assert.AreEqual(builder.FooMessage.QuxInt, 123);
+ message = builder.Build();
+ Assert.IsTrue(message.HasFooMessage);
+ Assert.AreEqual(message.FooMessage.QuxInt, 123);
+ }
+
+ [Test]
+ public void TestOneofMerge_Primitive()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooInt(123).Build();
+ TestOneof2 message2 = TestOneof2.CreateBuilder().MergeFrom(message).Build();
+ Assert.IsTrue(message2.HasFooInt);
+ Assert.AreEqual(message2.FooInt, 123);
+ }
+
+ [Test]
+ public void TestOneofMerge_String()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooString("foo").Build();
+ TestOneof2 message2 = TestOneof2.CreateBuilder().MergeFrom(message).Build();
+ Assert.IsTrue(message2.HasFooString);
+ Assert.AreEqual(message2.FooString, "foo");
+ }
+
+ [Test]
+ public void TestOneofMerge_Enum()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooEnum(TestOneof2.Types.NestedEnum.BAR).Build();
+ TestOneof2 message2 = TestOneof2.CreateBuilder().MergeFrom(message).Build();
+ Assert.IsTrue(message2.HasFooEnum);
+ Assert.AreEqual(message2.FooEnum, TestOneof2.Types.NestedEnum.BAR);
+ }
+
+ public void TestOneofMerge_message()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooMessage(
+ TestOneof2.Types.NestedMessage.CreateBuilder().SetQuxInt(234).Build()).Build();
+ TestOneof2 message2 = TestOneof2.CreateBuilder().MergeFrom(message).Build();
+ Assert.IsTrue(message2.HasFooMessage);
+ Assert.AreEqual(message2.FooMessage.QuxInt, 234);
+ }
+
+ [Test]
+ public void TestOneofMergeMixed()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooEnum(TestOneof2.Types.NestedEnum.BAR).Build();
+ TestOneof2 message2 =
+ TestOneof2.CreateBuilder().SetFooString("foo").MergeFrom(message).Build();
+ Assert.IsFalse(message2.HasFooString);
+ Assert.IsTrue(message2.HasFooEnum);
+ Assert.AreEqual(message2.FooEnum, TestOneof2.Types.NestedEnum.BAR);
+ }
+
+ [Test]
+ public void TestOneofSerialization_Primitive()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooInt(123).Build();
+ ByteString serialized = message.ToByteString();
+ TestOneof2 message2 = TestOneof2.ParseFrom(serialized);
+ Assert.IsTrue(message2.HasFooInt);
+ Assert.AreEqual(message2.FooInt, 123);
+ }
+
+ [Test]
+ public void TestOneofSerialization_String()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooString("foo").Build();
+ ByteString serialized = message.ToByteString();
+ TestOneof2 message2 = TestOneof2.ParseFrom(serialized);
+ Assert.IsTrue(message2.HasFooString);
+ Assert.AreEqual(message2.FooString, "foo");
+ }
+
+ [Test]
+ public void TestOneofSerialization_Enum()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooEnum(TestOneof2.Types.NestedEnum.BAR).Build();
+ ByteString serialized = message.ToByteString();
+ TestOneof2 message2 = TestOneof2.ParseFrom(serialized);
+ Assert.IsTrue(message2.HasFooEnum);
+ Assert.AreEqual(message2.FooEnum, TestOneof2.Types.NestedEnum.BAR);
+ }
+
+ [Test]
+ public void TestOneofSerialization_Message()
+ {
+ TestOneof2.Builder builder = TestOneof2.CreateBuilder();
+ TestOneof2 message = builder.SetFooMessage(
+ TestOneof2.Types.NestedMessage.CreateBuilder().SetQuxInt(234).Build()).Build();
+ ByteString serialized = message.ToByteString();
+ TestOneof2 message2 = TestOneof2.ParseFrom(serialized);
+ Assert.IsTrue(message2.HasFooMessage);
+ Assert.AreEqual(message2.FooMessage.QuxInt, 234);
+ }
}
}
\ No newline at end of file diff --git a/csharp/src/ProtocolBuffers.Test/ReflectionTester.cs b/csharp/src/ProtocolBuffers.Test/ReflectionTester.cs index bd1d2c65..22795b3f 100644 --- a/csharp/src/ProtocolBuffers.Test/ReflectionTester.cs +++ b/csharp/src/ProtocolBuffers.Test/ReflectionTester.cs @@ -380,6 +380,12 @@ namespace Google.ProtocolBuffers message[f("default_string_piece")] = "424";
message[f("default_cord")] = "425";
+
+ message[f("oneof_uint32")] = 601U;
+ message[f("oneof_nested_message")] =
+ CreateBuilderForField(message, f("optional_nested_message")).SetField(nestedB, 602).WeakBuild();
+ message[f("oneof_string")] = "603";
+ message[f("oneof_bytes")] = TestUtil.ToBytes("604");
}
/// <summary>
@@ -642,6 +648,20 @@ namespace Google.ProtocolBuffers Assert.AreEqual("424", message[f("default_string_piece")]);
Assert.AreEqual("425", message[f("default_cord")]);
+ if (extensionRegistry == null)
+ {
+ Assert.IsFalse(message.HasField(f("oneof_uint32")));
+ Assert.IsFalse(message.HasField(f("oneof_nested_message")));
+ Assert.IsFalse(message.HasField(f("oneof_string")));
+ } else
+ {
+ Assert.IsTrue(message.HasField(f("oneof_uint32")));
+ Assert.IsTrue(message.HasField(f("oneof_nested_message")));
+ Assert.IsTrue(message.HasField(f("oneof_string")));
+ Assert.AreEqual(601U, message[f("oneof_uint32")]);
+ Assert.AreEqual(602, ((IMessage)message[f("oneof_nested_message")])[nestedB]);
+ Assert.AreEqual("603", message[f("oneof_string")]);
+ }
}
/// <summary>
@@ -793,6 +813,15 @@ namespace Google.ProtocolBuffers Assert.AreEqual("abc", message[f("default_string_piece")]);
Assert.AreEqual("123", message[f("default_cord")]);
+
+ Assert.IsFalse(message.HasField(f("oneof_uint32")));
+ Assert.IsFalse(message.HasField(f("oneof_nested_message")));
+ Assert.IsFalse(message.HasField(f("oneof_string")));
+ Assert.IsFalse(message.HasField(f("oneof_bytes")));
+
+ Assert.AreEqual(0U, message[f("oneof_uint32")]);
+ Assert.AreEqual("", message[f("oneof_string")]);
+ Assert.AreEqual(TestUtil.ToBytes(""), message[f("oneof_bytes")]);
}
// ---------------------------------------------------------------
@@ -1001,4 +1030,4 @@ namespace Google.ProtocolBuffers Assert.AreEqual(foreignBaz, message[f("packed_enum"), 1]);
}
}
-}
\ No newline at end of file +} diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/Unittest.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/Unittest.cs index 083523c0..67898644 100644 --- a/csharp/src/ProtocolBuffers.Test/TestProtos/Unittest.cs +++ b/csharp/src/ProtocolBuffers.Test/TestProtos/Unittest.cs @@ -355,6 +355,8 @@ namespace Google.ProtocolBuffers.TestProtos { internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder> internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor; internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder> internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestReservedFields__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder> internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor; internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder> internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor; @@ -565,426 +567,429 @@ namespace Google.ProtocolBuffers.TestProtos { "ZXMYciABKAxIABobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9w", "dGlvbmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEY", "LyABKAUiOQoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQ", - "AxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCJ8ChJOZXN0ZWRU", - "ZXN0QWxsVHlwZXMSNAoFY2hpbGQYASABKAsyJS5wcm90b2J1Zl91bml0dGVz", - "dC5OZXN0ZWRUZXN0QWxsVHlwZXMSMAoHcGF5bG9hZBgCIAEoCzIfLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyI0ChRUZXN0RGVwcmVjYXRlZEZp", - "ZWxkcxIcChBkZXByZWNhdGVkX2ludDMyGAEgASgFQgIYASIbCg5Gb3JlaWdu", - "TWVzc2FnZRIJCgFjGAEgASgFIh0KEVRlc3RBbGxFeHRlbnNpb25zKggIARCA", - "gICAAiIkChdPcHRpb25hbEdyb3VwX2V4dGVuc2lvbhIJCgFhGBEgASgFIiQK", - "F1JlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uEgkKAWEYLyABKAUimAEKE1Rlc3RO", - "ZXN0ZWRFeHRlbnNpb24yOQoEdGVzdBIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGOoHIAEoCToEdGVzdDJGChduZXN0ZWRfc3RyaW5n", - "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp", - "b25zGOsHIAEoCSLVBQoMVGVzdFJlcXVpcmVkEgkKAWEYASACKAUSDgoGZHVt", - "bXkyGAIgASgFEgkKAWIYAyACKAUSDgoGZHVtbXk0GAQgASgFEg4KBmR1bW15", - "NRgFIAEoBRIOCgZkdW1teTYYBiABKAUSDgoGZHVtbXk3GAcgASgFEg4KBmR1", - "bW15OBgIIAEoBRIOCgZkdW1teTkYCSABKAUSDwoHZHVtbXkxMBgKIAEoBRIP", - "CgdkdW1teTExGAsgASgFEg8KB2R1bW15MTIYDCABKAUSDwoHZHVtbXkxMxgN", - "IAEoBRIPCgdkdW1teTE0GA4gASgFEg8KB2R1bW15MTUYDyABKAUSDwoHZHVt", - "bXkxNhgQIAEoBRIPCgdkdW1teTE3GBEgASgFEg8KB2R1bW15MTgYEiABKAUS", - "DwoHZHVtbXkxORgTIAEoBRIPCgdkdW1teTIwGBQgASgFEg8KB2R1bW15MjEY", - "FSABKAUSDwoHZHVtbXkyMhgWIAEoBRIPCgdkdW1teTIzGBcgASgFEg8KB2R1", - "bW15MjQYGCABKAUSDwoHZHVtbXkyNRgZIAEoBRIPCgdkdW1teTI2GBogASgF", - "Eg8KB2R1bW15MjcYGyABKAUSDwoHZHVtbXkyOBgcIAEoBRIPCgdkdW1teTI5", - "GB0gASgFEg8KB2R1bW15MzAYHiABKAUSDwoHZHVtbXkzMRgfIAEoBRIPCgdk", - "dW1teTMyGCAgASgFEgkKAWMYISACKAUyVgoGc2luZ2xlEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY6AcgASgLMh8ucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdFJlcXVpcmVkMlUKBW11bHRpEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY6QcgAygLMh8ucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdFJlcXVpcmVkIpoBChNUZXN0UmVxdWlyZWRGb3JlaWduEjkK", - "EG9wdGlvbmFsX21lc3NhZ2UYASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5U", - "ZXN0UmVxdWlyZWQSOQoQcmVwZWF0ZWRfbWVzc2FnZRgCIAMoCzIfLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZBINCgVkdW1teRgDIAEoBSJaChFU", - "ZXN0Rm9yZWlnbk5lc3RlZBJFCg5mb3JlaWduX25lc3RlZBgBIAEoCzItLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlIhIK", - "EFRlc3RFbXB0eU1lc3NhZ2UiKgoeVGVzdEVtcHR5TWVzc2FnZVdpdGhFeHRl", - "bnNpb25zKggIARCAgICAAiI3ChtUZXN0TXVsdGlwbGVFeHRlbnNpb25SYW5n", - "ZXMqBAgqECsqBgivIBCUISoKCICABBCAgICAAiI0ChhUZXN0UmVhbGx5TGFy", - "Z2VUYWdOdW1iZXISCQoBYRgBIAEoBRINCgJiYhj///9/IAEoBSJVChRUZXN0", - "UmVjdXJzaXZlTWVzc2FnZRIyCgFhGAEgASgLMicucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USCQoBaRgCIAEoBSJLChRUZXN0TXV0", - "dWFsUmVjdXJzaW9uQRIzCgJiYhgBIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RNdXR1YWxSZWN1cnNpb25CImIKFFRlc3RNdXR1YWxSZWN1cnNpb25C", - "EjIKAWEYASABKAsyJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVj", - "dXJzaW9uQRIWCg5vcHRpb25hbF9pbnQzMhgCIAEoBSKzAQoSVGVzdER1cEZp", - "ZWxkTnVtYmVyEgkKAWEYASABKAUSNgoDZm9vGAIgASgKMikucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdER1cEZpZWxkTnVtYmVyLkZvbxI2CgNiYXIYAyABKAoy", - "KS5wcm90b2J1Zl91bml0dGVzdC5UZXN0RHVwRmllbGROdW1iZXIuQmFyGhAK", - "A0ZvbxIJCgFhGAEgASgFGhAKA0JhchIJCgFhGAEgASgFIkwKEFRlc3RFYWdl", - "ck1lc3NhZ2USOAoLc3ViX21lc3NhZ2UYASABKAsyHy5wcm90b2J1Zl91bml0", - "dGVzdC5UZXN0QWxsVHlwZXNCAigAIksKD1Rlc3RMYXp5TWVzc2FnZRI4Cgtz", - "dWJfbWVzc2FnZRgBIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxU", - "eXBlc0ICKAEigAIKGFRlc3ROZXN0ZWRNZXNzYWdlSGFzQml0cxJaChdvcHRp", - "b25hbF9uZXN0ZWRfbWVzc2FnZRgBIAEoCzI5LnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3ROZXN0ZWRNZXNzYWdlSGFzQml0cy5OZXN0ZWRNZXNzYWdlGocBCg1O", - "ZXN0ZWRNZXNzYWdlEiQKHG5lc3RlZG1lc3NhZ2VfcmVwZWF0ZWRfaW50MzIY", - "ASADKAUSUAolbmVzdGVkbWVzc2FnZV9yZXBlYXRlZF9mb3JlaWdubWVzc2Fn", - "ZRgCIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlIuUD", - "ChdUZXN0Q2FtZWxDYXNlRmllbGROYW1lcxIWCg5QcmltaXRpdmVGaWVsZBgB", - "IAEoBRITCgtTdHJpbmdGaWVsZBgCIAEoCRIxCglFbnVtRmllbGQYAyABKA4y", - "Hi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bRI3CgxNZXNzYWdlRmll", - "bGQYBCABKAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRIc", - "ChBTdHJpbmdQaWVjZUZpZWxkGAUgASgJQgIIAhIVCglDb3JkRmllbGQYBiAB", - "KAlCAggBEh4KFlJlcGVhdGVkUHJpbWl0aXZlRmllbGQYByADKAUSGwoTUmVw", - "ZWF0ZWRTdHJpbmdGaWVsZBgIIAMoCRI5ChFSZXBlYXRlZEVudW1GaWVsZBgJ", - "IAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEj8KFFJlcGVh", - "dGVkTWVzc2FnZUZpZWxkGAogAygLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9y", - "ZWlnbk1lc3NhZ2USJAoYUmVwZWF0ZWRTdHJpbmdQaWVjZUZpZWxkGAsgAygJ", - "QgIIAhIdChFSZXBlYXRlZENvcmRGaWVsZBgMIAMoCUICCAEi1QEKElRlc3RG", - "aWVsZE9yZGVyaW5ncxIRCglteV9zdHJpbmcYCyABKAkSDgoGbXlfaW50GAEg", - "ASgDEhAKCG15X2Zsb2F0GGUgASgCElUKF29wdGlvbmFsX25lc3RlZF9tZXNz", - "YWdlGMgBIAEoCzIzLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVy", - "aW5ncy5OZXN0ZWRNZXNzYWdlGicKDU5lc3RlZE1lc3NhZ2USCgoCb28YAiAB", - "KAMSCgoCYmIYASABKAUqBAgCEAsqBAgMEGUitgcKGFRlc3RFeHRyZW1lRGVm", - "YXVsdFZhbHVlcxI/Cg1lc2NhcGVkX2J5dGVzGAEgASgMOihcMDAwXDAwMVww", - "MDdcMDEwXDAxNFxuXHJcdFwwMTNcXFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQz", - "MhgCIAEoDToKNDI5NDk2NzI5NRIqCgxsYXJnZV91aW50NjQYAyABKAQ6FDE4", - "NDQ2NzQ0MDczNzA5NTUxNjE1EiAKC3NtYWxsX2ludDMyGAQgASgFOgstMjE0", - "NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3", - "NzU4MDcSJwoScmVhbGx5X3NtYWxsX2ludDMyGBUgASgFOgstMjE0NzQ4MzY0", - "OBIwChJyZWFsbHlfc21hbGxfaW50NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0", - "Nzc1ODA4EhgKC3V0Zjhfc3RyaW5nGAYgASgJOgPhiLQSFQoKemVyb19mbG9h", - "dBgHIAEoAjoBMBIUCglvbmVfZmxvYXQYCCABKAI6ATESGAoLc21hbGxfZmxv", - "YXQYCSABKAI6AzEuNRIeChJuZWdhdGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0x", - "EhwKDm5lZ2F0aXZlX2Zsb2F0GAsgASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0", - "GAwgASgCOgUyZSswOBIkChRzbWFsbF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoG", - "LThlLTI4EhcKCmluZl9kb3VibGUYDiABKAE6A2luZhIcCg5uZWdfaW5mX2Rv", - "dWJsZRgPIAEoAToELWluZhIXCgpuYW5fZG91YmxlGBAgASgBOgNuYW4SFgoJ", - "aW5mX2Zsb2F0GBEgASgCOgNpbmYSGwoNbmVnX2luZl9mbG9hdBgSIAEoAjoE", - "LWluZhIWCgluYW5fZmxvYXQYEyABKAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgY", - "FCABKAk6FT8gPyA/PyA/PyA/Pz8gPz8vID8/LRIgChBzdHJpbmdfd2l0aF96", - "ZXJvGBcgASgJOgZoZWwAbG8SIgoPYnl0ZXNfd2l0aF96ZXJvGBggASgMOgl3", - "b3JcMDAwbGQSKAoWc3RyaW5nX3BpZWNlX3dpdGhfemVybxgZIAEoCToEYWIA", - "Y0ICCAISIAoOY29yZF93aXRoX3plcm8YGiABKAk6BDEyADNCAggBEiYKEnJl", - "cGxhY2VtZW50X3N0cmluZxgbIAEoCToKJHt1bmtub3dufSJLChFTcGFyc2VF", - "bnVtTWVzc2FnZRI2CgtzcGFyc2VfZW51bRgBIAEoDjIhLnByb3RvYnVmX3Vu", - "aXR0ZXN0LlRlc3RTcGFyc2VFbnVtIhkKCU9uZVN0cmluZxIMCgRkYXRhGAEg", - "ASgJIhoKCk1vcmVTdHJpbmcSDAoEZGF0YRgBIAMoCSIYCghPbmVCeXRlcxIM", - "CgRkYXRhGAEgASgMIhkKCU1vcmVCeXRlcxIMCgRkYXRhGAEgAygMIhwKDElu", - "dDMyTWVzc2FnZRIMCgRkYXRhGAEgASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoE", - "ZGF0YRgBIAEoDSIcCgxJbnQ2NE1lc3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1V", - "aW50NjRNZXNzYWdlEgwKBGRhdGEYASABKAQiGwoLQm9vbE1lc3NhZ2USDAoE", - "ZGF0YRgBIAEoCCLQAQoJVGVzdE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIU", - "Cgpmb29fc3RyaW5nGAIgASgJSAASNgoLZm9vX21lc3NhZ2UYAyABKAsyHy5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNIABI5Cghmb29ncm91cBgE", - "IAEoCjIlLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVvZi5Gb29Hcm91cEgA", - "GiAKCEZvb0dyb3VwEgkKAWEYBSABKAUSCQoBYhgGIAEoCUIFCgNmb28i5wEK", - "HFRlc3RPbmVvZkJhY2t3YXJkc0NvbXBhdGlibGUSDwoHZm9vX2ludBgBIAEo", - "BRISCgpmb29fc3RyaW5nGAIgASgJEjQKC2Zvb19tZXNzYWdlGAMgASgLMh8u", - "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEkoKCGZvb2dyb3VwGAQg", - "ASgKMjgucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mQmFja3dhcmRzQ29t", - "cGF0aWJsZS5Gb29Hcm91cBogCghGb29Hcm91cBIJCgFhGAUgASgFEgkKAWIY", - "BiABKAkingYKClRlc3RPbmVvZjISEQoHZm9vX2ludBgBIAEoBUgAEhQKCmZv", - "b19zdHJpbmcYAiABKAlIABIWCghmb29fY29yZBgDIAEoCUICCAFIABIeChBm", - "b29fc3RyaW5nX3BpZWNlGAQgASgJQgIIAkgAEhMKCWZvb19ieXRlcxgFIAEo", - "DEgAEjwKCGZvb19lbnVtGAYgASgOMigucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dE9uZW9mMi5OZXN0ZWRFbnVtSAASQgoLZm9vX21lc3NhZ2UYByABKAsyKy5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0T25lb2YyLk5lc3RlZE1lc3NhZ2VIABI6", - "Cghmb29ncm91cBgIIAEoCjImLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVv", - "ZjIuRm9vR3JvdXBIABJLChBmb29fbGF6eV9tZXNzYWdlGAsgASgLMisucHJv", - "dG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRNZXNzYWdlQgIoAUgA", - "EhQKB2Jhcl9pbnQYDCABKAU6ATVIARIcCgpiYXJfc3RyaW5nGA0gASgJOgZT", - "VFJJTkdIARIcCghiYXJfY29yZBgOIAEoCToEQ09SREICCAFIARImChBiYXJf", - "c3RyaW5nX3BpZWNlGA8gASgJOgZTUElFQ0VCAggCSAESGgoJYmFyX2J5dGVz", - "GBAgASgMOgVCWVRFU0gBEkEKCGJhcl9lbnVtGBEgASgOMigucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtOgNCQVJIARIPCgdiYXpf", - "aW50GBIgASgFEhcKCmJhel9zdHJpbmcYEyABKAk6A0JBWhogCghGb29Hcm91", - "cBIJCgFhGAkgASgFEgkKAWIYCiABKAkaMwoNTmVzdGVkTWVzc2FnZRIPCgdx", - "dXhfaW50GAEgASgDEhEKCWNvcmdlX2ludBgCIAMoBSInCgpOZXN0ZWRFbnVt", - "EgcKA0ZPTxABEgcKA0JBUhACEgcKA0JBWhADQgUKA2Zvb0IFCgNiYXIiuAEK", - "EVRlc3RSZXF1aXJlZE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29f", - "c3RyaW5nGAIgASgJSAASSQoLZm9vX21lc3NhZ2UYAyABKAsyMi5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPbmVvZi5OZXN0ZWRNZXNzYWdlSAAa", - "KAoNTmVzdGVkTWVzc2FnZRIXCg9yZXF1aXJlZF9kb3VibGUYASACKAFCBQoD", - "Zm9vIqoDCg9UZXN0UGFja2VkVHlwZXMSGAoMcGFja2VkX2ludDMyGFogAygF", - "QgIQARIYCgxwYWNrZWRfaW50NjQYWyADKANCAhABEhkKDXBhY2tlZF91aW50", - "MzIYXCADKA1CAhABEhkKDXBhY2tlZF91aW50NjQYXSADKARCAhABEhkKDXBh", - "Y2tlZF9zaW50MzIYXiADKBFCAhABEhkKDXBhY2tlZF9zaW50NjQYXyADKBJC", - "AhABEhoKDnBhY2tlZF9maXhlZDMyGGAgAygHQgIQARIaCg5wYWNrZWRfZml4", - "ZWQ2NBhhIAMoBkICEAESGwoPcGFja2VkX3NmaXhlZDMyGGIgAygPQgIQARIb", - "Cg9wYWNrZWRfc2ZpeGVkNjQYYyADKBBCAhABEhgKDHBhY2tlZF9mbG9hdBhk", - "IAMoAkICEAESGQoNcGFja2VkX2RvdWJsZRhlIAMoAUICEAESFwoLcGFja2Vk", - "X2Jvb2wYZiADKAhCAhABEjcKC3BhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9i", - "dWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhABIsgDChFUZXN0VW5wYWNrZWRU", - "eXBlcxIaCg51bnBhY2tlZF9pbnQzMhhaIAMoBUICEAASGgoOdW5wYWNrZWRf", - "aW50NjQYWyADKANCAhAAEhsKD3VucGFja2VkX3VpbnQzMhhcIAMoDUICEAAS", - "GwoPdW5wYWNrZWRfdWludDY0GF0gAygEQgIQABIbCg91bnBhY2tlZF9zaW50", - "MzIYXiADKBFCAhAAEhsKD3VucGFja2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQ", - "dW5wYWNrZWRfZml4ZWQzMhhgIAMoB0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2", - "NBhhIAMoBkICEAASHQoRdW5wYWNrZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0K", - "EXVucGFja2VkX3NmaXhlZDY0GGMgAygQQgIQABIaCg51bnBhY2tlZF9mbG9h", - "dBhkIAMoAkICEAASGwoPdW5wYWNrZWRfZG91YmxlGGUgAygBQgIQABIZCg11", - "bnBhY2tlZF9ib29sGGYgAygIQgIQABI5Cg11bnBhY2tlZF9lbnVtGGcgAygO", - "Mh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQ", - "YWNrZWRFeHRlbnNpb25zKggIARCAgICAAiIiChZUZXN0VW5wYWNrZWRFeHRl", - "bnNpb25zKggIARCAgICAAiKZBAoVVGVzdER5bmFtaWNFeHRlbnNpb25zEhkK", - "EHNjYWxhcl9leHRlbnNpb24Y0A8gASgHEjcKDmVudW1fZXh0ZW5zaW9uGNEP", - "IAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtElkKFmR5bmFt", - "aWNfZW51bV9leHRlbnNpb24Y0g8gASgOMjgucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdER5bmFtaWNFeHRlbnNpb25zLkR5bmFtaWNFbnVtVHlwZRI9ChFtZXNz", - "YWdlX2V4dGVuc2lvbhjTDyABKAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3Jl", - "aWduTWVzc2FnZRJfChlkeW5hbWljX21lc3NhZ2VfZXh0ZW5zaW9uGNQPIAEo", - "CzI7LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5E", - "eW5hbWljTWVzc2FnZVR5cGUSGwoScmVwZWF0ZWRfZXh0ZW5zaW9uGNUPIAMo", - "CRIdChBwYWNrZWRfZXh0ZW5zaW9uGNYPIAMoEUICEAEaLAoSRHluYW1pY01l", - "c3NhZ2VUeXBlEhYKDWR5bmFtaWNfZmllbGQYtBAgASgFIkcKD0R5bmFtaWNF", - "bnVtVHlwZRIQCgtEWU5BTUlDX0ZPTxCYERIQCgtEWU5BTUlDX0JBUhCZERIQ", - "CgtEWU5BTUlDX0JBWhCaESLAAQojVGVzdFJlcGVhdGVkU2NhbGFyRGlmZmVy", - "ZW50VGFnU2l6ZXMSGAoQcmVwZWF0ZWRfZml4ZWQzMhgMIAMoBxIWCg5yZXBl", - "YXRlZF9pbnQzMhgNIAMoBRIZChByZXBlYXRlZF9maXhlZDY0GP4PIAMoBhIX", - "Cg5yZXBlYXRlZF9pbnQ2NBj/DyADKAMSGAoOcmVwZWF0ZWRfZmxvYXQY/v8P", - "IAMoAhIZCg9yZXBlYXRlZF91aW50NjQY//8PIAMoBCL3CQoQVGVzdFBhcnNp", - "bmdNZXJnZRI7ChJyZXF1aXJlZF9hbGxfdHlwZXMYASACKAsyHy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSOwoSb3B0aW9uYWxfYWxsX3R5cGVz", - "GAIgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjsKEnJl", - "cGVhdGVkX2FsbF90eXBlcxgDIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxUeXBlcxJICg1vcHRpb25hbGdyb3VwGAogASgKMjEucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdFBhcnNpbmdNZXJnZS5PcHRpb25hbEdyb3VwEkgKDXJl", - "cGVhdGVkZ3JvdXAYFCADKAoyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFy", - "c2luZ01lcmdlLlJlcGVhdGVkR3JvdXAaqgQKF1JlcGVhdGVkRmllbGRzR2Vu", - "ZXJhdG9yEi8KBmZpZWxkMRgBIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxUeXBlcxIvCgZmaWVsZDIYAiADKAsyHy5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsVHlwZXMSLwoGZmllbGQzGAMgAygLMh8ucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbFR5cGVzElIKBmdyb3VwMRgKIAMoCjJCLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5l", - "cmF0b3IuR3JvdXAxElIKBmdyb3VwMhgUIAMoCjJCLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RQYXJzaW5nTWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3Iu", - "R3JvdXAyEi4KBGV4dDEY6AcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dEFsbFR5cGVzEi4KBGV4dDIY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdEFsbFR5cGVzGjkKBkdyb3VwMRIvCgZmaWVsZDEYCyABKAsyHy5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMaOQoGR3JvdXAyEi8KBmZpZWxk", - "MRgVIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1P", - "cHRpb25hbEdyb3VwEkEKGG9wdGlvbmFsX2dyb3VwX2FsbF90eXBlcxgLIAEo", - "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1SZXBlYXRl", - "ZEdyb3VwEkEKGHJlcGVhdGVkX2dyb3VwX2FsbF90eXBlcxgVIAEoCzIfLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyoJCOgHEICAgIACMlsKDG9w", - "dGlvbmFsX2V4dBIjLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVy", - "Z2UY6AcgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzMlsK", - "DHJlcGVhdGVkX2V4dBIjLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5n", - "TWVyZ2UY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz", - "IkQKG1Rlc3RDb21tZW50SW5qZWN0aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoq", - "LyA8LSBOZWl0aGVyIHNob3VsZCB0aGlzLiIMCgpGb29SZXF1ZXN0Ig0KC0Zv", - "b1Jlc3BvbnNlIhIKEEZvb0NsaWVudE1lc3NhZ2UiEgoQRm9vU2VydmVyTWVz", - "c2FnZSIMCgpCYXJSZXF1ZXN0Ig0KC0JhclJlc3BvbnNlKkAKC0ZvcmVpZ25F", - "bnVtEg8KC0ZPUkVJR05fRk9PEAQSDwoLRk9SRUlHTl9CQVIQBRIPCgtGT1JF", - "SUdOX0JBWhAGKksKFFRlc3RFbnVtV2l0aER1cFZhbHVlEggKBEZPTzEQARII", - "CgRCQVIxEAISBwoDQkFaEAMSCAoERk9PMhABEggKBEJBUjIQAhoCEAEqiQEK", - "DlRlc3RTcGFyc2VFbnVtEgwKCFNQQVJTRV9BEHsSDgoIU1BBUlNFX0IQpucD", - "Eg8KCFNQQVJTRV9DELKxgAYSFQoIU1BBUlNFX0QQ8f//////////ARIVCghT", - "UEFSU0VfRRC03vz///////8BEgwKCFNQQVJTRV9GEAASDAoIU1BBUlNFX0cQ", - "AjKZAQoLVGVzdFNlcnZpY2USRAoDRm9vEh0ucHJvdG9idWZfdW5pdHRlc3Qu", - "Rm9vUmVxdWVzdBoeLnByb3RvYnVmX3VuaXR0ZXN0LkZvb1Jlc3BvbnNlEkQK", - "A0JhchIdLnByb3RvYnVmX3VuaXR0ZXN0LkJhclJlcXVlc3QaHi5wcm90b2J1", - "Zl91bml0dGVzdC5CYXJSZXNwb25zZTpGChhvcHRpb25hbF9pbnQzMl9leHRl", - "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgB", - "IAEoBTpGChhvcHRpb25hbF9pbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgCIAEoAzpHChlvcHRpb25hbF91", - "aW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4", - "dGVuc2lvbnMYAyABKA06RwoZb3B0aW9uYWxfdWludDY0X2V4dGVuc2lvbhIk", - "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAQgASgEOkcK", - "GW9wdGlvbmFsX3NpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxgFIAEoETpHChlvcHRpb25hbF9zaW50NjRf", - "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYBiABKBI6SAoab3B0aW9uYWxfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgHIAEoBzpIChpvcHRp", - "b25hbF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGAggASgGOkkKG29wdGlvbmFsX3NmaXhlZDMyX2V4", + "AxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCK7AQoSTmVzdGVk", + "VGVzdEFsbFR5cGVzEjQKBWNoaWxkGAEgASgLMiUucHJvdG9idWZfdW5pdHRl", + "c3QuTmVzdGVkVGVzdEFsbFR5cGVzEjAKB3BheWxvYWQYAiABKAsyHy5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSPQoOcmVwZWF0ZWRfY2hpbGQY", + "AyADKAsyJS5wcm90b2J1Zl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXMi", + "NAoUVGVzdERlcHJlY2F0ZWRGaWVsZHMSHAoQZGVwcmVjYXRlZF9pbnQzMhgB", + "IAEoBUICGAEiGwoORm9yZWlnbk1lc3NhZ2USCQoBYxgBIAEoBSIwChJUZXN0", + "UmVzZXJ2ZWRGaWVsZHNKBAgCEANKBAgPEBBKBAgJEAxSA2JhclIDYmF6Ih0K", + "EVRlc3RBbGxFeHRlbnNpb25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3Vw", + "X2V4dGVuc2lvbhIJCgFhGBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5z", + "aW9uEgkKAWEYLyABKAUimAEKE1Rlc3ROZXN0ZWRFeHRlbnNpb24yOQoEdGVz", + "dBIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOoHIAEo", + "CToEdGVzdDJGChduZXN0ZWRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOsHIAEoCSLVBQoMVGVzdFJl", + "cXVpcmVkEgkKAWEYASACKAUSDgoGZHVtbXkyGAIgASgFEgkKAWIYAyACKAUS", + "DgoGZHVtbXk0GAQgASgFEg4KBmR1bW15NRgFIAEoBRIOCgZkdW1teTYYBiAB", + "KAUSDgoGZHVtbXk3GAcgASgFEg4KBmR1bW15OBgIIAEoBRIOCgZkdW1teTkY", + "CSABKAUSDwoHZHVtbXkxMBgKIAEoBRIPCgdkdW1teTExGAsgASgFEg8KB2R1", + "bW15MTIYDCABKAUSDwoHZHVtbXkxMxgNIAEoBRIPCgdkdW1teTE0GA4gASgF", + "Eg8KB2R1bW15MTUYDyABKAUSDwoHZHVtbXkxNhgQIAEoBRIPCgdkdW1teTE3", + "GBEgASgFEg8KB2R1bW15MTgYEiABKAUSDwoHZHVtbXkxORgTIAEoBRIPCgdk", + "dW1teTIwGBQgASgFEg8KB2R1bW15MjEYFSABKAUSDwoHZHVtbXkyMhgWIAEo", + "BRIPCgdkdW1teTIzGBcgASgFEg8KB2R1bW15MjQYGCABKAUSDwoHZHVtbXky", + "NRgZIAEoBRIPCgdkdW1teTI2GBogASgFEg8KB2R1bW15MjcYGyABKAUSDwoH", + "ZHVtbXkyOBgcIAEoBRIPCgdkdW1teTI5GB0gASgFEg8KB2R1bW15MzAYHiAB", + "KAUSDwoHZHVtbXkzMRgfIAEoBRIPCgdkdW1teTMyGCAgASgFEgkKAWMYISAC", + "KAUyVgoGc2luZ2xlEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMY6AcgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVk", + "MlUKBW11bHRpEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", + "bnMY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVkIpoB", + "ChNUZXN0UmVxdWlyZWRGb3JlaWduEjkKEG9wdGlvbmFsX21lc3NhZ2UYASAB", + "KAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWQSOQoQcmVwZWF0", + "ZWRfbWVzc2FnZRgCIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RSZXF1", + "aXJlZBINCgVkdW1teRgDIAEoBSJaChFUZXN0Rm9yZWlnbk5lc3RlZBJFCg5m", + "b3JlaWduX25lc3RlZBgBIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxUeXBlcy5OZXN0ZWRNZXNzYWdlIhIKEFRlc3RFbXB0eU1lc3NhZ2UiKgoe", + "VGVzdEVtcHR5TWVzc2FnZVdpdGhFeHRlbnNpb25zKggIARCAgICAAiI3ChtU", + "ZXN0TXVsdGlwbGVFeHRlbnNpb25SYW5nZXMqBAgqECsqBgivIBCUISoKCICA", + "BBCAgICAAiI0ChhUZXN0UmVhbGx5TGFyZ2VUYWdOdW1iZXISCQoBYRgBIAEo", + "BRINCgJiYhj///9/IAEoBSJVChRUZXN0UmVjdXJzaXZlTWVzc2FnZRIyCgFh", + "GAEgASgLMicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlY3Vyc2l2ZU1lc3Nh", + "Z2USCQoBaRgCIAEoBSJLChRUZXN0TXV0dWFsUmVjdXJzaW9uQRIzCgJiYhgB", + "IAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RNdXR1YWxSZWN1cnNpb25C", + "ImIKFFRlc3RNdXR1YWxSZWN1cnNpb25CEjIKAWEYASABKAsyJy5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQRIWCg5vcHRpb25hbF9p", + "bnQzMhgCIAEoBSKzAQoSVGVzdER1cEZpZWxkTnVtYmVyEgkKAWEYASABKAUS", + "NgoDZm9vGAIgASgKMikucHJvdG9idWZfdW5pdHRlc3QuVGVzdER1cEZpZWxk", + "TnVtYmVyLkZvbxI2CgNiYXIYAyABKAoyKS5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0RHVwRmllbGROdW1iZXIuQmFyGhAKA0ZvbxIJCgFhGAEgASgFGhAKA0Jh", + "chIJCgFhGAEgASgFIkwKEFRlc3RFYWdlck1lc3NhZ2USOAoLc3ViX21lc3Nh", + "Z2UYASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNCAigA", + "IksKD1Rlc3RMYXp5TWVzc2FnZRI4CgtzdWJfbWVzc2FnZRgBIAEoCzIfLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0ICKAEigAIKGFRlc3ROZXN0", + "ZWRNZXNzYWdlSGFzQml0cxJaChdvcHRpb25hbF9uZXN0ZWRfbWVzc2FnZRgB", + "IAEoCzI5LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3ROZXN0ZWRNZXNzYWdlSGFz", + "Qml0cy5OZXN0ZWRNZXNzYWdlGocBCg1OZXN0ZWRNZXNzYWdlEiQKHG5lc3Rl", + "ZG1lc3NhZ2VfcmVwZWF0ZWRfaW50MzIYASADKAUSUAolbmVzdGVkbWVzc2Fn", + "ZV9yZXBlYXRlZF9mb3JlaWdubWVzc2FnZRgCIAMoCzIhLnByb3RvYnVmX3Vu", + "aXR0ZXN0LkZvcmVpZ25NZXNzYWdlIuUDChdUZXN0Q2FtZWxDYXNlRmllbGRO", + "YW1lcxIWCg5QcmltaXRpdmVGaWVsZBgBIAEoBRITCgtTdHJpbmdGaWVsZBgC", + "IAEoCRIxCglFbnVtRmllbGQYAyABKA4yHi5wcm90b2J1Zl91bml0dGVzdC5G", + "b3JlaWduRW51bRI3CgxNZXNzYWdlRmllbGQYBCABKAsyIS5wcm90b2J1Zl91", + "bml0dGVzdC5Gb3JlaWduTWVzc2FnZRIcChBTdHJpbmdQaWVjZUZpZWxkGAUg", + "ASgJQgIIAhIVCglDb3JkRmllbGQYBiABKAlCAggBEh4KFlJlcGVhdGVkUHJp", + "bWl0aXZlRmllbGQYByADKAUSGwoTUmVwZWF0ZWRTdHJpbmdGaWVsZBgIIAMo", + "CRI5ChFSZXBlYXRlZEVudW1GaWVsZBgJIAMoDjIeLnByb3RvYnVmX3VuaXR0", + "ZXN0LkZvcmVpZ25FbnVtEj8KFFJlcGVhdGVkTWVzc2FnZUZpZWxkGAogAygL", + "MiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USJAoYUmVwZWF0", + "ZWRTdHJpbmdQaWVjZUZpZWxkGAsgAygJQgIIAhIdChFSZXBlYXRlZENvcmRG", + "aWVsZBgMIAMoCUICCAEi1QEKElRlc3RGaWVsZE9yZGVyaW5ncxIRCglteV9z", + "dHJpbmcYCyABKAkSDgoGbXlfaW50GAEgASgDEhAKCG15X2Zsb2F0GGUgASgC", + "ElUKF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGMgBIAEoCzIzLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncy5OZXN0ZWRNZXNzYWdlGicK", + "DU5lc3RlZE1lc3NhZ2USCgoCb28YAiABKAMSCgoCYmIYASABKAUqBAgCEAsq", + "BAgMEGUitgcKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVk", + "X2J5dGVzGAEgASgMOihcMDAwXDAwMVwwMDdcMDEwXDAxNFxuXHJcdFwwMTNc", + "XFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQzMhgCIAEoDToKNDI5NDk2NzI5NRIq", + "CgxsYXJnZV91aW50NjQYAyABKAQ6FDE4NDQ2NzQ0MDczNzA5NTUxNjE1EiAK", + "C3NtYWxsX2ludDMyGAQgASgFOgstMjE0NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2", + "NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3NzU4MDcSJwoScmVhbGx5X3NtYWxs", + "X2ludDMyGBUgASgFOgstMjE0NzQ4MzY0OBIwChJyZWFsbHlfc21hbGxfaW50", + "NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0Nzc1ODA4EhgKC3V0Zjhfc3RyaW5n", + "GAYgASgJOgPhiLQSFQoKemVyb19mbG9hdBgHIAEoAjoBMBIUCglvbmVfZmxv", + "YXQYCCABKAI6ATESGAoLc21hbGxfZmxvYXQYCSABKAI6AzEuNRIeChJuZWdh", + "dGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0xEhwKDm5lZ2F0aXZlX2Zsb2F0GAsg", + "ASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0GAwgASgCOgUyZSswOBIkChRzbWFs", + "bF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoGLThlLTI4EhcKCmluZl9kb3VibGUY", + "DiABKAE6A2luZhIcCg5uZWdfaW5mX2RvdWJsZRgPIAEoAToELWluZhIXCgpu", + "YW5fZG91YmxlGBAgASgBOgNuYW4SFgoJaW5mX2Zsb2F0GBEgASgCOgNpbmYS", + "GwoNbmVnX2luZl9mbG9hdBgSIAEoAjoELWluZhIWCgluYW5fZmxvYXQYEyAB", + "KAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgYFCABKAk6FT8gPyA/PyA/PyA/Pz8g", + "Pz8vID8/LRIgChBzdHJpbmdfd2l0aF96ZXJvGBcgASgJOgZoZWwAbG8SIgoP", + "Ynl0ZXNfd2l0aF96ZXJvGBggASgMOgl3b3JcMDAwbGQSKAoWc3RyaW5nX3Bp", + "ZWNlX3dpdGhfemVybxgZIAEoCToEYWIAY0ICCAISIAoOY29yZF93aXRoX3pl", + "cm8YGiABKAk6BDEyADNCAggBEiYKEnJlcGxhY2VtZW50X3N0cmluZxgbIAEo", + "CToKJHt1bmtub3dufSJLChFTcGFyc2VFbnVtTWVzc2FnZRI2CgtzcGFyc2Vf", + "ZW51bRgBIAEoDjIhLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RTcGFyc2VFbnVt", + "IhkKCU9uZVN0cmluZxIMCgRkYXRhGAEgASgJIhoKCk1vcmVTdHJpbmcSDAoE", + "ZGF0YRgBIAMoCSIYCghPbmVCeXRlcxIMCgRkYXRhGAEgASgMIhkKCU1vcmVC", + "eXRlcxIMCgRkYXRhGAEgAygMIhwKDEludDMyTWVzc2FnZRIMCgRkYXRhGAEg", + "ASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoEZGF0YRgBIAEoDSIcCgxJbnQ2NE1l", + "c3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1VaW50NjRNZXNzYWdlEgwKBGRhdGEY", + "ASABKAQiGwoLQm9vbE1lc3NhZ2USDAoEZGF0YRgBIAEoCCLQAQoJVGVzdE9u", + "ZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAAS", + "NgoLZm9vX21lc3NhZ2UYAyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "QWxsVHlwZXNIABI5Cghmb29ncm91cBgEIAEoCjIlLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RPbmVvZi5Gb29Hcm91cEgAGiAKCEZvb0dyb3VwEgkKAWEYBSAB", + "KAUSCQoBYhgGIAEoCUIFCgNmb28i5wEKHFRlc3RPbmVvZkJhY2t3YXJkc0Nv", + "bXBhdGlibGUSDwoHZm9vX2ludBgBIAEoBRISCgpmb29fc3RyaW5nGAIgASgJ", + "EjQKC2Zvb19tZXNzYWdlGAMgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVz", + "dEFsbFR5cGVzEkoKCGZvb2dyb3VwGAQgASgKMjgucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdE9uZW9mQmFja3dhcmRzQ29tcGF0aWJsZS5Gb29Hcm91cBogCghG", + "b29Hcm91cBIJCgFhGAUgASgFEgkKAWIYBiABKAkingYKClRlc3RPbmVvZjIS", + "EQoHZm9vX2ludBgBIAEoBUgAEhQKCmZvb19zdHJpbmcYAiABKAlIABIWCghm", + "b29fY29yZBgDIAEoCUICCAFIABIeChBmb29fc3RyaW5nX3BpZWNlGAQgASgJ", + "QgIIAkgAEhMKCWZvb19ieXRlcxgFIAEoDEgAEjwKCGZvb19lbnVtGAYgASgO", + "MigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtSAAS", + "QgoLZm9vX21lc3NhZ2UYByABKAsyKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "T25lb2YyLk5lc3RlZE1lc3NhZ2VIABI6Cghmb29ncm91cBgIIAEoCjImLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVvZjIuRm9vR3JvdXBIABJLChBmb29f", + "bGF6eV9tZXNzYWdlGAsgASgLMisucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9u", + "ZW9mMi5OZXN0ZWRNZXNzYWdlQgIoAUgAEhQKB2Jhcl9pbnQYDCABKAU6ATVI", + "ARIcCgpiYXJfc3RyaW5nGA0gASgJOgZTVFJJTkdIARIcCghiYXJfY29yZBgO", + "IAEoCToEQ09SREICCAFIARImChBiYXJfc3RyaW5nX3BpZWNlGA8gASgJOgZT", + "UElFQ0VCAggCSAESGgoJYmFyX2J5dGVzGBAgASgMOgVCWVRFU0gBEkEKCGJh", + "cl9lbnVtGBEgASgOMigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5O", + "ZXN0ZWRFbnVtOgNCQVJIARIPCgdiYXpfaW50GBIgASgFEhcKCmJhel9zdHJp", + "bmcYEyABKAk6A0JBWhogCghGb29Hcm91cBIJCgFhGAkgASgFEgkKAWIYCiAB", + "KAkaMwoNTmVzdGVkTWVzc2FnZRIPCgdxdXhfaW50GAEgASgDEhEKCWNvcmdl", + "X2ludBgCIAMoBSInCgpOZXN0ZWRFbnVtEgcKA0ZPTxABEgcKA0JBUhACEgcK", + "A0JBWhADQgUKA2Zvb0IFCgNiYXIiuAEKEVRlc3RSZXF1aXJlZE9uZW9mEhEK", + "B2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAASSQoLZm9v", + "X21lc3NhZ2UYAyABKAsyMi5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWly", + "ZWRPbmVvZi5OZXN0ZWRNZXNzYWdlSAAaKAoNTmVzdGVkTWVzc2FnZRIXCg9y", + "ZXF1aXJlZF9kb3VibGUYASACKAFCBQoDZm9vIqoDCg9UZXN0UGFja2VkVHlw", + "ZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQARIYCgxwYWNrZWRfaW50NjQY", + "WyADKANCAhABEhkKDXBhY2tlZF91aW50MzIYXCADKA1CAhABEhkKDXBhY2tl", + "ZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tlZF9zaW50MzIYXiADKBFCAhAB", + "EhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhABEhoKDnBhY2tlZF9maXhlZDMy", + "GGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAESGwoPcGFj", + "a2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9wYWNrZWRfc2ZpeGVkNjQYYyAD", + "KBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMoAkICEAESGQoNcGFja2VkX2Rv", + "dWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYZiADKAhCAhABEjcKC3Bh", + "Y2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVu", + "dW1CAhABIsgDChFUZXN0VW5wYWNrZWRUeXBlcxIaCg51bnBhY2tlZF9pbnQz", + "MhhaIAMoBUICEAASGgoOdW5wYWNrZWRfaW50NjQYWyADKANCAhAAEhsKD3Vu", + "cGFja2VkX3VpbnQzMhhcIAMoDUICEAASGwoPdW5wYWNrZWRfdWludDY0GF0g", + "AygEQgIQABIbCg91bnBhY2tlZF9zaW50MzIYXiADKBFCAhAAEhsKD3VucGFj", + "a2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQdW5wYWNrZWRfZml4ZWQzMhhgIAMo", + "B0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAASHQoRdW5wYWNr", + "ZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0KEXVucGFja2VkX3NmaXhlZDY0GGMg", + "AygQQgIQABIaCg51bnBhY2tlZF9mbG9hdBhkIAMoAkICEAASGwoPdW5wYWNr", + "ZWRfZG91YmxlGGUgAygBQgIQABIZCg11bnBhY2tlZF9ib29sGGYgAygIQgIQ", + "ABI5Cg11bnBhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", + "Rm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQYWNrZWRFeHRlbnNpb25zKggIARCA", + "gICAAiIiChZUZXN0VW5wYWNrZWRFeHRlbnNpb25zKggIARCAgICAAiKZBAoV", + "VGVzdER5bmFtaWNFeHRlbnNpb25zEhkKEHNjYWxhcl9leHRlbnNpb24Y0A8g", + "ASgHEjcKDmVudW1fZXh0ZW5zaW9uGNEPIAEoDjIeLnByb3RvYnVmX3VuaXR0", + "ZXN0LkZvcmVpZ25FbnVtElkKFmR5bmFtaWNfZW51bV9leHRlbnNpb24Y0g8g", + "ASgOMjgucHJvdG9idWZfdW5pdHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25z", + "LkR5bmFtaWNFbnVtVHlwZRI9ChFtZXNzYWdlX2V4dGVuc2lvbhjTDyABKAsy", + "IS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRJfChlkeW5hbWlj", + "X21lc3NhZ2VfZXh0ZW5zaW9uGNQPIAEoCzI7LnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5EeW5hbWljTWVzc2FnZVR5cGUSGwoS", + "cmVwZWF0ZWRfZXh0ZW5zaW9uGNUPIAMoCRIdChBwYWNrZWRfZXh0ZW5zaW9u", + "GNYPIAMoEUICEAEaLAoSRHluYW1pY01lc3NhZ2VUeXBlEhYKDWR5bmFtaWNf", + "ZmllbGQYtBAgASgFIkcKD0R5bmFtaWNFbnVtVHlwZRIQCgtEWU5BTUlDX0ZP", + "TxCYERIQCgtEWU5BTUlDX0JBUhCZERIQCgtEWU5BTUlDX0JBWhCaESLAAQoj", + "VGVzdFJlcGVhdGVkU2NhbGFyRGlmZmVyZW50VGFnU2l6ZXMSGAoQcmVwZWF0", + "ZWRfZml4ZWQzMhgMIAMoBxIWCg5yZXBlYXRlZF9pbnQzMhgNIAMoBRIZChBy", + "ZXBlYXRlZF9maXhlZDY0GP4PIAMoBhIXCg5yZXBlYXRlZF9pbnQ2NBj/DyAD", + "KAMSGAoOcmVwZWF0ZWRfZmxvYXQY/v8PIAMoAhIZCg9yZXBlYXRlZF91aW50", + "NjQY//8PIAMoBCL3CQoQVGVzdFBhcnNpbmdNZXJnZRI7ChJyZXF1aXJlZF9h", + "bGxfdHlwZXMYASACKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlw", + "ZXMSOwoSb3B0aW9uYWxfYWxsX3R5cGVzGAIgASgLMh8ucHJvdG9idWZfdW5p", + "dHRlc3QuVGVzdEFsbFR5cGVzEjsKEnJlcGVhdGVkX2FsbF90eXBlcxgDIAMo", + "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJICg1vcHRpb25h", + "bGdyb3VwGAogASgKMjEucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhcnNpbmdN", + "ZXJnZS5PcHRpb25hbEdyb3VwEkgKDXJlcGVhdGVkZ3JvdXAYFCADKAoyMS5w", + "cm90b2J1Zl91bml0dGVzdC5UZXN0UGFyc2luZ01lcmdlLlJlcGVhdGVkR3Jv", + "dXAaqgQKF1JlcGVhdGVkRmllbGRzR2VuZXJhdG9yEi8KBmZpZWxkMRgBIAMo", + "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxIvCgZmaWVsZDIY", + "AiADKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSLwoGZmll", + "bGQzGAMgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzElIK", + "Bmdyb3VwMRgKIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5n", + "TWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAxElIKBmdyb3Vw", + "MhgUIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2Uu", + "UmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAyEi4KBGV4dDEY6AcgAygL", + "Mh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEi4KBGV4dDIY6Qcg", + "AygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzGjkKBkdyb3Vw", + "MRIvCgZmaWVsZDEYCyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "VHlwZXMaOQoGR3JvdXAyEi8KBmZpZWxkMRgVIAEoCzIfLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1PcHRpb25hbEdyb3VwEkEKGG9wdGlv", + "bmFsX2dyb3VwX2FsbF90eXBlcxgLIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxUeXBlcxpSCg1SZXBlYXRlZEdyb3VwEkEKGHJlcGVhdGVkX2dy", + "b3VwX2FsbF90eXBlcxgVIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxUeXBlcyoJCOgHEICAgIACMlsKDG9wdGlvbmFsX2V4dBIjLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6AcgASgLMh8ucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbFR5cGVzMlsKDHJlcGVhdGVkX2V4dBIjLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6QcgAygLMh8ucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIkQKG1Rlc3RDb21tZW50SW5qZWN0", + "aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoqLyA8LSBOZWl0aGVyIHNob3VsZCB0", + "aGlzLiIMCgpGb29SZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIhIKEEZvb0NsaWVu", + "dE1lc3NhZ2UiEgoQRm9vU2VydmVyTWVzc2FnZSIMCgpCYXJSZXF1ZXN0Ig0K", + "C0JhclJlc3BvbnNlKkAKC0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAQS", + "DwoLRk9SRUlHTl9CQVIQBRIPCgtGT1JFSUdOX0JBWhAGKksKFFRlc3RFbnVt", + "V2l0aER1cFZhbHVlEggKBEZPTzEQARIICgRCQVIxEAISBwoDQkFaEAMSCAoE", + "Rk9PMhABEggKBEJBUjIQAhoCEAEqiQEKDlRlc3RTcGFyc2VFbnVtEgwKCFNQ", + "QVJTRV9BEHsSDgoIU1BBUlNFX0IQpucDEg8KCFNQQVJTRV9DELKxgAYSFQoI", + "U1BBUlNFX0QQ8f//////////ARIVCghTUEFSU0VfRRC03vz///////8BEgwK", + "CFNQQVJTRV9GEAASDAoIU1BBUlNFX0cQAjKZAQoLVGVzdFNlcnZpY2USRAoD", + "Rm9vEh0ucHJvdG9idWZfdW5pdHRlc3QuRm9vUmVxdWVzdBoeLnByb3RvYnVm", + "X3VuaXR0ZXN0LkZvb1Jlc3BvbnNlEkQKA0JhchIdLnByb3RvYnVmX3VuaXR0", + "ZXN0LkJhclJlcXVlc3QaHi5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXNwb25z", + "ZTpGChhvcHRpb25hbF9pbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", + "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgBIAEoBTpGChhvcHRpb25hbF9pbnQ2", + "NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxgCIAEoAzpHChlvcHRpb25hbF91aW50MzJfZXh0ZW5zaW9uEiQucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYAyABKA06RwoZb3B0", + "aW9uYWxfdWludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxFeHRlbnNpb25zGAQgASgEOkcKGW9wdGlvbmFsX3NpbnQzMl9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgF", + "IAEoETpHChlvcHRpb25hbF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYBiABKBI6SAoab3B0aW9uYWxf", + "Zml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxgHIAEoBzpIChpvcHRpb25hbF9maXhlZDY0X2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAggASgG", + "OkkKG29wdGlvbmFsX3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAkgASgPOkkKG29wdGlvbmFsX3Nm", + "aXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", + "eHRlbnNpb25zGAogASgQOkYKGG9wdGlvbmFsX2Zsb2F0X2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAsgASgCOkcK", + "GW9wdGlvbmFsX2RvdWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEoATpFChdvcHRpb25hbF9ib29sX2V4", + "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", + "GA0gASgIOkcKGW9wdGlvbmFsX3N0cmluZ19leHRlbnNpb24SJC5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgOIAEoCTpGChhvcHRpb25h", + "bF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxgPIAEoDDpxChdvcHRpb25hbGdyb3VwX2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBAgASgKMiou", + "cHJvdG9idWZfdW5pdHRlc3QuT3B0aW9uYWxHcm91cF9leHRlbnNpb246fgoh", + "b3B0aW9uYWxfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEiABKAsyLS5wcm90b2J1Zl91", + "bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZTpzCiJvcHRpb25h", + "bF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYEyABKAsyIS5wcm90b2J1Zl91bml0dGVz", + "dC5Gb3JlaWduTWVzc2FnZTp4CiFvcHRpb25hbF9pbXBvcnRfbWVzc2FnZV9l", + "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u", + "cxgUIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNz", + "YWdlOngKHm9wdGlvbmFsX25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBUgASgOMioucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06bQofb3B0aW9u", + "YWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxFeHRlbnNpb25zGBYgASgOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", + "Rm9yZWlnbkVudW06cgoeb3B0aW9uYWxfaW1wb3J0X2VudW1fZXh0ZW5zaW9u", + "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFyABKA4y", + "JC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bTpRCh9vcHRp", + "b25hbF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYGCABKAlCAggCOkkKF29wdGlvbmFsX2Nv", + "cmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYGSABKAlCAggBOoUBCihvcHRpb25hbF9wdWJsaWNfaW1wb3J0X21l", + "c3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4", + "dGVuc2lvbnMYGiABKAsyLS5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuUHVi", + "bGljSW1wb3J0TWVzc2FnZTqAAQofb3B0aW9uYWxfbGF6eV9tZXNzYWdlX2V4", "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", - "GAkgASgPOkkKG29wdGlvbmFsX3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAogASgQOkYKGG9wdGlv", - "bmFsX2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGAsgASgCOkcKGW9wdGlvbmFsX2RvdWJsZV9leHRlbnNp", - "b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEo", - "ATpFChdvcHRpb25hbF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGA0gASgIOkcKGW9wdGlvbmFsX3N0cmlu", - "Z19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", - "aW9ucxgOIAEoCTpGChhvcHRpb25hbF9ieXRlc19leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgPIAEoDDpxChdvcHRp", - "b25hbGdyb3VwX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGBAgASgKMioucHJvdG9idWZfdW5pdHRlc3QuT3B0aW9u", - "YWxHcm91cF9leHRlbnNpb246fgohb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2Vf", + "GBsgASgLMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3Rl", + "ZE1lc3NhZ2VCAigBOkYKGHJlcGVhdGVkX2ludDMyX2V4dGVuc2lvbhIkLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGB8gAygFOkYKGHJl", + "cGVhdGVkX2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxFeHRlbnNpb25zGCAgAygDOkcKGXJlcGVhdGVkX3VpbnQzMl9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgh", + "IAMoDTpHChlyZXBlYXRlZF91aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYIiADKAQ6RwoZcmVwZWF0ZWRf", + "c2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", + "eHRlbnNpb25zGCMgAygROkcKGXJlcGVhdGVkX3NpbnQ2NF9leHRlbnNpb24S", + "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgkIAMoEjpI", + "ChpyZXBlYXRlZF9maXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCUgAygHOkgKGnJlcGVhdGVkX2ZpeGVk", + "NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYJiADKAY6SQobcmVwZWF0ZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQu", + "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJyADKA86SQob", + "cmVwZWF0ZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYKCADKBA6RgoYcmVwZWF0ZWRfZmxvYXRf", "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYEiABKAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVz", - "dGVkTWVzc2FnZTpzCiJvcHRpb25hbF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEyAB", - "KAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZTp4CiFvcHRp", - "b25hbF9pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", - "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgUIAEoCzInLnByb3RvYnVmX3VuaXR0", - "ZXN0X2ltcG9ydC5JbXBvcnRNZXNzYWdlOngKHm9wdGlvbmFsX25lc3RlZF9l", - "bnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGBUgASgOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz", - "Lk5lc3RlZEVudW06bQofb3B0aW9uYWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lv", - "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBYgASgO", - "Mh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06cgoeb3B0aW9uYWxf", - "aW1wb3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dEFsbEV4dGVuc2lvbnMYFyABKA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBv", - "cnQuSW1wb3J0RW51bTpRCh9vcHRpb25hbF9zdHJpbmdfcGllY2VfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGCAB", - "KAlCAggCOkkKF29wdGlvbmFsX2NvcmRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGSABKAlCAggBOoUBCihvcHRp", - "b25hbF9wdWJsaWNfaW1wb3J0X21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9i", - "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGiABKAsyLS5wcm90b2J1", - "Zl91bml0dGVzdF9pbXBvcnQuUHVibGljSW1wb3J0TWVzc2FnZTqAAQofb3B0", - "aW9uYWxfbGF6eV9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBsgASgLMi0ucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2VCAigBOkYKGHJlcGVhdGVk", - "X2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", - "eHRlbnNpb25zGB8gAygFOkYKGHJlcGVhdGVkX2ludDY0X2V4dGVuc2lvbhIk", - "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCAgAygDOkcK", - "GXJlcGVhdGVkX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxghIAMoDTpHChlyZXBlYXRlZF91aW50NjRf", + "bnMYKSADKAI6RwoZcmVwZWF0ZWRfZG91YmxlX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCogAygBOkUKF3JlcGVh", + "dGVkX2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs", + "bEV4dGVuc2lvbnMYKyADKAg6RwoZcmVwZWF0ZWRfc3RyaW5nX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCwgAygJ", + "OkYKGHJlcGVhdGVkX2J5dGVzX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0gAygMOnEKF3JlcGVhdGVkZ3JvdXBf", "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYIiADKAQ6RwoZcmVwZWF0ZWRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCMgAygROkcKGXJlcGVh", - "dGVkX3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", - "QWxsRXh0ZW5zaW9ucxgkIAMoEjpIChpyZXBlYXRlZF9maXhlZDMyX2V4dGVu", - "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCUg", - "AygHOkgKGnJlcGVhdGVkX2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJiADKAY6SQobcmVwZWF0ZWRf", - "c2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs", - "bEV4dGVuc2lvbnMYJyADKA86SQobcmVwZWF0ZWRfc2ZpeGVkNjRfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKCAD", - "KBA6RgoYcmVwZWF0ZWRfZmxvYXRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKSADKAI6RwoZcmVwZWF0ZWRfZG91", - "YmxlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGCogAygBOkUKF3JlcGVhdGVkX2Jvb2xfZXh0ZW5zaW9uEiQucHJv", - "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKyADKAg6RwoZcmVw", - "ZWF0ZWRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGCwgAygJOkYKGHJlcGVhdGVkX2J5dGVzX2V4dGVu", - "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0g", - "AygMOnEKF3JlcGVhdGVkZ3JvdXBfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYLiADKAoyKi5wcm90b2J1Zl91bml0", - "dGVzdC5SZXBlYXRlZEdyb3VwX2V4dGVuc2lvbjp+CiFyZXBlYXRlZF9uZXN0", - "ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", - "QWxsRXh0ZW5zaW9ucxgwIAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxUeXBlcy5OZXN0ZWRNZXNzYWdlOnMKInJlcGVhdGVkX2ZvcmVpZ25fbWVz", - "c2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxgxIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNz", - "YWdlOngKIXJlcGVhdGVkX2ltcG9ydF9tZXNzYWdlX2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDIgAygLMicucHJv", - "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2U6eAoecmVwZWF0", - "ZWRfbmVzdGVkX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdEFsbEV4dGVuc2lvbnMYMyADKA4yKi5wcm90b2J1Zl91bml0dGVzdC5U", - "ZXN0QWxsVHlwZXMuTmVzdGVkRW51bTptCh9yZXBlYXRlZF9mb3JlaWduX2Vu", - "dW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", - "c2lvbnMYNCADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bTpy", - "Ch5yZXBlYXRlZF9pbXBvcnRfZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg1IAMoDjIkLnByb3RvYnVmX3Vu", - "aXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtOlEKH3JlcGVhdGVkX3N0cmluZ19w", - "aWVjZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxg2IAMoCUICCAI6SQoXcmVwZWF0ZWRfY29yZF9leHRlbnNpb24S", - "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg3IAMoCUIC", - "CAE6gAEKH3JlcGVhdGVkX2xhenlfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg5IAMoCzItLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlQgIoATpJ", - "ChdkZWZhdWx0X2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RBbGxFeHRlbnNpb25zGD0gASgFOgI0MTpJChdkZWZhdWx0X2ludDY0", - "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp", - "b25zGD4gASgDOgI0MjpKChhkZWZhdWx0X3VpbnQzMl9leHRlbnNpb24SJC5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6", - "SgoYZGVmYXVsdF91aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEFsbEV4dGVuc2lvbnMYQCABKAQ6AjQ0OksKGGRlZmF1bHRfc2lu", - "dDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGEEgASgROgMtNDU6SgoYZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9u", - "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6", - "AjQ2OksKGWRlZmF1bHRfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVs", - "dF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGEQgASgGOgI0ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4", - "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", - "GEUgASgPOgI0OTpNChpkZWZhdWx0X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEYgASgQOgMtNTA6", - "SwoXZGVmYXVsdF9mbG9hdF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxhHIAEoAjoENTEuNTpNChhkZWZhdWx0X2Rv", - "dWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxhIIAEoAToFNTIwMDA6SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lv", - "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEkgASgI", - "OgR0cnVlOk0KGGRlZmF1bHRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEogASgJOgVoZWxsbzpMChdk", - "ZWZhdWx0X2J5dGVzX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGEsgASgMOgV3b3JsZDp8Ch1kZWZhdWx0X25lc3Rl", - "ZF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", - "eHRlbnNpb25zGFEgASgOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5", - "cGVzLk5lc3RlZEVudW06A0JBUjp5Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9l", - "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u", - "cxhSIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JF", - "SUdOX0JBUjp9Ch1kZWZhdWx0X2ltcG9ydF9lbnVtX2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFMgASgOMiQucHJv", - "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06CklNUE9SVF9CQVI6", - "VQoeZGVmYXVsdF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYVCABKAk6A2FiY0ICCAI6TQoW", - "ZGVmYXVsdF9jb3JkX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGFUgASgJOgMxMjNCAggBOkQKFm9uZW9mX3VpbnQz", - "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", - "aW9ucxhvIAEoDTp7Ch5vbmVvZl9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24S", - "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhwIAEoCzIt", + "bnMYLiADKAoyKi5wcm90b2J1Zl91bml0dGVzdC5SZXBlYXRlZEdyb3VwX2V4", + "dGVuc2lvbjp+CiFyZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24S", + "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgwIAMoCzIt", "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdl", - "OkQKFm9uZW9mX3N0cmluZ19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxhxIAEoCTpDChVvbmVvZl9ieXRlc19leHRl", - "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhy", - "IAEoDDpCChNteV9leHRlbnNpb25fc3RyaW5nEiUucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEZpZWxkT3JkZXJpbmdzGDIgASgJOj8KEG15X2V4dGVuc2lvbl9p", - "bnQSJS5wcm90b2J1Zl91bml0dGVzdC5UZXN0RmllbGRPcmRlcmluZ3MYBSAB", - "KAU6SwoWcGFja2VkX2ludDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFogAygFQgIQATpLChZwYWNrZWRf", + "OnMKInJlcGVhdGVkX2ZvcmVpZ25fbWVzc2FnZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgxIAMoCzIhLnByb3Rv", + "YnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlOngKIXJlcGVhdGVkX2ltcG9y", + "dF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGDIgAygLMicucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", + "LkltcG9ydE1lc3NhZ2U6eAoecmVwZWF0ZWRfbmVzdGVkX2VudW1fZXh0ZW5z", + "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMyAD", + "KA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51", + "bTptCh9yZXBlYXRlZF9mb3JlaWduX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNCADKA4yHi5wcm90b2J1", + "Zl91bml0dGVzdC5Gb3JlaWduRW51bTpyCh5yZXBlYXRlZF9pbXBvcnRfZW51", + "bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRF", + "bnVtOlEKH3JlcGVhdGVkX3N0cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg2IAMoCUICCAI6SQoX", + "cmVwZWF0ZWRfY29yZF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0QWxsRXh0ZW5zaW9ucxg3IAMoCUICCAE6gAEKH3JlcGVhdGVkX2xhenlf", + "bWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxg5IAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxU", + "eXBlcy5OZXN0ZWRNZXNzYWdlQgIoATpJChdkZWZhdWx0X2ludDMyX2V4dGVu", + "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD0g", + "ASgFOgI0MTpJChdkZWZhdWx0X2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD4gASgDOgI0MjpKChhkZWZh", + "dWx0X3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6SgoYZGVmYXVsdF91aW50NjRfZXh0", + "ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY", + "QCABKAQ6AjQ0OksKGGRlZmF1bHRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEEgASgROgMtNDU6SgoY", + "ZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu", + "VGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6AjQ2OksKGWRlZmF1bHRfZml4ZWQz", + "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVsdF9maXhlZDY0X2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEQgASgGOgI0", + "ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEUgASgPOgI0OTpNChpkZWZhdWx0", + "X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGEYgASgQOgMtNTA6SwoXZGVmYXVsdF9mbG9hdF9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhH", + "IAEoAjoENTEuNTpNChhkZWZhdWx0X2RvdWJsZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhIIAEoAToFNTIwMDA6", + "SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxFeHRlbnNpb25zGEkgASgIOgR0cnVlOk0KGGRlZmF1bHRfc3Ry", + "aW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", + "bnNpb25zGEogASgJOgVoZWxsbzpMChdkZWZhdWx0X2J5dGVzX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEsgASgM", + "OgV3b3JsZDp8Ch1kZWZhdWx0X25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFEgASgOMioucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06A0JBUjp5", + "Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91", + "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhSIAEoDjIeLnByb3RvYnVmX3Vu", + "aXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUjp9Ch1kZWZhdWx0X2lt", + "cG9ydF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGFMgASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", + "LkltcG9ydEVudW06CklNUE9SVF9CQVI6VQoeZGVmYXVsdF9zdHJpbmdfcGll", + "Y2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYVCABKAk6A2FiY0ICCAI6TQoWZGVmYXVsdF9jb3JkX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFUgASgJ", + "OgMxMjNCAggBOkQKFm9uZW9mX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhvIAEoDTp7Ch5vbmVvZl9u", + "ZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0QWxsRXh0ZW5zaW9ucxhwIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlOkQKFm9uZW9mX3N0cmluZ19leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhx", + "IAEoCTpDChVvbmVvZl9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", + "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhyIAEoDDpCChNteV9leHRlbnNpb25f", + "c3RyaW5nEiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdz", + "GDIgASgJOj8KEG15X2V4dGVuc2lvbl9pbnQSJS5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0RmllbGRPcmRlcmluZ3MYBSABKAU6SwoWcGFja2VkX2ludDMyX2V4", + "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp", + "b25zGFogAygFQgIQATpLChZwYWNrZWRfaW50NjRfZXh0ZW5zaW9uEicucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYWyADKANCAhAB", + "OkwKF3BhY2tlZF91aW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXCADKA1CAhABOkwKF3BhY2tlZF91", "aW50NjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl", - "ZEV4dGVuc2lvbnMYWyADKANCAhABOkwKF3BhY2tlZF91aW50MzJfZXh0ZW5z", + "ZEV4dGVuc2lvbnMYXSADKARCAhABOkwKF3BhY2tlZF9zaW50MzJfZXh0ZW5z", "aW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMY", - "XCADKA1CAhABOkwKF3BhY2tlZF91aW50NjRfZXh0ZW5zaW9uEicucHJvdG9i", - "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXSADKARCAhABOkwK", - "F3BhY2tlZF9zaW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdFBhY2tlZEV4dGVuc2lvbnMYXiADKBFCAhABOkwKF3BhY2tlZF9zaW50", - "NjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4", - "dGVuc2lvbnMYXyADKBJCAhABOk0KGHBhY2tlZF9maXhlZDMyX2V4dGVuc2lv", - "bhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGAg", - "AygHQgIQATpNChhwYWNrZWRfZml4ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhhIAMoBkICEAE6TgoZ", - "cGFja2VkX3NmaXhlZDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RQYWNrZWRFeHRlbnNpb25zGGIgAygPQgIQATpOChlwYWNrZWRfc2Zp", - "eGVkNjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl", - "ZEV4dGVuc2lvbnMYYyADKBBCAhABOksKFnBhY2tlZF9mbG9hdF9leHRlbnNp", - "b24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhk", - "IAMoAkICEAE6TAoXcGFja2VkX2RvdWJsZV9leHRlbnNpb24SJy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhlIAMoAUICEAE6SgoV", - "cGFja2VkX2Jvb2xfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dFBhY2tlZEV4dGVuc2lvbnMYZiADKAhCAhABOmoKFXBhY2tlZF9lbnVtX2V4", - "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp", - "b25zGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAB", - "Ok8KGHVucGFja2VkX2ludDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWiADKAVCAhAAOk8KGHVucGFj", - "a2VkX2ludDY0X2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RV", - "bnBhY2tlZEV4dGVuc2lvbnMYWyADKANCAhAAOlAKGXVucGFja2VkX3VpbnQz", - "Ml9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRF", - "eHRlbnNpb25zGFwgAygNQgIQADpQChl1bnBhY2tlZF91aW50NjRfZXh0ZW5z", + "XiADKBFCAhABOkwKF3BhY2tlZF9zaW50NjRfZXh0ZW5zaW9uEicucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXyADKBJCAhABOk0K", + "GHBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RQYWNrZWRFeHRlbnNpb25zGGAgAygHQgIQATpNChhwYWNrZWRfZml4", + "ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", + "RXh0ZW5zaW9ucxhhIAMoBkICEAE6TgoZcGFja2VkX3NmaXhlZDMyX2V4dGVu", + "c2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25z", + "GGIgAygPQgIQATpOChlwYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEicucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYYyADKBBCAhAB", + "OksKFnBhY2tlZF9mbG9hdF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAE6TAoXcGFja2VkX2Rv", + "dWJsZV9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", + "RXh0ZW5zaW9ucxhlIAMoAUICEAE6SgoVcGFja2VkX2Jvb2xfZXh0ZW5zaW9u", + "EicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZiAD", + "KAhCAhABOmoKFXBhY2tlZF9lbnVtX2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGcgAygOMh4ucHJvdG9idWZf", + "dW5pdHRlc3QuRm9yZWlnbkVudW1CAhABOk8KGHVucGFja2VkX2ludDMyX2V4", + "dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVu", + "c2lvbnMYWiADKAVCAhAAOk8KGHVucGFja2VkX2ludDY0X2V4dGVuc2lvbhIp", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWyAD", + "KANCAhAAOlAKGXVucGFja2VkX3VpbnQzMl9leHRlbnNpb24SKS5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGFwgAygNQgIQADpQ", + "Chl1bnBhY2tlZF91aW50NjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhdIAMoBEICEAA6UAoZdW5wYWNr", + "ZWRfc2ludDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RV", + "bnBhY2tlZEV4dGVuc2lvbnMYXiADKBFCAhAAOlAKGXVucGFja2VkX3NpbnQ2", + "NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRF", + "eHRlbnNpb25zGF8gAygSQgIQADpRChp1bnBhY2tlZF9maXhlZDMyX2V4dGVu", + "c2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lv", + "bnMYYCADKAdCAhAAOlEKGnVucGFja2VkX2ZpeGVkNjRfZXh0ZW5zaW9uEiku", + "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhhIAMo", + "BkICEAA6UgobdW5wYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEikucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhiIAMoD0ICEAA6", + "UgobdW5wYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5p", + "dHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhjIAMoEEICEAA6TwoYdW5w", + "YWNrZWRfZmxvYXRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVz", + "dFVucGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAA6UAoZdW5wYWNrZWRfZG91", + "YmxlX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tl", + "ZEV4dGVuc2lvbnMYZSADKAFCAhAAOk4KF3VucGFja2VkX2Jvb2xfZXh0ZW5z", "aW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9u", - "cxhdIAMoBEICEAA6UAoZdW5wYWNrZWRfc2ludDMyX2V4dGVuc2lvbhIpLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYXiADKBFC", - "AhAAOlAKGXVucGFja2VkX3NpbnQ2NF9leHRlbnNpb24SKS5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGF8gAygSQgIQADpRChp1", - "bnBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYYCADKAdCAhAAOlEKGnVucGFja2Vk", - "X2ZpeGVkNjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVu", - "cGFja2VkRXh0ZW5zaW9ucxhhIAMoBkICEAA6UgobdW5wYWNrZWRfc2ZpeGVk", - "MzJfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2Vk", - "RXh0ZW5zaW9ucxhiIAMoD0ICEAA6UgobdW5wYWNrZWRfc2ZpeGVkNjRfZXh0", - "ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5z", - "aW9ucxhjIAMoEEICEAA6TwoYdW5wYWNrZWRfZmxvYXRfZXh0ZW5zaW9uEiku", - "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhkIAMo", - "AkICEAA6UAoZdW5wYWNrZWRfZG91YmxlX2V4dGVuc2lvbhIpLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYZSADKAFCAhAAOk4K", - "F3VucGFja2VkX2Jvb2xfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdFVucGFja2VkRXh0ZW5zaW9ucxhmIAMoCEICEAA6bgoXdW5wYWNrZWRf", - "ZW51bV9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNr", - "ZWRFeHRlbnNpb25zGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWln", - "bkVudW1CAhAAQkFCDVVuaXR0ZXN0UHJvdG9IAYABAYgBAZABAfgBAaoCIUdv", - "b2dsZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3Rvcw==")); + "cxhmIAMoCEICEAA6bgoXdW5wYWNrZWRfZW51bV9leHRlbnNpb24SKS5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGcgAygOMh4u", + "cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAQkFCDVVuaXR0ZXN0", + "UHJvdG9IAYABAYgBAZABAfgBAaoCIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMu", + "VGVzdFByb3Rvcw==")); pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { descriptor = root; internal__static_protobuf_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0]; internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder>(internal__static_protobuf_unittest_TestAllTypes__Descriptor, - new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "OptionalPublicImportMessage", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", }); + new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "OptionalPublicImportMessage", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofField", }); internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor, @@ -1000,7 +1005,7 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor = Descriptor.MessageTypes[1]; internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder>(internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor, - new string[] { "Child", "Payload", }); + new string[] { "Child", "Payload", "RepeatedChild", }); internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor = Descriptor.MessageTypes[2]; internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder>(internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor, @@ -1009,67 +1014,71 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder>(internal__static_protobuf_unittest_ForeignMessage__Descriptor, new string[] { "C", }); - internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[4]; + internal__static_protobuf_unittest_TestReservedFields__Descriptor = Descriptor.MessageTypes[4]; + internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder>(internal__static_protobuf_unittest_TestReservedFields__Descriptor, + new string[] { }); + internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[5]; internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder>(internal__static_protobuf_unittest_TestAllExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[5]; + internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[6]; internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder>(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[6]; + internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[7]; internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder>(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_TestNestedExtension__Descriptor = Descriptor.MessageTypes[7]; + internal__static_protobuf_unittest_TestNestedExtension__Descriptor = Descriptor.MessageTypes[8]; internal__static_protobuf_unittest_TestNestedExtension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtension, global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Builder>(internal__static_protobuf_unittest_TestNestedExtension__Descriptor, new string[] { }); global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Test = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.NestedStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[8]; + internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[9]; internal__static_protobuf_unittest_TestRequired__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder>(internal__static_protobuf_unittest_TestRequired__Descriptor, new string[] { "A", "Dummy2", "B", "Dummy4", "Dummy5", "Dummy6", "Dummy7", "Dummy8", "Dummy9", "Dummy10", "Dummy11", "Dummy12", "Dummy13", "Dummy14", "Dummy15", "Dummy16", "Dummy17", "Dummy18", "Dummy19", "Dummy20", "Dummy21", "Dummy22", "Dummy23", "Dummy24", "Dummy25", "Dummy26", "Dummy27", "Dummy28", "Dummy29", "Dummy30", "Dummy31", "Dummy32", "C", }); global::Google.ProtocolBuffers.TestProtos.TestRequired.Single = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[9]; + internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[10]; internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder>(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor, new string[] { "OptionalMessage", "RepeatedMessage", "Dummy", }); - internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[10]; + internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[11]; internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder>(internal__static_protobuf_unittest_TestForeignNested__Descriptor, new string[] { "ForeignNested", }); - internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[11]; + internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[12]; internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder>(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[12]; + internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[13]; internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder>(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor = Descriptor.MessageTypes[13]; + internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor = Descriptor.MessageTypes[14]; internal__static_protobuf_unittest_TestMultipleExtensionRanges__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges, global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.Builder>(internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[14]; + internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[15]; internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder>(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor, new string[] { "A", "Bb", }); - internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[15]; + internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[16]; internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder>(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor, new string[] { "A", "I", }); - internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[16]; + internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[17]; internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder>(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor, new string[] { "Bb", }); - internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[17]; + internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[18]; internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder>(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor, new string[] { "A", "OptionalInt32", }); - internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[18]; + internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[19]; internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor, new string[] { "A", "Foo", "Bar", }); @@ -1081,15 +1090,15 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_TestEagerMessage__Descriptor = Descriptor.MessageTypes[19]; + internal__static_protobuf_unittest_TestEagerMessage__Descriptor = Descriptor.MessageTypes[20]; internal__static_protobuf_unittest_TestEagerMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEagerMessage, global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.Builder>(internal__static_protobuf_unittest_TestEagerMessage__Descriptor, new string[] { "SubMessage", }); - internal__static_protobuf_unittest_TestLazyMessage__Descriptor = Descriptor.MessageTypes[20]; + internal__static_protobuf_unittest_TestLazyMessage__Descriptor = Descriptor.MessageTypes[21]; internal__static_protobuf_unittest_TestLazyMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLazyMessage, global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.Builder>(internal__static_protobuf_unittest_TestLazyMessage__Descriptor, new string[] { "SubMessage", }); - internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[21]; + internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[22]; internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor, new string[] { "OptionalNestedMessage", }); @@ -1097,11 +1106,11 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor, new string[] { "NestedmessageRepeatedInt32", "NestedmessageRepeatedForeignmessage", }); - internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[22]; + internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[23]; internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder>(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor, new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "StringPieceField", "CordField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedStringPieceField", "RepeatedCordField", }); - internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[23]; + internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[24]; internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder>(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor, new string[] { "MyString", "MyInt", "MyFloat", "OptionalNestedMessage", }); @@ -1109,59 +1118,59 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor, new string[] { "Oo", "Bb", }); - internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[24]; + internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[25]; internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder>(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor, new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "ReallySmallInt32", "ReallySmallInt64", "Utf8String", "ZeroFloat", "OneFloat", "SmallFloat", "NegativeOneFloat", "NegativeFloat", "LargeFloat", "SmallNegativeFloat", "InfDouble", "NegInfDouble", "NanDouble", "InfFloat", "NegInfFloat", "NanFloat", "CppTrigraph", "StringWithZero", "BytesWithZero", "StringPieceWithZero", "CordWithZero", "ReplacementString", }); - internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[25]; + internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[26]; internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder>(internal__static_protobuf_unittest_SparseEnumMessage__Descriptor, new string[] { "SparseEnum", }); - internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[26]; + internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[27]; internal__static_protobuf_unittest_OneString__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder>(internal__static_protobuf_unittest_OneString__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_MoreString__Descriptor = Descriptor.MessageTypes[27]; + internal__static_protobuf_unittest_MoreString__Descriptor = Descriptor.MessageTypes[28]; internal__static_protobuf_unittest_MoreString__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreString, global::Google.ProtocolBuffers.TestProtos.MoreString.Builder>(internal__static_protobuf_unittest_MoreString__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[28]; + internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[29]; internal__static_protobuf_unittest_OneBytes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneBytes, global::Google.ProtocolBuffers.TestProtos.OneBytes.Builder>(internal__static_protobuf_unittest_OneBytes__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_MoreBytes__Descriptor = Descriptor.MessageTypes[29]; + internal__static_protobuf_unittest_MoreBytes__Descriptor = Descriptor.MessageTypes[30]; internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreBytes, global::Google.ProtocolBuffers.TestProtos.MoreBytes.Builder>(internal__static_protobuf_unittest_MoreBytes__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Int32Message__Descriptor = Descriptor.MessageTypes[30]; + internal__static_protobuf_unittest_Int32Message__Descriptor = Descriptor.MessageTypes[31]; internal__static_protobuf_unittest_Int32Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int32Message, global::Google.ProtocolBuffers.TestProtos.Int32Message.Builder>(internal__static_protobuf_unittest_Int32Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Uint32Message__Descriptor = Descriptor.MessageTypes[31]; + internal__static_protobuf_unittest_Uint32Message__Descriptor = Descriptor.MessageTypes[32]; internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint32Message, global::Google.ProtocolBuffers.TestProtos.Uint32Message.Builder>(internal__static_protobuf_unittest_Uint32Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Int64Message__Descriptor = Descriptor.MessageTypes[32]; + internal__static_protobuf_unittest_Int64Message__Descriptor = Descriptor.MessageTypes[33]; internal__static_protobuf_unittest_Int64Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int64Message, global::Google.ProtocolBuffers.TestProtos.Int64Message.Builder>(internal__static_protobuf_unittest_Int64Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Uint64Message__Descriptor = Descriptor.MessageTypes[33]; + internal__static_protobuf_unittest_Uint64Message__Descriptor = Descriptor.MessageTypes[34]; internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint64Message, global::Google.ProtocolBuffers.TestProtos.Uint64Message.Builder>(internal__static_protobuf_unittest_Uint64Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_BoolMessage__Descriptor = Descriptor.MessageTypes[34]; + internal__static_protobuf_unittest_BoolMessage__Descriptor = Descriptor.MessageTypes[35]; internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BoolMessage, global::Google.ProtocolBuffers.TestProtos.BoolMessage.Builder>(internal__static_protobuf_unittest_BoolMessage__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_TestOneof__Descriptor = Descriptor.MessageTypes[35]; + internal__static_protobuf_unittest_TestOneof__Descriptor = Descriptor.MessageTypes[36]; internal__static_protobuf_unittest_TestOneof__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof, global::Google.ProtocolBuffers.TestProtos.TestOneof.Builder>(internal__static_protobuf_unittest_TestOneof__Descriptor, - new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", }); + new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", "Foo", }); internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestOneof_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor, new string[] { "A", "B", }); - internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor = Descriptor.MessageTypes[36]; + internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor = Descriptor.MessageTypes[37]; internal__static_protobuf_unittest_TestOneofBackwardsCompatible__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor, new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", }); @@ -1169,10 +1178,10 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor, new string[] { "A", "B", }); - internal__static_protobuf_unittest_TestOneof2__Descriptor = Descriptor.MessageTypes[37]; + internal__static_protobuf_unittest_TestOneof2__Descriptor = Descriptor.MessageTypes[38]; internal__static_protobuf_unittest_TestOneof2__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Builder>(internal__static_protobuf_unittest_TestOneof2__Descriptor, - new string[] { "FooInt", "FooString", "FooCord", "FooStringPiece", "FooBytes", "FooEnum", "FooMessage", "FooGroup", "FooLazyMessage", "BarInt", "BarString", "BarCord", "BarStringPiece", "BarBytes", "BarEnum", "BazInt", "BazString", }); + new string[] { "FooInt", "FooString", "FooCord", "FooStringPiece", "FooBytes", "FooEnum", "FooMessage", "FooGroup", "FooLazyMessage", "BarInt", "BarString", "BarCord", "BarStringPiece", "BarBytes", "BarEnum", "BazInt", "BazString", "Foo", "Bar", }); internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof2__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestOneof2_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor, @@ -1181,31 +1190,31 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestOneof2_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor, new string[] { "QuxInt", "CorgeInt", }); - internal__static_protobuf_unittest_TestRequiredOneof__Descriptor = Descriptor.MessageTypes[38]; + internal__static_protobuf_unittest_TestRequiredOneof__Descriptor = Descriptor.MessageTypes[39]; internal__static_protobuf_unittest_TestRequiredOneof__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Builder>(internal__static_protobuf_unittest_TestRequiredOneof__Descriptor, - new string[] { "FooInt", "FooString", "FooMessage", }); + new string[] { "FooInt", "FooString", "FooMessage", "Foo", }); internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestRequiredOneof__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor, new string[] { "RequiredDouble", }); - internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[39]; + internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[40]; internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder>(internal__static_protobuf_unittest_TestPackedTypes__Descriptor, new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", }); - internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[40]; + internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[41]; internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder>(internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor, new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", }); - internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[41]; + internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[42]; internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder>(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[42]; + internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[43]; internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder>(internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[43]; + internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[44]; internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor, new string[] { "ScalarExtension", "EnumExtension", "DynamicEnumExtension", "MessageExtension", "DynamicMessageExtension", "RepeatedExtension", "PackedExtension", }); @@ -1213,11 +1222,11 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor, new string[] { "DynamicField", }); - internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor = Descriptor.MessageTypes[44]; + internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor = Descriptor.MessageTypes[45]; internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes, global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.Builder>(internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor, new string[] { "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64", }); - internal__static_protobuf_unittest_TestParsingMerge__Descriptor = Descriptor.MessageTypes[45]; + internal__static_protobuf_unittest_TestParsingMerge__Descriptor = Descriptor.MessageTypes[46]; internal__static_protobuf_unittest_TestParsingMerge__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Builder>(internal__static_protobuf_unittest_TestParsingMerge__Descriptor, new string[] { "RequiredAllTypes", "OptionalAllTypes", "RepeatedAllTypes", "OptionalGroup", "RepeatedGroup", }); @@ -1243,31 +1252,31 @@ namespace Google.ProtocolBuffers.TestProtos { new string[] { "RepeatedGroupAllTypes", }); global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.OptionalExt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.RepeatedExt = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor = Descriptor.MessageTypes[46]; + internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor = Descriptor.MessageTypes[47]; internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage, global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.Builder>(internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[47]; + internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[48]; internal__static_protobuf_unittest_FooRequest__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder>(internal__static_protobuf_unittest_FooRequest__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[48]; + internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[49]; internal__static_protobuf_unittest_FooResponse__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder>(internal__static_protobuf_unittest_FooResponse__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooClientMessage__Descriptor = Descriptor.MessageTypes[49]; + internal__static_protobuf_unittest_FooClientMessage__Descriptor = Descriptor.MessageTypes[50]; internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooClientMessage, global::Google.ProtocolBuffers.TestProtos.FooClientMessage.Builder>(internal__static_protobuf_unittest_FooClientMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooServerMessage__Descriptor = Descriptor.MessageTypes[50]; + internal__static_protobuf_unittest_FooServerMessage__Descriptor = Descriptor.MessageTypes[51]; internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooServerMessage, global::Google.ProtocolBuffers.TestProtos.FooServerMessage.Builder>(internal__static_protobuf_unittest_FooServerMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[51]; + internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[52]; internal__static_protobuf_unittest_BarRequest__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder>(internal__static_protobuf_unittest_BarRequest__Descriptor, new string[] { }); - internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[52]; + internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[53]; internal__static_protobuf_unittest_BarResponse__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder>(internal__static_protobuf_unittest_BarResponse__Descriptor, new string[] { }); @@ -2281,6 +2290,19 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object oneofField_; + public enum OneofFieldOneofCase { + OneofUint32 = 111, + OneofNestedMessage = 112, + OneofString = 113, + OneofBytes = 114, + None = 0, + } + private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; + public OneofFieldOneofCase OneofFieldCase { + get { return oneofFieldCase_; } + } + public const int OptionalInt32FieldNumber = 1; private bool hasOptionalInt32; private int optionalInt32_; @@ -3042,43 +3064,35 @@ namespace Google.ProtocolBuffers.TestProtos { } public const int OneofUint32FieldNumber = 111; - private bool hasOneofUint32; - private uint oneofUint32_; public bool HasOneofUint32 { - get { return hasOneofUint32; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return oneofUint32_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } } public const int OneofNestedMessageFieldNumber = 112; - private bool hasOneofNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage oneofNestedMessage_; public bool HasOneofNestedMessage { - get { return hasOneofNestedMessage; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return oneofNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public const int OneofStringFieldNumber = 113; - private bool hasOneofString; - private string oneofString_ = ""; public bool HasOneofString { - get { return hasOneofString; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return oneofString_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } } public const int OneofBytesFieldNumber = 114; - private bool hasOneofBytes; - private pb::ByteString oneofBytes_ = pb::ByteString.Empty; public bool HasOneofBytes { - get { return hasOneofBytes; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return oneofBytes_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; } } public override bool IsInitialized { @@ -3303,16 +3317,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { output.WriteString(85, field_names[2], DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { output.WriteUInt32(111, field_names[23], OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { output.WriteMessage(112, field_names[21], OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { output.WriteString(113, field_names[22], OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { output.WriteBytes(114, field_names[20], OneofBytes); } UnknownFields.WriteTo(output); @@ -3637,16 +3651,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { size += pb::CodedOutputStream.ComputeStringSize(113, OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { size += pb::CodedOutputStream.ComputeBytesSize(114, OneofBytes); } size += UnknownFields.SerializedSize; @@ -4009,17 +4023,24 @@ namespace Google.ProtocolBuffers.TestProtos { if (other.HasDefaultCord) { DefaultCord = other.DefaultCord; } - if (other.HasOneofUint32) { - OneofUint32 = other.OneofUint32; - } - if (other.HasOneofNestedMessage) { - MergeOneofNestedMessage(other.OneofNestedMessage); - } - if (other.HasOneofString) { - OneofString = other.OneofString; - } - if (other.HasOneofBytes) { - OneofBytes = other.OneofBytes; + switch (other.OneofFieldCase) { + case OneofFieldOneofCase.OneofUint32: { + SetOneofUint32(other.OneofUint32); + break; + } + case OneofFieldOneofCase.OneofNestedMessage: { + MergeOneofNestedMessage(other.OneofNestedMessage); + break; + } + case OneofFieldOneofCase.OneofString: { + SetOneofString(other.OneofString); + break; + } + case OneofFieldOneofCase.OneofBytes: { + SetOneofBytes(other.OneofBytes); + break; + } + case OneofFieldOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -4470,24 +4491,37 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 888: { - result.hasOneofUint32 = input.ReadUInt32(ref result.oneofUint32_); + uint value = 0; + if (input.ReadUInt32(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; + } break; } case 898: { global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(); - if (result.hasOneofNestedMessage) { + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { subBuilder.MergeFrom(OneofNestedMessage); } input.ReadMessage(subBuilder, extensionRegistry); - OneofNestedMessage = subBuilder.BuildPartial(); + result.oneofField_ = subBuilder.BuildPartial(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; break; } case 906: { - result.hasOneofString = input.ReadString(ref result.oneofString_); + string value = ""; + if (input.ReadString(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; + } break; } case 914: { - result.hasOneofBytes = input.ReadBytes(ref result.oneofBytes_); + pb::ByteString value = pb::ByteString.Empty; + if (input.ReadBytes(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; + } break; } } @@ -6377,104 +6411,119 @@ namespace Google.ProtocolBuffers.TestProtos { } public bool HasOneofUint32 { - get { return result.hasOneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return result.OneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; } set { SetOneofUint32(value); } } public Builder SetOneofUint32(uint value) { PrepareBuilder(); - result.hasOneofUint32 = true; - result.oneofUint32_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; return this; } public Builder ClearOneofUint32() { PrepareBuilder(); - result.hasOneofUint32 = false; - result.oneofUint32_ = 0; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofNestedMessage { - get { return result.hasOneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return result.OneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } set { SetOneofNestedMessage(value); } } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = value; return this; } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = builderForValue.Build(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = builderForValue.Build(); return this; } public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasOneofNestedMessage && - result.oneofNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) { - result.oneofNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.oneofNestedMessage_).MergeFrom(value).BuildPartial(); + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage && + result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) { + result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial(); } else { - result.oneofNestedMessage_ = value; + result.oneofField_ = value; } - result.hasOneofNestedMessage = true; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; return this; } public Builder ClearOneofNestedMessage() { - PrepareBuilder(); - result.hasOneofNestedMessage = false; - result.oneofNestedMessage_ = null; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { + PrepareBuilder(); + result.oneofFieldCase_ = OneofFieldOneofCase.None; + result.oneofField_ = null; + } return this; } public bool HasOneofString { - get { return result.hasOneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return result.OneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; } set { SetOneofString(value); } } public Builder SetOneofString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofString = true; - result.oneofString_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; return this; } public Builder ClearOneofString() { PrepareBuilder(); - result.hasOneofString = false; - result.oneofString_ = ""; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofBytes { - get { return result.hasOneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return result.OneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) result.oneofField_ : pb::ByteString.Empty; } set { SetOneofBytes(value); } } public Builder SetOneofBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofBytes = true; - result.oneofBytes_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; return this; } public Builder ClearOneofBytes() { PrepareBuilder(); - result.hasOneofBytes = false; - result.oneofBytes_ = pb::ByteString.Empty; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } + return this; + } + + public OneofFieldOneofCase OneofFieldCase { + get { return result.oneofFieldCase_; } + } + public Builder ClearOneofField() { + PrepareBuilder(); + result.oneofField_ = null; + result.oneofFieldCase_ = OneofFieldOneofCase.None; return this; } } @@ -6487,8 +6536,8 @@ namespace Google.ProtocolBuffers.TestProtos { public sealed partial class NestedTestAllTypes : pb::GeneratedMessage<NestedTestAllTypes, NestedTestAllTypes.Builder> { private NestedTestAllTypes() { } private static readonly NestedTestAllTypes defaultInstance = new NestedTestAllTypes().MakeReadOnly(); - private static readonly string[] _nestedTestAllTypesFieldNames = new string[] { "child", "payload" }; - private static readonly uint[] _nestedTestAllTypesFieldTags = new uint[] { 10, 18 }; + private static readonly string[] _nestedTestAllTypesFieldNames = new string[] { "child", "payload", "repeated_child" }; + private static readonly uint[] _nestedTestAllTypesFieldTags = new uint[] { 10, 18, 26 }; public static NestedTestAllTypes DefaultInstance { get { return defaultInstance; } } @@ -6529,6 +6578,18 @@ namespace Google.ProtocolBuffers.TestProtos { get { return payload_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } } + public const int RepeatedChildFieldNumber = 3; + private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> repeatedChild_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes>(); + public scg::IList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList { + get { return repeatedChild_; } + } + public int RepeatedChildCount { + get { return repeatedChild_.Count; } + } + public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) { + return repeatedChild_[index]; + } + public override bool IsInitialized { get { return true; @@ -6544,6 +6605,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasPayload) { output.WriteMessage(2, field_names[1], Payload); } + if (repeatedChild_.Count > 0) { + output.WriteMessageArray(3, field_names[2], repeatedChild_); + } UnknownFields.WriteTo(output); } @@ -6567,6 +6631,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasPayload) { size += pb::CodedOutputStream.ComputeMessageSize(2, Payload); } + foreach (global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes element in RepeatedChildList) { + size += pb::CodedOutputStream.ComputeMessageSize(3, element); + } size += UnknownFields.SerializedSize; memoizedSerializedSize = size; return size; @@ -6602,6 +6669,7 @@ namespace Google.ProtocolBuffers.TestProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } private NestedTestAllTypes MakeReadOnly() { + repeatedChild_.MakeReadOnly(); return this; } @@ -6695,6 +6763,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (other.HasPayload) { MergePayload(other.Payload); } + if (other.repeatedChild_.Count != 0) { + result.repeatedChild_.Add(other.repeatedChild_); + } this.MergeUnknownFields(other.UnknownFields); return this; } @@ -6756,6 +6827,10 @@ namespace Google.ProtocolBuffers.TestProtos { Payload = subBuilder.BuildPartial(); break; } + case 26: { + input.ReadMessageArray(tag, field_name, result.repeatedChild_, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance, extensionRegistry); + break; + } } } @@ -6845,6 +6920,50 @@ namespace Google.ProtocolBuffers.TestProtos { result.payload_ = null; return this; } + + public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList { + get { return PrepareBuilder().repeatedChild_; } + } + public int RepeatedChildCount { + get { return result.RepeatedChildCount; } + } + public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) { + return result.GetRepeatedChild(index); + } + public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.repeatedChild_[index] = value; + return this; + } + public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.repeatedChild_[index] = builderForValue.Build(); + return this; + } + public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.repeatedChild_.Add(value); + return this; + } + public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.repeatedChild_.Add(builderForValue.Build()); + return this; + } + public Builder AddRangeRepeatedChild(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> values) { + PrepareBuilder(); + result.repeatedChild_.Add(values); + return this; + } + public Builder ClearRepeatedChild() { + PrepareBuilder(); + result.repeatedChild_.Clear(); + return this; + } } static NestedTestAllTypes() { object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); @@ -7408,6 +7527,238 @@ namespace Google.ProtocolBuffers.TestProtos { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public sealed partial class TestReservedFields : pb::GeneratedMessage<TestReservedFields, TestReservedFields.Builder> { + private TestReservedFields() { } + private static readonly TestReservedFields defaultInstance = new TestReservedFields().MakeReadOnly(); + private static readonly string[] _testReservedFieldsFieldNames = new string[] { }; + private static readonly uint[] _testReservedFieldsFieldTags = new uint[] { }; + public static TestReservedFields DefaultInstance { + get { return defaultInstance; } + } + + public override TestReservedFields DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override TestReservedFields ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable<TestReservedFields, TestReservedFields.Builder> InternalFieldAccessors { + get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + CalcSerializedSize(); + string[] field_names = _testReservedFieldsFieldNames; + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + return CalcSerializedSize(); + } + } + + private int CalcSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + public static TestReservedFields ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestReservedFields ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestReservedFields ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private TestReservedFields MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(TestReservedFields prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public sealed partial class Builder : pb::GeneratedBuilder<TestReservedFields, Builder> { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(TestReservedFields cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private TestReservedFields result; + + private TestReservedFields PrepareBuilder() { + if (resultIsReadOnly) { + TestReservedFields original = result; + result = new TestReservedFields(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override TestReservedFields MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Descriptor; } + } + + public override TestReservedFields DefaultInstanceForType { + get { return global::Google.ProtocolBuffers.TestProtos.TestReservedFields.DefaultInstance; } + } + + public override TestReservedFields BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is TestReservedFields) { + return MergeFrom((TestReservedFields) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(TestReservedFields other) { + if (other == global::Google.ProtocolBuffers.TestProtos.TestReservedFields.DefaultInstance) return this; + PrepareBuilder(); + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_testReservedFieldsFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _testReservedFieldsFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + } + static TestReservedFields() { + object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public sealed partial class TestAllExtensions : pb::ExtendableMessage<TestAllExtensions, TestAllExtensions.Builder> { private TestAllExtensions() { } private static readonly TestAllExtensions defaultInstance = new TestAllExtensions().MakeReadOnly(); @@ -21288,44 +21639,49 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooMessage = 3, + FooGroup = 4, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooMessageFieldNumber = 3; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } } public const int FooGroupFieldNumber = 4; - private bool hasFooGroup; - private global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup fooGroup_; public bool HasFooGroup { - get { return hasFooGroup; } + get { return fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup { - get { return fooGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } } public override bool IsInitialized { @@ -21337,16 +21693,16 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testOneofFieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[0], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[2], FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(3, field_names[1], FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { output.WriteGroup(4, field_names[3], FooGroup); } UnknownFields.WriteTo(output); @@ -21366,16 +21722,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { size += pb::CodedOutputStream.ComputeGroupSize(4, FooGroup); } size += UnknownFields.SerializedSize; @@ -21500,17 +21856,24 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestOneof other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); - } - if (other.HasFooGroup) { - MergeFooGroup(other.FooGroup); + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.FooGroup: { + MergeFooGroup(other.FooGroup); + break; + } + case FooOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -21556,29 +21919,39 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } case 35: { global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(); - if (result.hasFooGroup) { + if (result.fooCase_ == FooOneofCase.FooGroup) { subBuilder.MergeFrom(FooGroup); } input.ReadGroup(4, subBuilder, extensionRegistry); - FooGroup = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooGroup; break; } } @@ -21592,123 +21965,139 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { - PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooGroup { - get { return result.hasFooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup { - get { return result.FooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } set { SetFooGroup(value); } } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = value; + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = value; return this; } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooGroup && - result.fooGroup_ != global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) { - result.fooGroup_ = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(result.fooGroup_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooGroup && + result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial(); } else { - result.fooGroup_ = value; + result.foo_ = value; } - result.hasFooGroup = true; + result.fooCase_ = FooOneofCase.FooGroup; return this; } public Builder ClearFooGroup() { + if (result.fooCase_ == FooOneofCase.FooGroup) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } + return this; + } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { PrepareBuilder(); - result.hasFooGroup = false; - result.fooGroup_ = null; + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; return this; } } @@ -23191,154 +23580,157 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooCord = 3, + FooStringPiece = 4, + FooBytes = 5, + FooEnum = 6, + FooMessage = 7, + FooGroup = 8, + FooLazyMessage = 11, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + + private object bar_; + public enum BarOneofCase { + BarInt = 12, + BarString = 13, + BarCord = 14, + BarStringPiece = 15, + BarBytes = 16, + BarEnum = 17, + None = 0, + } + private BarOneofCase barCase_ = BarOneofCase.None; + public BarOneofCase BarCase { + get { return barCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooCordFieldNumber = 3; - private bool hasFooCord; - private string fooCord_ = ""; public bool HasFooCord { - get { return hasFooCord; } + get { return fooCase_ == FooOneofCase.FooCord; } } public string FooCord { - get { return fooCord_; } + get { return fooCase_ == FooOneofCase.FooCord ? (string) foo_ : ""; } } public const int FooStringPieceFieldNumber = 4; - private bool hasFooStringPiece; - private string fooStringPiece_ = ""; public bool HasFooStringPiece { - get { return hasFooStringPiece; } + get { return fooCase_ == FooOneofCase.FooStringPiece; } } public string FooStringPiece { - get { return fooStringPiece_; } + get { return fooCase_ == FooOneofCase.FooStringPiece ? (string) foo_ : ""; } } public const int FooBytesFieldNumber = 5; - private bool hasFooBytes; - private pb::ByteString fooBytes_ = pb::ByteString.Empty; public bool HasFooBytes { - get { return hasFooBytes; } + get { return fooCase_ == FooOneofCase.FooBytes; } } public pb::ByteString FooBytes { - get { return fooBytes_; } + get { return fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) foo_ : pb::ByteString.Empty; } } public const int FooEnumFieldNumber = 6; - private bool hasFooEnum; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum fooEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; public bool HasFooEnum { - get { return hasFooEnum; } + get { return fooCase_ == FooOneofCase.FooEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum { - get { return fooEnum_; } + get { return fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; } } public const int FooMessageFieldNumber = 7; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } } public const int FooGroupFieldNumber = 8; - private bool hasFooGroup; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup fooGroup_; public bool HasFooGroup { - get { return hasFooGroup; } + get { return fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup { - get { return fooGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } } public const int FooLazyMessageFieldNumber = 11; - private bool hasFooLazyMessage; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage fooLazyMessage_; public bool HasFooLazyMessage { - get { return hasFooLazyMessage; } + get { return fooCase_ == FooOneofCase.FooLazyMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage { - get { return fooLazyMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } } public const int BarIntFieldNumber = 12; - private bool hasBarInt; - private int barInt_ = 5; public bool HasBarInt { - get { return hasBarInt; } + get { return barCase_ == BarOneofCase.BarInt; } } public int BarInt { - get { return barInt_; } + get { return barCase_ == BarOneofCase.BarInt ? (int) bar_ : 5; } } public const int BarStringFieldNumber = 13; - private bool hasBarString; - private string barString_ = "STRING"; public bool HasBarString { - get { return hasBarString; } + get { return barCase_ == BarOneofCase.BarString; } } public string BarString { - get { return barString_; } + get { return barCase_ == BarOneofCase.BarString ? (string) bar_ : "STRING"; } } public const int BarCordFieldNumber = 14; - private bool hasBarCord; - private string barCord_ = "CORD"; public bool HasBarCord { - get { return hasBarCord; } + get { return barCase_ == BarOneofCase.BarCord; } } public string BarCord { - get { return barCord_; } + get { return barCase_ == BarOneofCase.BarCord ? (string) bar_ : "CORD"; } } public const int BarStringPieceFieldNumber = 15; - private bool hasBarStringPiece; - private string barStringPiece_ = "SPIECE"; public bool HasBarStringPiece { - get { return hasBarStringPiece; } + get { return barCase_ == BarOneofCase.BarStringPiece; } } public string BarStringPiece { - get { return barStringPiece_; } + get { return barCase_ == BarOneofCase.BarStringPiece ? (string) bar_ : "SPIECE"; } } public const int BarBytesFieldNumber = 16; - private bool hasBarBytes; - private pb::ByteString barBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; public bool HasBarBytes { - get { return hasBarBytes; } + get { return barCase_ == BarOneofCase.BarBytes; } } public pb::ByteString BarBytes { - get { return barBytes_; } + get { return barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; } } public const int BarEnumFieldNumber = 17; - private bool hasBarEnum; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum barEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; public bool HasBarEnum { - get { return hasBarEnum; } + get { return barCase_ == BarOneofCase.BarEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum { - get { return barEnum_; } + get { return barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; } } public const int BazIntFieldNumber = 18; @@ -23370,49 +23762,49 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testOneof2FieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[11], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[14], FooString); } - if (hasFooCord) { + if (fooCase_ == FooOneofCase.FooCord) { output.WriteString(3, field_names[9], FooCord); } - if (hasFooStringPiece) { + if (fooCase_ == FooOneofCase.FooStringPiece) { output.WriteString(4, field_names[15], FooStringPiece); } - if (hasFooBytes) { + if (fooCase_ == FooOneofCase.FooBytes) { output.WriteBytes(5, field_names[8], FooBytes); } - if (hasFooEnum) { + if (fooCase_ == FooOneofCase.FooEnum) { output.WriteEnum(6, field_names[10], (int) FooEnum, FooEnum); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(7, field_names[13], FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { output.WriteGroup(8, field_names[16], FooGroup); } - if (hasFooLazyMessage) { + if (fooCase_ == FooOneofCase.FooLazyMessage) { output.WriteMessage(11, field_names[12], FooLazyMessage); } - if (hasBarInt) { + if (barCase_ == BarOneofCase.BarInt) { output.WriteInt32(12, field_names[3], BarInt); } - if (hasBarString) { + if (barCase_ == BarOneofCase.BarString) { output.WriteString(13, field_names[4], BarString); } - if (hasBarCord) { + if (barCase_ == BarOneofCase.BarCord) { output.WriteString(14, field_names[1], BarCord); } - if (hasBarStringPiece) { + if (barCase_ == BarOneofCase.BarStringPiece) { output.WriteString(15, field_names[5], BarStringPiece); } - if (hasBarBytes) { + if (barCase_ == BarOneofCase.BarBytes) { output.WriteBytes(16, field_names[0], BarBytes); } - if (hasBarEnum) { + if (barCase_ == BarOneofCase.BarEnum) { output.WriteEnum(17, field_names[2], (int) BarEnum, BarEnum); } if (hasBazInt) { @@ -23438,49 +23830,49 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooCord) { + if (fooCase_ == FooOneofCase.FooCord) { size += pb::CodedOutputStream.ComputeStringSize(3, FooCord); } - if (hasFooStringPiece) { + if (fooCase_ == FooOneofCase.FooStringPiece) { size += pb::CodedOutputStream.ComputeStringSize(4, FooStringPiece); } - if (hasFooBytes) { + if (fooCase_ == FooOneofCase.FooBytes) { size += pb::CodedOutputStream.ComputeBytesSize(5, FooBytes); } - if (hasFooEnum) { + if (fooCase_ == FooOneofCase.FooEnum) { size += pb::CodedOutputStream.ComputeEnumSize(6, (int) FooEnum); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(7, FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { size += pb::CodedOutputStream.ComputeGroupSize(8, FooGroup); } - if (hasFooLazyMessage) { + if (fooCase_ == FooOneofCase.FooLazyMessage) { size += pb::CodedOutputStream.ComputeMessageSize(11, FooLazyMessage); } - if (hasBarInt) { + if (barCase_ == BarOneofCase.BarInt) { size += pb::CodedOutputStream.ComputeInt32Size(12, BarInt); } - if (hasBarString) { + if (barCase_ == BarOneofCase.BarString) { size += pb::CodedOutputStream.ComputeStringSize(13, BarString); } - if (hasBarCord) { + if (barCase_ == BarOneofCase.BarCord) { size += pb::CodedOutputStream.ComputeStringSize(14, BarCord); } - if (hasBarStringPiece) { + if (barCase_ == BarOneofCase.BarStringPiece) { size += pb::CodedOutputStream.ComputeStringSize(15, BarStringPiece); } - if (hasBarBytes) { + if (barCase_ == BarOneofCase.BarBytes) { size += pb::CodedOutputStream.ComputeBytesSize(16, BarBytes); } - if (hasBarEnum) { + if (barCase_ == BarOneofCase.BarEnum) { size += pb::CodedOutputStream.ComputeEnumSize(17, (int) BarEnum); } if (hasBazInt) { @@ -23611,57 +24003,78 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestOneof2 other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof2.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooCord) { - FooCord = other.FooCord; - } - if (other.HasFooStringPiece) { - FooStringPiece = other.FooStringPiece; - } - if (other.HasFooBytes) { - FooBytes = other.FooBytes; - } - if (other.HasFooEnum) { - FooEnum = other.FooEnum; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); - } - if (other.HasFooGroup) { - MergeFooGroup(other.FooGroup); - } - if (other.HasFooLazyMessage) { - MergeFooLazyMessage(other.FooLazyMessage); - } - if (other.HasBarInt) { - BarInt = other.BarInt; - } - if (other.HasBarString) { - BarString = other.BarString; - } - if (other.HasBarCord) { - BarCord = other.BarCord; - } - if (other.HasBarStringPiece) { - BarStringPiece = other.BarStringPiece; - } - if (other.HasBarBytes) { - BarBytes = other.BarBytes; - } - if (other.HasBarEnum) { - BarEnum = other.BarEnum; - } if (other.HasBazInt) { BazInt = other.BazInt; } if (other.HasBazString) { BazString = other.BazString; } + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooCord: { + SetFooCord(other.FooCord); + break; + } + case FooOneofCase.FooStringPiece: { + SetFooStringPiece(other.FooStringPiece); + break; + } + case FooOneofCase.FooBytes: { + SetFooBytes(other.FooBytes); + break; + } + case FooOneofCase.FooEnum: { + SetFooEnum(other.FooEnum); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.FooGroup: { + MergeFooGroup(other.FooGroup); + break; + } + case FooOneofCase.FooLazyMessage: { + MergeFooLazyMessage(other.FooLazyMessage); + break; + } + case FooOneofCase.None: { break; } + } + switch (other.BarCase) { + case BarOneofCase.BarInt: { + SetBarInt(other.BarInt); + break; + } + case BarOneofCase.BarString: { + SetBarString(other.BarString); + break; + } + case BarOneofCase.BarCord: { + SetBarCord(other.BarCord); + break; + } + case BarOneofCase.BarStringPiece: { + SetBarStringPiece(other.BarStringPiece); + break; + } + case BarOneofCase.BarBytes: { + SetBarBytes(other.BarBytes); + break; + } + case BarOneofCase.BarEnum: { + SetBarEnum(other.BarEnum); + break; + } + case BarOneofCase.None: { break; } + } this.MergeUnknownFields(other.UnknownFields); return this; } @@ -23706,29 +24119,51 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { - result.hasFooCord = input.ReadString(ref result.fooCord_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooCord; + } break; } case 34: { - result.hasFooStringPiece = input.ReadString(ref result.fooStringPiece_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooStringPiece; + } break; } case 42: { - result.hasFooBytes = input.ReadBytes(ref result.fooBytes_); + pb::ByteString value = pb::ByteString.Empty; + if (input.ReadBytes(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooBytes; + } break; } case 48: { object unknown; - if(input.ReadEnum(ref result.fooEnum_, out unknown)) { - result.hasFooEnum = true; + global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; + if(input.ReadEnum(ref enumValue, out unknown)) { + result.foo_ = enumValue; + result.fooCase_ = FooOneofCase.FooEnum; } else if(unknown is int) { if (unknownFields == null) { unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); @@ -23739,55 +24174,80 @@ namespace Google.ProtocolBuffers.TestProtos { } case 58: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } case 67: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(); - if (result.hasFooGroup) { + if (result.fooCase_ == FooOneofCase.FooGroup) { subBuilder.MergeFrom(FooGroup); } input.ReadGroup(8, subBuilder, extensionRegistry); - FooGroup = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooGroup; break; } case 90: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(); - if (result.hasFooLazyMessage) { + if (result.fooCase_ == FooOneofCase.FooLazyMessage) { subBuilder.MergeFrom(FooLazyMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooLazyMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooLazyMessage; break; } case 96: { - result.hasBarInt = input.ReadInt32(ref result.barInt_); + int value = 5; + if (input.ReadInt32(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarInt; + } break; } case 106: { - result.hasBarString = input.ReadString(ref result.barString_); + string value = "STRING"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarString; + } break; } case 114: { - result.hasBarCord = input.ReadString(ref result.barCord_); + string value = "CORD"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarCord; + } break; } case 122: { - result.hasBarStringPiece = input.ReadString(ref result.barStringPiece_); + string value = "SPIECE"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarStringPiece; + } break; } case 130: { - result.hasBarBytes = input.ReadBytes(ref result.barBytes_); + pb::ByteString value = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; + if (input.ReadBytes(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarBytes; + } break; } case 136: { object unknown; - if(input.ReadEnum(ref result.barEnum_, out unknown)) { - result.hasBarEnum = true; + global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; + if(input.ReadEnum(ref enumValue, out unknown)) { + result.bar_ = enumValue; + result.barCase_ = BarOneofCase.BarEnum; } else if(unknown is int) { if (unknownFields == null) { unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); @@ -23815,370 +24275,388 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooCord { - get { return result.hasFooCord; } + get { return result.fooCase_ == FooOneofCase.FooCord; } } public string FooCord { - get { return result.FooCord; } + get { return result.fooCase_ == FooOneofCase.FooCord ? (string) result.foo_ : ""; } set { SetFooCord(value); } } public Builder SetFooCord(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooCord = true; - result.fooCord_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooCord; return this; } public Builder ClearFooCord() { PrepareBuilder(); - result.hasFooCord = false; - result.fooCord_ = ""; + if (result.fooCase_ == FooOneofCase.FooCord) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooStringPiece { - get { return result.hasFooStringPiece; } + get { return result.fooCase_ == FooOneofCase.FooStringPiece; } } public string FooStringPiece { - get { return result.FooStringPiece; } + get { return result.fooCase_ == FooOneofCase.FooStringPiece ? (string) result.foo_ : ""; } set { SetFooStringPiece(value); } } public Builder SetFooStringPiece(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooStringPiece = true; - result.fooStringPiece_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooStringPiece; return this; } public Builder ClearFooStringPiece() { PrepareBuilder(); - result.hasFooStringPiece = false; - result.fooStringPiece_ = ""; + if (result.fooCase_ == FooOneofCase.FooStringPiece) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooBytes { - get { return result.hasFooBytes; } + get { return result.fooCase_ == FooOneofCase.FooBytes; } } public pb::ByteString FooBytes { - get { return result.FooBytes; } + get { return result.fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) result.foo_ : pb::ByteString.Empty; } set { SetFooBytes(value); } } public Builder SetFooBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooBytes = true; - result.fooBytes_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooBytes; return this; } public Builder ClearFooBytes() { PrepareBuilder(); - result.hasFooBytes = false; - result.fooBytes_ = pb::ByteString.Empty; + if (result.fooCase_ == FooOneofCase.FooBytes) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooEnum { - get { return result.hasFooEnum; } + get { return result.fooCase_ == FooOneofCase.FooEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum { - get { return result.FooEnum; } + get { return result.fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; } set { SetFooEnum(value); } } public Builder SetFooEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) { PrepareBuilder(); - result.hasFooEnum = true; - result.fooEnum_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooEnum; return this; } public Builder ClearFooEnum() { PrepareBuilder(); - result.hasFooEnum = false; - result.fooEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; + if (result.fooCase_ == FooOneofCase.FooEnum) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { - PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooGroup { - get { return result.hasFooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup { - get { return result.FooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } set { SetFooGroup(value); } } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = value; + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = value; return this; } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooGroup && - result.fooGroup_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) { - result.fooGroup_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(result.fooGroup_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooGroup && + result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial(); } else { - result.fooGroup_ = value; + result.foo_ = value; } - result.hasFooGroup = true; + result.fooCase_ = FooOneofCase.FooGroup; return this; } public Builder ClearFooGroup() { - PrepareBuilder(); - result.hasFooGroup = false; - result.fooGroup_ = null; + if (result.fooCase_ == FooOneofCase.FooGroup) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooLazyMessage { - get { return result.hasFooLazyMessage; } + get { return result.fooCase_ == FooOneofCase.FooLazyMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage { - get { return result.FooLazyMessage; } + get { return result.fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } set { SetFooLazyMessage(value); } } public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooLazyMessage = true; - result.fooLazyMessage_ = value; + result.fooCase_ = FooOneofCase.FooLazyMessage; + result.foo_ = value; return this; } public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooLazyMessage = true; - result.fooLazyMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooLazyMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooLazyMessage && - result.fooLazyMessage_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { - result.fooLazyMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.fooLazyMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooLazyMessage && + result.FooLazyMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooLazyMessage).MergeFrom(value).BuildPartial(); } else { - result.fooLazyMessage_ = value; + result.foo_ = value; } - result.hasFooLazyMessage = true; + result.fooCase_ = FooOneofCase.FooLazyMessage; return this; } public Builder ClearFooLazyMessage() { - PrepareBuilder(); - result.hasFooLazyMessage = false; - result.fooLazyMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooLazyMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasBarInt { - get { return result.hasBarInt; } + get { return result.barCase_ == BarOneofCase.BarInt; } } public int BarInt { - get { return result.BarInt; } + get { return result.barCase_ == BarOneofCase.BarInt ? (int) result.bar_ : 5; } set { SetBarInt(value); } } public Builder SetBarInt(int value) { PrepareBuilder(); - result.hasBarInt = true; - result.barInt_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarInt; return this; } public Builder ClearBarInt() { PrepareBuilder(); - result.hasBarInt = false; - result.barInt_ = 5; + if (result.barCase_ == BarOneofCase.BarInt) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarString { - get { return result.hasBarString; } + get { return result.barCase_ == BarOneofCase.BarString; } } public string BarString { - get { return result.BarString; } + get { return result.barCase_ == BarOneofCase.BarString ? (string) result.bar_ : "STRING"; } set { SetBarString(value); } } public Builder SetBarString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarString = true; - result.barString_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarString; return this; } public Builder ClearBarString() { PrepareBuilder(); - result.hasBarString = false; - result.barString_ = "STRING"; + if (result.barCase_ == BarOneofCase.BarString) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarCord { - get { return result.hasBarCord; } + get { return result.barCase_ == BarOneofCase.BarCord; } } public string BarCord { - get { return result.BarCord; } + get { return result.barCase_ == BarOneofCase.BarCord ? (string) result.bar_ : "CORD"; } set { SetBarCord(value); } } public Builder SetBarCord(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarCord = true; - result.barCord_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarCord; return this; } public Builder ClearBarCord() { PrepareBuilder(); - result.hasBarCord = false; - result.barCord_ = "CORD"; + if (result.barCase_ == BarOneofCase.BarCord) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarStringPiece { - get { return result.hasBarStringPiece; } + get { return result.barCase_ == BarOneofCase.BarStringPiece; } } public string BarStringPiece { - get { return result.BarStringPiece; } + get { return result.barCase_ == BarOneofCase.BarStringPiece ? (string) result.bar_ : "SPIECE"; } set { SetBarStringPiece(value); } } public Builder SetBarStringPiece(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarStringPiece = true; - result.barStringPiece_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarStringPiece; return this; } public Builder ClearBarStringPiece() { PrepareBuilder(); - result.hasBarStringPiece = false; - result.barStringPiece_ = "SPIECE"; + if (result.barCase_ == BarOneofCase.BarStringPiece) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarBytes { - get { return result.hasBarBytes; } + get { return result.barCase_ == BarOneofCase.BarBytes; } } public pb::ByteString BarBytes { - get { return result.BarBytes; } + get { return result.barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) result.bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; } set { SetBarBytes(value); } } public Builder SetBarBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarBytes = true; - result.barBytes_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarBytes; return this; } public Builder ClearBarBytes() { PrepareBuilder(); - result.hasBarBytes = false; - result.barBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; + if (result.barCase_ == BarOneofCase.BarBytes) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarEnum { - get { return result.hasBarEnum; } + get { return result.barCase_ == BarOneofCase.BarEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum { - get { return result.BarEnum; } + get { return result.barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; } set { SetBarEnum(value); } } public Builder SetBarEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) { PrepareBuilder(); - result.hasBarEnum = true; - result.barEnum_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarEnum; return this; } public Builder ClearBarEnum() { PrepareBuilder(); - result.hasBarEnum = false; - result.barEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; + if (result.barCase_ == BarOneofCase.BarEnum) { + result.barCase_ = BarOneofCase.None; + } return this; } @@ -24222,6 +24700,26 @@ namespace Google.ProtocolBuffers.TestProtos { result.bazString_ = "BAZ"; return this; } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { + PrepareBuilder(); + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; + return this; + } + + public BarOneofCase BarCase { + get { return result.barCase_; } + } + public Builder ClearBar() { + PrepareBuilder(); + result.bar_ = null; + result.barCase_ = BarOneofCase.None; + return this; + } } static TestOneof2() { object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); @@ -24536,34 +25034,40 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooMessage = 3, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooMessageFieldNumber = 3; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -24578,13 +25082,13 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testRequiredOneofFieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[0], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[2], FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(3, field_names[1], FooMessage); } UnknownFields.WriteTo(output); @@ -24604,13 +25108,13 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage); } size += UnknownFields.SerializedSize; @@ -24735,14 +25239,20 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestRequiredOneof other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -24788,20 +25298,29 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } } @@ -24815,83 +25334,97 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } + return this; + } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; return this; } } diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs index 0d212b72..52d7a69b 100644 --- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs +++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestNoFieldPresence.cs @@ -97,7 +97,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0]; internal__static_proto2_nofieldpresence_unittest_TestAllTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Builder>(internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor, - new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalProto2Message", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalStringPiece", "OptionalCord", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedProto2Message", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofEnum", }); + new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalProto2Message", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalStringPiece", "OptionalCord", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedProto2Message", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofEnum", "OneofField", }); internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_proto2_nofieldpresence_unittest_TestAllTypes__Descriptor.NestedTypes[0]; internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.Builder>(internal__static_proto2_nofieldpresence_unittest_TestAllTypes_NestedMessage__Descriptor, @@ -431,6 +431,19 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } #endregion + private object oneofField_; + public enum OneofFieldOneofCase { + OneofUint32 = 111, + OneofNestedMessage = 112, + OneofString = 113, + OneofEnum = 114, + None = 0, + } + private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; + public OneofFieldOneofCase OneofFieldCase { + get { return oneofFieldCase_; } + } + public const int OptionalInt32FieldNumber = 1; private int optionalInt32_; public int OptionalInt32 { @@ -586,6 +599,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedInt32FieldNumber = 31; + private int repeatedInt32MemoizedSerializedSize; private pbc::PopsicleList<int> repeatedInt32_ = new pbc::PopsicleList<int>(); public scg::IList<int> RepeatedInt32List { get { return pbc::Lists.AsReadOnly(repeatedInt32_); } @@ -598,6 +612,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedInt64FieldNumber = 32; + private int repeatedInt64MemoizedSerializedSize; private pbc::PopsicleList<long> repeatedInt64_ = new pbc::PopsicleList<long>(); public scg::IList<long> RepeatedInt64List { get { return pbc::Lists.AsReadOnly(repeatedInt64_); } @@ -610,6 +625,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedUint32FieldNumber = 33; + private int repeatedUint32MemoizedSerializedSize; private pbc::PopsicleList<uint> repeatedUint32_ = new pbc::PopsicleList<uint>(); public scg::IList<uint> RepeatedUint32List { get { return pbc::Lists.AsReadOnly(repeatedUint32_); } @@ -622,6 +638,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedUint64FieldNumber = 34; + private int repeatedUint64MemoizedSerializedSize; private pbc::PopsicleList<ulong> repeatedUint64_ = new pbc::PopsicleList<ulong>(); public scg::IList<ulong> RepeatedUint64List { get { return pbc::Lists.AsReadOnly(repeatedUint64_); } @@ -634,6 +651,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedSint32FieldNumber = 35; + private int repeatedSint32MemoizedSerializedSize; private pbc::PopsicleList<int> repeatedSint32_ = new pbc::PopsicleList<int>(); public scg::IList<int> RepeatedSint32List { get { return pbc::Lists.AsReadOnly(repeatedSint32_); } @@ -646,6 +664,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedSint64FieldNumber = 36; + private int repeatedSint64MemoizedSerializedSize; private pbc::PopsicleList<long> repeatedSint64_ = new pbc::PopsicleList<long>(); public scg::IList<long> RepeatedSint64List { get { return pbc::Lists.AsReadOnly(repeatedSint64_); } @@ -658,6 +677,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedFixed32FieldNumber = 37; + private int repeatedFixed32MemoizedSerializedSize; private pbc::PopsicleList<uint> repeatedFixed32_ = new pbc::PopsicleList<uint>(); public scg::IList<uint> RepeatedFixed32List { get { return pbc::Lists.AsReadOnly(repeatedFixed32_); } @@ -670,6 +690,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedFixed64FieldNumber = 38; + private int repeatedFixed64MemoizedSerializedSize; private pbc::PopsicleList<ulong> repeatedFixed64_ = new pbc::PopsicleList<ulong>(); public scg::IList<ulong> RepeatedFixed64List { get { return pbc::Lists.AsReadOnly(repeatedFixed64_); } @@ -682,6 +703,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedSfixed32FieldNumber = 39; + private int repeatedSfixed32MemoizedSerializedSize; private pbc::PopsicleList<int> repeatedSfixed32_ = new pbc::PopsicleList<int>(); public scg::IList<int> RepeatedSfixed32List { get { return pbc::Lists.AsReadOnly(repeatedSfixed32_); } @@ -694,6 +716,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedSfixed64FieldNumber = 40; + private int repeatedSfixed64MemoizedSerializedSize; private pbc::PopsicleList<long> repeatedSfixed64_ = new pbc::PopsicleList<long>(); public scg::IList<long> RepeatedSfixed64List { get { return pbc::Lists.AsReadOnly(repeatedSfixed64_); } @@ -706,6 +729,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedFloatFieldNumber = 41; + private int repeatedFloatMemoizedSerializedSize; private pbc::PopsicleList<float> repeatedFloat_ = new pbc::PopsicleList<float>(); public scg::IList<float> RepeatedFloatList { get { return pbc::Lists.AsReadOnly(repeatedFloat_); } @@ -718,6 +742,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedDoubleFieldNumber = 42; + private int repeatedDoubleMemoizedSerializedSize; private pbc::PopsicleList<double> repeatedDouble_ = new pbc::PopsicleList<double>(); public scg::IList<double> RepeatedDoubleList { get { return pbc::Lists.AsReadOnly(repeatedDouble_); } @@ -730,6 +755,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedBoolFieldNumber = 43; + private int repeatedBoolMemoizedSerializedSize; private pbc::PopsicleList<bool> repeatedBool_ = new pbc::PopsicleList<bool>(); public scg::IList<bool> RepeatedBoolList { get { return pbc::Lists.AsReadOnly(repeatedBool_); } @@ -802,6 +828,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedNestedEnumFieldNumber = 51; + private int repeatedNestedEnumMemoizedSerializedSize; private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum> repeatedNestedEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum>(); public scg::IList<global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum> RepeatedNestedEnumList { get { return pbc::Lists.AsReadOnly(repeatedNestedEnum_); } @@ -814,6 +841,7 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int RepeatedForeignEnumFieldNumber = 52; + private int repeatedForeignEnumMemoizedSerializedSize; private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.Proto3.ForeignEnum> repeatedForeignEnum_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.Proto3.ForeignEnum>(); public scg::IList<global::Google.ProtocolBuffers.TestProtos.Proto3.ForeignEnum> RepeatedForeignEnumList { get { return pbc::Lists.AsReadOnly(repeatedForeignEnum_); } @@ -862,31 +890,23 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public const int OneofUint32FieldNumber = 111; - private uint oneofUint32_; public uint OneofUint32 { - get { return oneofUint32_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } } public const int OneofNestedMessageFieldNumber = 112; - private bool hasOneofNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage oneofNestedMessage_; - public bool HasOneofNestedMessage { - get { return hasOneofNestedMessage; } - } public global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return oneofNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.DefaultInstance; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public const int OneofStringFieldNumber = 113; - private string oneofString_ = ""; public string OneofString { - get { return oneofString_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } } public const int OneofEnumFieldNumber = 114; - private global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum oneofEnum_ = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO; public global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum OneofEnum { - get { return oneofEnum_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofEnum ? (global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum) oneofField_ : global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO; } } public override void WriteTo(pb::ICodedOutputStream output) { @@ -962,43 +982,43 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { output.WriteMessage(30, field_names[15], OptionalLazyMessage); } if (repeatedInt32_.Count > 0) { - output.WriteInt32Array(31, field_names[36], repeatedInt32_); + output.WritePackedInt32Array(31, field_names[36], repeatedInt32MemoizedSerializedSize, repeatedInt32_); } if (repeatedInt64_.Count > 0) { - output.WriteInt64Array(32, field_names[37], repeatedInt64_); + output.WritePackedInt64Array(32, field_names[37], repeatedInt64MemoizedSerializedSize, repeatedInt64_); } if (repeatedUint32_.Count > 0) { - output.WriteUInt32Array(33, field_names[48], repeatedUint32_); + output.WritePackedUInt32Array(33, field_names[48], repeatedUint32MemoizedSerializedSize, repeatedUint32_); } if (repeatedUint64_.Count > 0) { - output.WriteUInt64Array(34, field_names[49], repeatedUint64_); + output.WritePackedUInt64Array(34, field_names[49], repeatedUint64MemoizedSerializedSize, repeatedUint64_); } if (repeatedSint32_.Count > 0) { - output.WriteSInt32Array(35, field_names[44], repeatedSint32_); + output.WritePackedSInt32Array(35, field_names[44], repeatedSint32MemoizedSerializedSize, repeatedSint32_); } if (repeatedSint64_.Count > 0) { - output.WriteSInt64Array(36, field_names[45], repeatedSint64_); + output.WritePackedSInt64Array(36, field_names[45], repeatedSint64MemoizedSerializedSize, repeatedSint64_); } if (repeatedFixed32_.Count > 0) { - output.WriteFixed32Array(37, field_names[31], repeatedFixed32_); + output.WritePackedFixed32Array(37, field_names[31], repeatedFixed32MemoizedSerializedSize, repeatedFixed32_); } if (repeatedFixed64_.Count > 0) { - output.WriteFixed64Array(38, field_names[32], repeatedFixed64_); + output.WritePackedFixed64Array(38, field_names[32], repeatedFixed64MemoizedSerializedSize, repeatedFixed64_); } if (repeatedSfixed32_.Count > 0) { - output.WriteSFixed32Array(39, field_names[42], repeatedSfixed32_); + output.WritePackedSFixed32Array(39, field_names[42], repeatedSfixed32MemoizedSerializedSize, repeatedSfixed32_); } if (repeatedSfixed64_.Count > 0) { - output.WriteSFixed64Array(40, field_names[43], repeatedSfixed64_); + output.WritePackedSFixed64Array(40, field_names[43], repeatedSfixed64MemoizedSerializedSize, repeatedSfixed64_); } if (repeatedFloat_.Count > 0) { - output.WriteFloatArray(41, field_names[33], repeatedFloat_); + output.WritePackedFloatArray(41, field_names[33], repeatedFloatMemoizedSerializedSize, repeatedFloat_); } if (repeatedDouble_.Count > 0) { - output.WriteDoubleArray(42, field_names[30], repeatedDouble_); + output.WritePackedDoubleArray(42, field_names[30], repeatedDoubleMemoizedSerializedSize, repeatedDouble_); } if (repeatedBool_.Count > 0) { - output.WriteBoolArray(43, field_names[27], repeatedBool_); + output.WritePackedBoolArray(43, field_names[27], repeatedBoolMemoizedSerializedSize, repeatedBool_); } if (repeatedString_.Count > 0) { output.WriteStringArray(44, field_names[46], repeatedString_); @@ -1016,10 +1036,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { output.WriteMessageArray(50, field_names[41], repeatedProto2Message_); } if (repeatedNestedEnum_.Count > 0) { - output.WriteEnumArray(51, field_names[39], repeatedNestedEnum_); + output.WritePackedEnumArray(51, field_names[39], repeatedNestedEnumMemoizedSerializedSize, repeatedNestedEnum_); } if (repeatedForeignEnum_.Count > 0) { - output.WriteEnumArray(52, field_names[34], repeatedForeignEnum_); + output.WritePackedEnumArray(52, field_names[34], repeatedForeignEnumMemoizedSerializedSize, repeatedForeignEnum_); } if (repeatedStringPiece_.Count > 0) { output.WriteStringArray(54, field_names[47], repeatedStringPiece_); @@ -1030,16 +1050,16 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { if (repeatedLazyMessage_.Count > 0) { output.WriteMessageArray(57, field_names[38], repeatedLazyMessage_); } - if (OneofUint32 != 0) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { output.WriteUInt32(111, field_names[3], OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { output.WriteMessage(112, field_names[1], OneofNestedMessage); } - if (OneofString != "") { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { output.WriteString(113, field_names[2], OneofString); } - if (OneofEnum != global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) { output.WriteEnum(114, field_names[0], (int) OneofEnum, OneofEnum); } UnknownFields.WriteTo(output); @@ -1134,7 +1154,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeInt32SizeNoTag(element); } size += dataSize; - size += 2 * repeatedInt32_.Count; + if (repeatedInt32_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedInt32MemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1142,7 +1165,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeInt64SizeNoTag(element); } size += dataSize; - size += 2 * repeatedInt64_.Count; + if (repeatedInt64_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedInt64MemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1150,7 +1176,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeUInt32SizeNoTag(element); } size += dataSize; - size += 2 * repeatedUint32_.Count; + if (repeatedUint32_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedUint32MemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1158,7 +1187,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeUInt64SizeNoTag(element); } size += dataSize; - size += 2 * repeatedUint64_.Count; + if (repeatedUint64_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedUint64MemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1166,7 +1198,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeSInt32SizeNoTag(element); } size += dataSize; - size += 2 * repeatedSint32_.Count; + if (repeatedSint32_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedSint32MemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1174,49 +1209,73 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeSInt64SizeNoTag(element); } size += dataSize; - size += 2 * repeatedSint64_.Count; + if (repeatedSint64_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedSint64MemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 4 * repeatedFixed32_.Count; size += dataSize; - size += 2 * repeatedFixed32_.Count; + if (repeatedFixed32_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedFixed32MemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 8 * repeatedFixed64_.Count; size += dataSize; - size += 2 * repeatedFixed64_.Count; + if (repeatedFixed64_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedFixed64MemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 4 * repeatedSfixed32_.Count; size += dataSize; - size += 2 * repeatedSfixed32_.Count; + if (repeatedSfixed32_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedSfixed32MemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 8 * repeatedSfixed64_.Count; size += dataSize; - size += 2 * repeatedSfixed64_.Count; + if (repeatedSfixed64_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedSfixed64MemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 4 * repeatedFloat_.Count; size += dataSize; - size += 2 * repeatedFloat_.Count; + if (repeatedFloat_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedFloatMemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 8 * repeatedDouble_.Count; size += dataSize; - size += 2 * repeatedDouble_.Count; + if (repeatedDouble_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedDoubleMemoizedSerializedSize = dataSize; } { int dataSize = 0; dataSize = 1 * repeatedBool_.Count; size += dataSize; - size += 2 * repeatedBool_.Count; + if (repeatedBool_.Count != 0) { + size += 2 + pb::CodedOutputStream.ComputeInt32SizeNoTag(dataSize); + } + repeatedBoolMemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1250,8 +1309,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element); } size += dataSize; - size += 2 * repeatedNestedEnum_.Count; + size += 2; + size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize); } + repeatedNestedEnumMemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1260,8 +1321,10 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { dataSize += pb::CodedOutputStream.ComputeEnumSizeNoTag((int) element); } size += dataSize; - size += 2 * repeatedForeignEnum_.Count; + size += 2; + size += pb::CodedOutputStream.ComputeRawVarint32Size((uint) dataSize); } + repeatedForeignEnumMemoizedSerializedSize = dataSize; } { int dataSize = 0; @@ -1282,16 +1345,16 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { foreach (global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage element in RepeatedLazyMessageList) { size += pb::CodedOutputStream.ComputeMessageSize(57, element); } - if (OneofUint32 != 0) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage); } - if (OneofString != "") { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { size += pb::CodedOutputStream.ComputeStringSize(113, OneofString); } - if (OneofEnum != global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) { size += pb::CodedOutputStream.ComputeEnumSize(114, (int) OneofEnum); } size += UnknownFields.SerializedSize; @@ -1577,17 +1640,24 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { if (other.repeatedLazyMessage_.Count != 0) { result.repeatedLazyMessage_.Add(other.repeatedLazyMessage_); } - if (other.OneofUint32 != 0) { - OneofUint32 = other.OneofUint32; - } - if (other.HasOneofNestedMessage) { - MergeOneofNestedMessage(other.OneofNestedMessage); - } - if (other.OneofString != "") { - OneofString = other.OneofString; - } - if (other.OneofEnum != global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO) { - OneofEnum = other.OneofEnum; + switch (other.OneofFieldCase) { + case OneofFieldOneofCase.OneofUint32: { + SetOneofUint32(other.OneofUint32); + break; + } + case OneofFieldOneofCase.OneofNestedMessage: { + MergeOneofNestedMessage(other.OneofNestedMessage); + break; + } + case OneofFieldOneofCase.OneofString: { + SetOneofString(other.OneofString); + break; + } + case OneofFieldOneofCase.OneofEnum: { + SetOneofEnum(other.OneofEnum); + break; + } + case OneofFieldOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -1884,25 +1954,37 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { break; } case 888: { - input.ReadUInt32(ref result.oneofUint32_); + uint value = 0; + if (input.ReadUInt32(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; + } break; } case 898: { global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.CreateBuilder(); - if (result.hasOneofNestedMessage) { + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { subBuilder.MergeFrom(OneofNestedMessage); } input.ReadMessage(subBuilder, extensionRegistry); - OneofNestedMessage = subBuilder.BuildPartial(); + result.oneofField_ = subBuilder.BuildPartial(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; break; } case 906: { - input.ReadString(ref result.oneofString_); + string value = ""; + if (input.ReadString(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; + } break; } case 912: { object unknown; - if(input.ReadEnum(ref result.oneofEnum_, out unknown)) { + global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO; + if(input.ReadEnum(ref enumValue, out unknown)) { + result.oneofField_ = enumValue; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofEnum; } else if(unknown is int) { if (unknownFields == null) { unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); @@ -3125,88 +3207,106 @@ namespace Google.ProtocolBuffers.TestProtos.Proto3 { } public uint OneofUint32 { - get { return result.OneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; } set { SetOneofUint32(value); } } public Builder SetOneofUint32(uint value) { PrepareBuilder(); - result.oneofUint32_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; return this; } public Builder ClearOneofUint32() { PrepareBuilder(); - result.oneofUint32_ = 0; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } - public bool HasOneofNestedMessage { - get { return result.hasOneofNestedMessage; } - } public global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return result.OneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.DefaultInstance; } set { SetOneofNestedMessage(value); } } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = value; return this; } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = builderForValue.Build(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = builderForValue.Build(); return this; } public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasOneofNestedMessage && - result.oneofNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.DefaultInstance) { - result.oneofNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.CreateBuilder(result.oneofNestedMessage_).MergeFrom(value).BuildPartial(); + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage && + result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.DefaultInstance) { + result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial(); } else { - result.oneofNestedMessage_ = value; + result.oneofField_ = value; } - result.hasOneofNestedMessage = true; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; return this; } public Builder ClearOneofNestedMessage() { - PrepareBuilder(); - result.hasOneofNestedMessage = false; - result.oneofNestedMessage_ = null; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { + PrepareBuilder(); + result.oneofFieldCase_ = OneofFieldOneofCase.None; + result.oneofField_ = null; + } return this; } public string OneofString { - get { return result.OneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; } set { SetOneofString(value); } } public Builder SetOneofString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.oneofString_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; return this; } public Builder ClearOneofString() { PrepareBuilder(); - result.oneofString_ = ""; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum OneofEnum { - get { return result.OneofEnum; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofEnum ? (global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO; } set { SetOneofEnum(value); } } public Builder SetOneofEnum(global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum value) { PrepareBuilder(); - result.oneofEnum_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofEnum; return this; } public Builder ClearOneofEnum() { PrepareBuilder(); - result.oneofEnum_ = global::Google.ProtocolBuffers.TestProtos.Proto3.TestAllTypes.Types.NestedEnum.FOO; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofEnum) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } + return this; + } + + public OneofFieldOneofCase OneofFieldCase { + get { return result.oneofFieldCase_; } + } + public Builder ClearOneofField() { + PrepareBuilder(); + result.oneofField_ = null; + result.oneofFieldCase_ = OneofFieldOneofCase.None; return this; } } diff --git a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestOptimizeFor.cs b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestOptimizeFor.cs index 33e2ef4f..d07df059 100644 --- a/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestOptimizeFor.cs +++ b/csharp/src/ProtocolBuffers.Test/TestProtos/UnittestOptimizeFor.cs @@ -54,7 +54,7 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor = Descriptor.MessageTypes[0]; internal__static_protobuf_unittest_TestOptimizedForSize__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize, global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Builder>(internal__static_protobuf_unittest_TestOptimizedForSize__Descriptor, - new string[] { "I", "Msg", "IntegerField", "StringField", }); + new string[] { "I", "Msg", "IntegerField", "StringField", "Foo", }); global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension = pb::GeneratedSingleExtension<int>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.TestExtension2 = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestOptimizedForSize.Descriptor.Extensions[1]); internal__static_protobuf_unittest_TestRequiredOptimizedForSize__Descriptor = Descriptor.MessageTypes[1]; @@ -107,6 +107,17 @@ namespace Google.ProtocolBuffers.TestProtos { public static pb::GeneratedExtensionBase<int> TestExtension; public const int TestExtension2FieldNumber = 1235; public static pb::GeneratedExtensionBase<global::Google.ProtocolBuffers.TestProtos.TestRequiredOptimizedForSize> TestExtension2; + private object foo_; + public enum FooOneofCase { + IntegerField = 2, + StringField = 3, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + public const int IFieldNumber = 1; private bool hasI; private int i_; @@ -128,23 +139,19 @@ namespace Google.ProtocolBuffers.TestProtos { } public const int IntegerFieldFieldNumber = 2; - private bool hasIntegerField; - private int integerField_; public bool HasIntegerField { - get { return hasIntegerField; } + get { return fooCase_ == FooOneofCase.IntegerField; } } public int IntegerField { - get { return integerField_; } + get { return fooCase_ == FooOneofCase.IntegerField ? (int) foo_ : 0; } } public const int StringFieldFieldNumber = 3; - private bool hasStringField; - private string stringField_ = ""; public bool HasStringField { - get { return hasStringField; } + get { return fooCase_ == FooOneofCase.StringField; } } public string StringField { - get { return stringField_; } + get { return fooCase_ == FooOneofCase.StringField ? (string) foo_ : ""; } } public static TestOptimizedForSize ParseFrom(pb::ByteString data) { @@ -315,43 +322,55 @@ namespace Google.ProtocolBuffers.TestProtos { } public bool HasIntegerField { - get { return result.hasIntegerField; } + get { return result.fooCase_ == FooOneofCase.IntegerField; } } public int IntegerField { - get { return result.IntegerField; } + get { return result.fooCase_ == FooOneofCase.IntegerField ? (int) result.foo_ : 0; } set { SetIntegerField(value); } } public Builder SetIntegerField(int value) { PrepareBuilder(); - result.hasIntegerField = true; - result.integerField_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.IntegerField; return this; } public Builder ClearIntegerField() { PrepareBuilder(); - result.hasIntegerField = false; - result.integerField_ = 0; + if (result.fooCase_ == FooOneofCase.IntegerField) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasStringField { - get { return result.hasStringField; } + get { return result.fooCase_ == FooOneofCase.StringField; } } public string StringField { - get { return result.StringField; } + get { return result.fooCase_ == FooOneofCase.StringField ? (string) result.foo_ : ""; } set { SetStringField(value); } } public Builder SetStringField(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasStringField = true; - result.stringField_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.StringField; return this; } public Builder ClearStringField() { PrepareBuilder(); - result.hasStringField = false; - result.stringField_ = ""; + if (result.fooCase_ == FooOneofCase.StringField) { + result.fooCase_ = FooOneofCase.None; + } + return this; + } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { + PrepareBuilder(); + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; return this; } } diff --git a/csharp/src/ProtocolBuffers.Test/TestResources.cs b/csharp/src/ProtocolBuffers.Test/TestResources.cs index c978ca68..602874f7 100644 --- a/csharp/src/ProtocolBuffers.Test/TestResources.cs +++ b/csharp/src/ProtocolBuffers.Test/TestResources.cs @@ -16,7 +16,7 @@ Q80CAICbQ9ECAAAAAACAakDRAgAAAAAAgHNA2AIB2AIA4gIDMjE14gIDMzE16gIDMjE26gIDMzE2 8wL4AtkB9ALzAvgCvQL0AoIDAwjaAYIDAwi+AooDAwjbAYoDAwi/ApIDAwjcAZIDAwjAApgDApgD
A6ADBaADBqgDCKgDCbIDAzIyNLIDAzMyNLoDAzIyNboDAzMyNegDkQPwA5ID+AOTA4AElAOIBKoG
kASsBp0ElwEAAKEEmAEAAAAAAACtBJkBAACxBJoBAAAAAAAAvQQAgM1DwQQAAAAAAMB5QMgEANIE
-AzQxNdoEAzQxNogFAZAFBJgFB6IFAzQyNKoFAzQyNQ==
+AzQxNdoEAzQxNogFAZAFBJgFB6IFAzQyNKoFAzQyNZIHAzYwNA==
");
}
}
@@ -158,6 +158,7 @@ default_foreign_enum: FOREIGN_FOO default_import_enum: IMPORT_FOO
default_string_piece: ""424""
default_cord: ""425""
+oneof_bytes: ""604""
";
}
@@ -286,6 +287,12 @@ default_cord: ""425"" [protobuf_unittest.default_import_enum_extension]: IMPORT_FOO
[protobuf_unittest.default_string_piece_extension]: ""424""
[protobuf_unittest.default_cord_extension]: ""425""
+[protobuf_unittest.oneof_uint32_extension]: 601
+[protobuf_unittest.oneof_nested_message_extension] {
+ bb: 602
+}
+[protobuf_unittest.oneof_string_extension]: ""603""
+[protobuf_unittest.oneof_bytes_extension]: ""604""
";
}
}
diff --git a/csharp/src/ProtocolBuffers.Test/TestUtil.cs b/csharp/src/ProtocolBuffers.Test/TestUtil.cs index 583e8090..c23c43f6 100644 --- a/csharp/src/ProtocolBuffers.Test/TestUtil.cs +++ b/csharp/src/ProtocolBuffers.Test/TestUtil.cs @@ -182,6 +182,11 @@ namespace Google.ProtocolBuffers registry.Add(Unittest.PackedDoubleExtension);
registry.Add(Unittest.PackedBoolExtension);
registry.Add(Unittest.PackedEnumExtension);
+
+ registry.Add(Unittest.OneofUint32Extension);
+ registry.Add(Unittest.OneofNestedMessageExtension);
+ registry.Add(Unittest.OneofStringExtension);
+ registry.Add(Unittest.OneofBytesExtension);
}
/// <summary>
@@ -316,6 +321,13 @@ namespace Google.ProtocolBuffers message.SetDefaultStringPiece("424");
message.SetDefaultCord("425");
+
+ message.SetOneofUint32(601);
+ message.SetOneofNestedMessage(
+ TestAllTypes.Types.NestedMessage.CreateBuilder().SetBb(602).Build());
+ message.SetOneofString("603");
+ message.SetOneofBytes(ToBytes("604"));
+
}
/// <summary>
@@ -517,6 +529,13 @@ namespace Google.ProtocolBuffers Assert.AreEqual("424", message.DefaultStringPiece);
Assert.AreEqual("425", message.DefaultCord);
+ + Assert.IsFalse(message.HasOneofUint32);
+ Assert.IsFalse(message.HasOneofNestedMessage);
+ Assert.IsFalse(message.HasOneofString);
+ Assert.IsTrue(message.HasOneofBytes);
+
+ Assert.AreEqual(ToBytes("604"), message.OneofBytes);
}
internal static void AssertClear(TestAllTypes message)
@@ -661,6 +680,11 @@ namespace Google.ProtocolBuffers Assert.AreEqual("abc", message.DefaultStringPiece);
Assert.AreEqual("123", message.DefaultCord);
+
+ Assert.IsFalse(message.HasOneofUint32);
+ Assert.IsFalse(message.HasOneofNestedMessage);
+ Assert.IsFalse(message.HasOneofString);
+ Assert.IsFalse(message.HasOneofBytes);
}
/// <summary>
@@ -817,6 +841,12 @@ namespace Google.ProtocolBuffers message.SetExtension(Unittest.DefaultStringPieceExtension, "424");
message.SetExtension(Unittest.DefaultCordExtension, "425");
+
+ message.SetExtension(Unittest.OneofUint32Extension, 601U);
+ message.SetExtension(Unittest.OneofNestedMessageExtension,
+ TestAllTypes.Types.NestedMessage.CreateBuilder().SetBb(602).Build());
+ message.SetExtension(Unittest.OneofStringExtension, "603");
+ message.SetExtension(Unittest.OneofBytesExtension, ToBytes("604"));
}
internal static void ModifyRepeatedFields(TestAllTypes.Builder message)
@@ -1165,6 +1195,9 @@ namespace Google.ProtocolBuffers Assert.AreEqual("424", message.GetExtension(Unittest.DefaultStringPieceExtension));
Assert.AreEqual("425", message.GetExtension(Unittest.DefaultCordExtension));
+
+ Assert.IsTrue(message.HasExtension(Unittest.OneofBytesExtension));
+ Assert.AreEqual(ToBytes("604"), message.GetExtension(Unittest.OneofBytesExtension));
}
/// <summary>
@@ -1451,6 +1484,11 @@ namespace Google.ProtocolBuffers Assert.AreEqual("abc", message.GetExtension(Unittest.DefaultStringPieceExtension));
Assert.AreEqual("123", message.GetExtension(Unittest.DefaultCordExtension));
+
+ Assert.IsFalse(message.HasExtension(Unittest.OneofUint32Extension));
+ Assert.IsFalse(message.HasExtension(Unittest.OneofNestedMessageExtension));
+ Assert.IsFalse(message.HasExtension(Unittest.OneofStringExtension));
+ Assert.IsFalse(message.HasExtension(Unittest.OneofBytesExtension));
}
/// <summary>
@@ -1714,6 +1752,75 @@ namespace Google.ProtocolBuffers Assert.AreEqual(ForeignEnum.FOREIGN_BAZ, message.GetExtension(Unittest.UnpackedEnumExtension, 1));
}
+ public static void AssertAtMostOneFieldSetOneof(TestOneof2 message)
+ {
+ int count = 0;
+ if (message.HasFooInt) { ++count; }
+ if (message.HasFooString) { ++count; }
+ if (message.HasFooCord) { ++count; }
+ if (message.HasFooStringPiece) { ++count; }
+ if (message.HasFooBytes) { ++count; }
+ if (message.HasFooEnum) { ++count; }
+ if (message.HasFooMessage) { ++count; }
+ if (message.HasFooGroup) { ++count; }
+ if (message.HasFooLazyMessage) { ++count; }
+ Assert.True(count <= 1);
+
+ count = 0;
+ if (message.HasBarInt) { ++count; }
+ if (message.HasBarString) { ++count; }
+ if (message.HasBarCord) { ++count; }
+ if (message.HasBarStringPiece) { ++count; }
+ if (message.HasBarBytes) { ++count; }
+ if (message.HasBarEnum) { ++count; }
+ Assert.True(count <= 1);
+
+ switch (message.FooCase)
+ {
+ case TestOneof2.FooOneofCase.FooInt:
+ {
+ Assert.True(message.HasFooInt);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooString:
+ {
+ Assert.True(message.HasFooString);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooCord:
+ {
+ Assert.True(message.HasFooCord);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooBytes:
+ {
+ Assert.True(message.HasFooBytes);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooEnum:
+ {
+ Assert.True(message.HasFooEnum);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooMessage:
+ {
+ Assert.True(message.HasFooMessage);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooGroup:
+ {
+ Assert.True(message.HasFooGroup);
+ break;
+ }
+ case TestOneof2.FooOneofCase.FooLazyMessage:
+ {
+ Assert.True(message.HasFooLazyMessage);
+ break;
+ }
+ case TestOneof2.FooOneofCase.None: { break; }
+ }
+ }
+
private static readonly string[] TestCultures = {"en-US", "en-GB", "fr-FR", "de-DE"};
public delegate void CultureAction();
diff --git a/csharp/src/ProtocolBuffers.Test/WireFormatTest.cs b/csharp/src/ProtocolBuffers.Test/WireFormatTest.cs index 0c9b8c27..e728a176 100644 --- a/csharp/src/ProtocolBuffers.Test/WireFormatTest.cs +++ b/csharp/src/ProtocolBuffers.Test/WireFormatTest.cs @@ -164,7 +164,7 @@ namespace Google.ProtocolBuffers [Test]
public void ExtensionsSerializedSize()
{
- Assert.AreEqual(TestUtil.GetAllSet().SerializedSize, TestUtil.GetAllExtensionsSet().SerializedSize);
+ Assert.IsTrue(TestUtil.GetAllSet().SerializedSize < TestUtil.GetAllExtensionsSet().SerializedSize);
}
private static void AssertFieldsInOrder(ByteString data)
diff --git a/csharp/src/ProtocolBuffers/AbstractBuilder.cs b/csharp/src/ProtocolBuffers/AbstractBuilder.cs index e7a41fb3..8e33e931 100644 --- a/csharp/src/ProtocolBuffers/AbstractBuilder.cs +++ b/csharp/src/ProtocolBuffers/AbstractBuilder.cs @@ -58,8 +58,11 @@ namespace Google.ProtocolBuffers public abstract int GetRepeatedFieldCount(FieldDescriptor field);
public abstract object this[FieldDescriptor field, int index] { get; set; }
public abstract bool HasField(FieldDescriptor field);
+ public abstract bool HasOneof(OneofDescriptor oneof);
+ public abstract FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof);
public abstract IBuilder CreateBuilderForField(FieldDescriptor field);
public abstract TBuilder ClearField(FieldDescriptor field);
+ public abstract TBuilder ClearOneof(OneofDescriptor oneof);
public abstract TBuilder AddRepeatedField(FieldDescriptor field, object value);
#endregion
@@ -248,6 +251,11 @@ namespace Google.ProtocolBuffers return ClearField(field);
}
+ IBuilder IBuilder.WeakClearOneof(OneofDescriptor oneof)
+ {
+ return ClearOneof(oneof);
+ }
+
#endregion
/// <summary>
diff --git a/csharp/src/ProtocolBuffers/AbstractMessage.cs b/csharp/src/ProtocolBuffers/AbstractMessage.cs index 16c8c786..ef057e6f 100644 --- a/csharp/src/ProtocolBuffers/AbstractMessage.cs +++ b/csharp/src/ProtocolBuffers/AbstractMessage.cs @@ -62,6 +62,8 @@ namespace Google.ProtocolBuffers public abstract MessageDescriptor DescriptorForType { get; }
public abstract IDictionary<FieldDescriptor, object> AllFields { get; }
public abstract bool HasField(FieldDescriptor field);
+ public abstract bool HasOneof(OneofDescriptor oneof);
+ public abstract FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof);
public abstract object this[FieldDescriptor field] { get; }
public abstract int GetRepeatedFieldCount(FieldDescriptor field);
public abstract object this[FieldDescriptor field, int index] { get; }
diff --git a/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs b/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs index 076dc852..e7f5a3c1 100644 --- a/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs +++ b/csharp/src/ProtocolBuffers/Descriptors/FieldDescriptor.cs @@ -47,6 +47,7 @@ namespace Google.ProtocolBuffers.Descriptors private EnumDescriptor enumType;
private MessageDescriptor messageType;
private MessageDescriptor containingType;
+ private OneofDescriptor containingOneof;
private object defaultValue;
private FieldType fieldType;
private MappedType mappedType;
@@ -94,6 +95,16 @@ namespace Google.ProtocolBuffers.Descriptors "FieldDescriptorProto.Extendee set for non-extension field.");
}
containingType = parent;
+ if (proto.HasOneofIndex)
+ {
+ if (proto.OneofIndex < 0 || proto.OneofIndex >= parent.Proto.OneofDeclCount)
+ {
+ throw new DescriptorValidationException(this,
+ "FieldDescriptorProto.oneof_index is out of range for type " + parent.Name);
+ }
+ containingOneof = parent.Oneofs[proto.OneofIndex];
+ containingOneof.fieldCount ++;
+ }
extensionScope = null;
}
@@ -253,7 +264,12 @@ namespace Google.ProtocolBuffers.Descriptors {
get { return containingType; }
}
-
+
+ public OneofDescriptor ContainingOneof
+ {
+ get { return containingOneof; }
+ }
+
/// <summary>
/// For extensions defined nested within message types, gets
/// the outer type. Not valid for non-extension fields.
diff --git a/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs b/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs index 5b29849c..c00711b9 100644 --- a/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs +++ b/csharp/src/ProtocolBuffers/Descriptors/MessageDescriptor.cs @@ -45,6 +45,7 @@ namespace Google.ProtocolBuffers.Descriptors private readonly IList<EnumDescriptor> enumTypes;
private readonly IList<FieldDescriptor> fields;
private readonly IList<FieldDescriptor> extensions;
+ private readonly IList<OneofDescriptor> oneofs;
private bool hasRequiredFields;
internal MessageDescriptor(DescriptorProto proto, FileDescriptor file, MessageDescriptor parent, int typeIndex)
@@ -52,6 +53,10 @@ namespace Google.ProtocolBuffers.Descriptors {
containingType = parent;
+ oneofs = DescriptorUtil.ConvertAndMakeReadOnly(proto.OneofDeclList,
+ (oneof, index) =>
+ new OneofDescriptor(oneof, file, this, index));
+
nestedTypes = DescriptorUtil.ConvertAndMakeReadOnly(proto.NestedTypeList,
(type, index) =>
new MessageDescriptor(type, file, this, index));
@@ -69,6 +74,19 @@ namespace Google.ProtocolBuffers.Descriptors (field, index) =>
new FieldDescriptor(field, file, this, index, true));
+ for (int i = 0; i < proto.OneofDeclCount; i++)
+ {
+ oneofs[i].fields = new FieldDescriptor[oneofs[i].FieldCount];
+ oneofs[i].fieldCount = 0;
+ }
+ for (int i = 0; i< proto.FieldCount; i++)
+ {
+ OneofDescriptor oneofDescriptor = fields[i].ContainingOneof;
+ if (oneofDescriptor != null)
+ {
+ oneofDescriptor.fields[oneofDescriptor.fieldCount++] = fields[i];
+ }
+ }
file.DescriptorPool.AddSymbol(this);
}
@@ -112,6 +130,11 @@ namespace Google.ProtocolBuffers.Descriptors get { return enumTypes; }
}
+ public IList<OneofDescriptor> Oneofs
+ {
+ get { return oneofs; }
+ }
+
/// <summary>
/// Returns a pre-computed result as to whether this message
/// has required fields. This includes optional fields which are
@@ -189,6 +212,11 @@ namespace Google.ProtocolBuffers.Descriptors {
extension.CrossLink();
}
+
+ foreach (OneofDescriptor oneof in oneofs)
+ {
+ // oneof.C
+ }
}
internal void CheckRequiredFields()
diff --git a/csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs b/csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs new file mode 100644 index 00000000..aa62853b --- /dev/null +++ b/csharp/src/ProtocolBuffers/Descriptors/OneofDescriptor.cs @@ -0,0 +1,78 @@ +// Protocol Buffers - Google's data interchange format
+// Copyright 2015 Google Inc. All rights reserved.
+// Author: jieluo@google.com (Jie Luo)
+//
+// 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.
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using Google.ProtocolBuffers.DescriptorProtos;
+
+namespace Google.ProtocolBuffers.Descriptors
+{
+ public sealed class OneofDescriptor
+ {
+ private int index;
+ private OneofDescriptorProto proto;
+ private FileDescriptor file;
+ private MessageDescriptor containingType;
+ internal int fieldCount;
+ internal IList<FieldDescriptor> fields;
+
+ internal OneofDescriptor(OneofDescriptorProto proto, FileDescriptor file,
+ MessageDescriptor parent, int index)
+ {
+ this.proto = proto;
+ this.file = file;
+ this.index = index;
+
+ containingType = parent;
+ fieldCount = 0;
+ }
+
+ public int Index
+ {
+ get { return index; }
+ }
+
+ public MessageDescriptor ContainingType
+ {
+ get { return containingType; }
+ }
+
+ public int FieldCount
+ {
+ get { return fieldCount; }
+ }
+
+ public FieldDescriptor Field(int index)
+ {
+ return fields[index];
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers/DynamicMessage.cs b/csharp/src/ProtocolBuffers/DynamicMessage.cs index e39efb12..0a8772ca 100644 --- a/csharp/src/ProtocolBuffers/DynamicMessage.cs +++ b/csharp/src/ProtocolBuffers/DynamicMessage.cs @@ -48,6 +48,7 @@ namespace Google.ProtocolBuffers {
private readonly MessageDescriptor type;
private readonly FieldSet fields;
+ private readonly FieldDescriptor[] oneofCase;
private readonly UnknownFieldSet unknownFields;
private int memoizedSize = -1;
@@ -57,10 +58,12 @@ namespace Google.ProtocolBuffers /// <param name="type"></param>
/// <param name="fields"></param>
/// <param name="unknownFields"></param>
- private DynamicMessage(MessageDescriptor type, FieldSet fields, UnknownFieldSet unknownFields)
+ private DynamicMessage(MessageDescriptor type, FieldSet fields,
+ FieldDescriptor[] oneofCase, UnknownFieldSet unknownFields)
{
this.type = type;
this.fields = fields;
+ this.oneofCase = oneofCase;
this.unknownFields = unknownFields;
}
@@ -71,7 +74,9 @@ namespace Google.ProtocolBuffers /// <returns></returns>
public static DynamicMessage GetDefaultInstance(MessageDescriptor type)
{
- return new DynamicMessage(type, FieldSet.DefaultInstance, UnknownFieldSet.DefaultInstance);
+ int oneofDescriptorCount = type.Proto.OneofDeclCount;
+ FieldDescriptor[] oneofCase = new FieldDescriptor[oneofDescriptorCount];
+ return new DynamicMessage(type, FieldSet.DefaultInstance, oneofCase, UnknownFieldSet.DefaultInstance);
}
/// <summary>
@@ -201,6 +206,23 @@ namespace Google.ProtocolBuffers get { return fields.AllFieldDescriptors; }
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ VerifyContainingOneofType(oneof);
+ FieldDescriptor field = oneofCase[oneof.Index];
+ if (field == null)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ VerifyContainingOneofType(oneof);
+ return oneofCase[oneof.Index];
+ }
+
public override bool HasField(FieldDescriptor field)
{
VerifyContainingType(field);
@@ -306,12 +328,24 @@ namespace Google.ProtocolBuffers }
/// <summary>
+ /// Verifies that the oneof is an oneof of this message.
+ /// </summary>
+ private void VerifyContainingOneofType(OneofDescriptor oneof)
+ {
+ if (oneof.ContainingType != type)
+ {
+ throw new ArgumentException("OneofDescritpor does not match message type");
+ }
+ }
+
+ /// <summary>
/// Builder for dynamic messages. Instances are created with DynamicMessage.CreateBuilder.
/// </summary>
public sealed partial class Builder : AbstractBuilder<DynamicMessage, Builder>
{
private readonly MessageDescriptor type;
private FieldSet fields;
+ private FieldDescriptor[] oneofCase;
private UnknownFieldSet unknownFields;
internal Builder(MessageDescriptor type)
@@ -319,6 +353,7 @@ namespace Google.ProtocolBuffers this.type = type;
this.fields = FieldSet.CreateInstance();
this.unknownFields = UnknownFieldSet.DefaultInstance;
+ this.oneofCase = new FieldDescriptor[type.Proto.OneofDeclCount];
}
protected override Builder ThisBuilder
@@ -340,6 +375,23 @@ namespace Google.ProtocolBuffers }
fields.MergeFrom(other);
MergeUnknownFields(other.UnknownFields);
+ for (int i = 0; i < oneofCase.Length; i++)
+ {
+ if (other.HasOneof(type.Oneofs[i]))
+ {
+ if (oneofCase[i] == null)
+ {
+ oneofCase[i] = other.OneofFieldDescriptor(type.Oneofs[i]);
+ } else
+ {
+ if (oneofCase[i] != other.OneofFieldDescriptor(type.Oneofs[i]))
+ {
+ fields.ClearField(oneofCase[i]);
+ oneofCase[i] = other.OneofFieldDescriptor(type.Oneofs[i]);
+ }
+ }
+ }
+ }
return this;
}
@@ -353,7 +405,7 @@ namespace Google.ProtocolBuffers {
if (fields != null && !IsInitialized)
{
- throw new UninitializedMessageException(new DynamicMessage(type, fields, unknownFields));
+ throw new UninitializedMessageException(new DynamicMessage(type, fields, oneofCase, unknownFields));
}
return BuildPartial();
}
@@ -367,7 +419,7 @@ namespace Google.ProtocolBuffers {
if (!IsInitialized)
{
- throw new UninitializedMessageException(new DynamicMessage(type, fields, unknownFields)).
+ throw new UninitializedMessageException(new DynamicMessage(type, fields, oneofCase, unknownFields)).
AsInvalidProtocolBufferException();
}
return BuildPartial();
@@ -380,7 +432,7 @@ namespace Google.ProtocolBuffers throw new InvalidOperationException("Build() has already been called on this Builder.");
}
fields.MakeImmutable();
- DynamicMessage result = new DynamicMessage(type, fields, unknownFields);
+ DynamicMessage result = new DynamicMessage(type, fields, oneofCase, unknownFields);
fields = null;
unknownFields = null;
return result;
@@ -390,6 +442,7 @@ namespace Google.ProtocolBuffers {
Builder result = new Builder(type);
result.fields.MergeFrom(fields);
+ result.oneofCase = oneofCase;
return result;
}
@@ -431,6 +484,23 @@ namespace Google.ProtocolBuffers return new Builder(field.MessageType);
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ VerifyContainingOneofType(oneof);
+ FieldDescriptor field = oneofCase[oneof.Index];
+ if (field == null)
+ {
+ return false;
+ }
+ return true;
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ VerifyContainingOneofType(oneof);
+ return oneofCase[oneof.Index];
+ }
+
public override bool HasField(FieldDescriptor field)
{
VerifyContainingType(field);
@@ -466,6 +536,17 @@ namespace Google.ProtocolBuffers set
{
VerifyContainingType(field);
+ OneofDescriptor oneof = field.ContainingOneof;
+ if (oneof != null)
+ {
+ int index = oneof.Index;
+ FieldDescriptor oldField = oneofCase[index];
+ if ((oldField != null) && (oldField != field))
+ {
+ fields.ClearField(oldField);
+ }
+ oneofCase[index] = field;
+ }
fields[field] = value;
}
}
@@ -473,10 +554,30 @@ namespace Google.ProtocolBuffers public override Builder ClearField(FieldDescriptor field)
{
VerifyContainingType(field);
+ OneofDescriptor oneof = field.ContainingOneof;
+ if (oneof != null)
+ {
+ int index = oneof.Index;
+ if (oneofCase[index] == field)
+ {
+ oneofCase[index] = null;
+ }
+ }
fields.ClearField(field);
return this;
}
+ public override Builder ClearOneof(OneofDescriptor oneof)
+ {
+ VerifyContainingOneofType(oneof);
+ FieldDescriptor field = oneofCase[oneof.Index];
+ if (field != null)
+ {
+ ClearField(field);
+ }
+ return this;
+ }
+
public override int GetRepeatedFieldCount(FieldDescriptor field)
{
VerifyContainingType(field);
@@ -507,6 +608,17 @@ namespace Google.ProtocolBuffers throw new ArgumentException("FieldDescriptor does not match message type.");
}
}
+
+ /// <summary>
+ /// Verifies that the oneof is an oneof of this message.
+ /// </summary>
+ private void VerifyContainingOneofType(OneofDescriptor oneof)
+ {
+ if (oneof.ContainingType != type)
+ {
+ throw new ArgumentException("OneofDescriptor does not match message type");
+ }
+ }
}
}
}
\ No newline at end of file diff --git a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs b/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs index 6e20b14e..ad1a4382 100644 --- a/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs +++ b/csharp/src/ProtocolBuffers/FieldAccess/FieldAccessorTable.cs @@ -45,6 +45,7 @@ namespace Google.ProtocolBuffers.FieldAccess where TBuilder : IBuilder<TMessage, TBuilder>
{
private readonly IFieldAccessor<TMessage, TBuilder>[] accessors;
+ private readonly OneofAccessor<TMessage, TBuilder>[] oneofs;
private readonly MessageDescriptor descriptor;
@@ -68,17 +69,28 @@ namespace Google.ProtocolBuffers.FieldAccess {
this.descriptor = descriptor;
accessors = new IFieldAccessor<TMessage, TBuilder>[descriptor.Fields.Count];
+ oneofs = new OneofAccessor<TMessage, TBuilder>[descriptor.Oneofs.Count];
bool supportFieldPresence = descriptor.File.Syntax == FileDescriptor.ProtoSyntax.Proto2;
- for (int i = 0; i < accessors.Length; i++)
+ int fieldSize = accessors.Length;
+ for (int i = 0; i < fieldSize; i++)
{
- accessors[i] = CreateAccessor(descriptor.Fields[i], propertyNames[i], supportFieldPresence);
+ FieldDescriptor field = descriptor.Fields[i];
+ string containingOneofName = (field.ContainingOneof != null) ?
+ propertyNames[fieldSize +field.ContainingOneof.Index] : null;
+ accessors[i] = CreateAccessor(
+ field, propertyNames[i], containingOneofName, supportFieldPresence);
+ }
+ for (int i = 0; i < oneofs.Length; i++)
+ {
+ oneofs[i] = new OneofAccessor<TMessage, TBuilder>(descriptor, propertyNames[i + accessors.Length]);
}
}
/// <summary>
/// Creates an accessor for a single field
/// </summary>
- private static IFieldAccessor<TMessage, TBuilder> CreateAccessor(FieldDescriptor field, string name, bool supportFieldPresence)
+ private static IFieldAccessor<TMessage, TBuilder> CreateAccessor(
+ FieldDescriptor field, string name, string containingOneofName, bool supportFieldPresence)
{
if (field.IsRepeated)
{
@@ -97,11 +109,24 @@ namespace Google.ProtocolBuffers.FieldAccess switch (field.MappedType)
{
case MappedType.Message:
- return new SingleMessageAccessor<TMessage, TBuilder>(name);
+ {
+ if (field.ContainingOneof != null)
+ {
+ return new SingleMessageAccessor<TMessage, TBuilder>(
+ field, name, containingOneofName, supportFieldPresence);
+ }
+ else
+ {
+ return new SingleMessageAccessor<TMessage, TBuilder>(
+ field, name, containingOneofName, true);
+ }
+ }
case MappedType.Enum:
- return new SingleEnumAccessor<TMessage, TBuilder>(field, name, supportFieldPresence);
+ return new SingleEnumAccessor<TMessage, TBuilder>(
+ field, name, containingOneofName, supportFieldPresence);
default:
- return new SinglePrimitiveAccessor<TMessage, TBuilder>(field, name, supportFieldPresence);
+ return new SinglePrimitiveAccessor<TMessage, TBuilder>(
+ field, name, containingOneofName, supportFieldPresence);
}
}
}
@@ -123,5 +148,14 @@ namespace Google.ProtocolBuffers.FieldAccess return accessors[field.Index];
}
}
+
+ internal OneofAccessor<TMessage, TBuilder> Oneof(OneofDescriptor oneof)
+ {
+ if (oneof.ContainingType != descriptor)
+ {
+ throw new ArgumentException("OneofDescriptor does not match message type");
+ }
+ return oneofs[oneof.Index];
+ }
}
}
\ No newline at end of file diff --git a/csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs b/csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs new file mode 100644 index 00000000..1a4bda76 --- /dev/null +++ b/csharp/src/ProtocolBuffers/FieldAccess/OneofAccessor.cs @@ -0,0 +1,91 @@ +// Protocol Buffers - Google's data interchange format
+// Copyright 2015 Google Inc. All rights reserved.
+// Author: jieluo@google.com (Jie Luo)
+//
+// 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.
+using System;
+using System.Reflection;
+using Google.ProtocolBuffers.Descriptors;
+
+namespace Google.ProtocolBuffers.FieldAccess
+{
+ /// <summary>
+ /// Access for an oneof
+ /// </summary>
+ internal class OneofAccessor<TMessage, TBuilder>
+ where TMessage : IMessage<TMessage, TBuilder>
+ where TBuilder : IBuilder<TMessage, TBuilder>
+ {
+ private readonly Func<TMessage, object> caseDelegate;
+ private readonly Func<TBuilder, IBuilder> clearDelegate;
+ private MessageDescriptor descriptor;
+
+ internal OneofAccessor(MessageDescriptor descriptor, string name)
+ {
+ this.descriptor = descriptor;
+ MethodInfo clearMethod = typeof(TBuilder).GetMethod("Clear" + name);
+ PropertyInfo caseProperty = typeof(TMessage).GetProperty(name + "Case");
+ if (clearMethod == null || caseProperty == null)
+ {
+ throw new ArgumentException("Not all required properties/methods available for oneof");
+ }
+
+
+ clearDelegate = ReflectionUtil.CreateDelegateFunc<TBuilder, IBuilder>(clearMethod);
+ caseDelegate = ReflectionUtil.CreateUpcastDelegate<TMessage>(caseProperty.GetGetMethod());
+ }
+
+ /// <summary>
+ /// Indicates whether the specified message has set any field in the oneof.
+ /// </summary>
+ public bool Has(TMessage message)
+ {
+ return ((int) caseDelegate(message) != 0);
+ }
+
+ /// <summary>
+ /// Clears the oneof in the specified builder.
+ /// </summary>
+ public void Clear(TBuilder builder)
+ {
+ clearDelegate(builder);
+ }
+
+ /// <summary>
+ /// Indicates which field in the oneof is set for specified message
+ /// </summary>
+ public virtual FieldDescriptor GetOneofFieldDescriptor(TMessage message)
+ {
+ int fieldNumber = (int) caseDelegate(message);
+ if (fieldNumber > 0)
+ {
+ return descriptor.FindFieldByNumber(fieldNumber);
+ }
+ return null;
+ }
+ }
+}
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs b/csharp/src/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs index e63f717c..89e10179 100644 --- a/csharp/src/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs +++ b/csharp/src/ProtocolBuffers/FieldAccess/SingleEnumAccessor.cs @@ -42,7 +42,8 @@ namespace Google.ProtocolBuffers.FieldAccess {
private readonly EnumDescriptor enumDescriptor;
- internal SingleEnumAccessor(FieldDescriptor field, string name, bool supportFieldPresence) : base(field, name, supportFieldPresence)
+ internal SingleEnumAccessor(FieldDescriptor field, string name, string containingOneofName, bool supportFieldPresence)
+ : base(field, name, containingOneofName, supportFieldPresence)
{
enumDescriptor = field.EnumType;
}
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs b/csharp/src/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs index 0ec2b0b7..9068d40a 100644 --- a/csharp/src/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs +++ b/csharp/src/ProtocolBuffers/FieldAccess/SingleMessageAccessor.cs @@ -31,6 +31,7 @@ // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
using System;
using System.Reflection;
+using Google.ProtocolBuffers.Descriptors;
namespace Google.ProtocolBuffers.FieldAccess
{
@@ -48,7 +49,8 @@ namespace Google.ProtocolBuffers.FieldAccess /// </summary>
private readonly Func<IBuilder> createBuilderDelegate;
- internal SingleMessageAccessor(string name) : base(null, name, true)
+ internal SingleMessageAccessor(FieldDescriptor field, string name, string containingOneofName, bool supportFieldPresence)
+ : base(field, name, containingOneofName, supportFieldPresence)
{
MethodInfo createBuilderMethod = ClrType.GetMethod("CreateBuilder", ReflectionUtil.EmptyTypes);
if (createBuilderMethod == null)
diff --git a/csharp/src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs b/csharp/src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs index b9ab7293..035fcf3c 100644 --- a/csharp/src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs +++ b/csharp/src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs @@ -47,6 +47,7 @@ namespace Google.ProtocolBuffers.FieldAccess private readonly Action<TBuilder, object> setValueDelegate;
private readonly Func<TMessage, bool> hasDelegate;
private readonly Func<TBuilder, IBuilder> clearDelegate;
+ private readonly Func<TMessage, object> caseDelegate;
/// <summary>
/// The CLR type of the field (int, the enum type, ByteString, the message etc).
@@ -57,7 +58,8 @@ namespace Google.ProtocolBuffers.FieldAccess get { return clrType; }
}
- internal SinglePrimitiveAccessor(FieldDescriptor fieldDescriptor, string name, bool supportFieldPresence)
+ internal SinglePrimitiveAccessor(
+ FieldDescriptor fieldDescriptor, string name, string containingOneofName, bool supportFieldPresence)
{
PropertyInfo messageProperty = typeof(TMessage).GetProperty(name, null, ReflectionUtil.EmptyTypes);
PropertyInfo builderProperty = typeof(TBuilder).GetProperty(name, null, ReflectionUtil.EmptyTypes);
@@ -77,7 +79,16 @@ namespace Google.ProtocolBuffers.FieldAccess hasDelegate = ReflectionUtil.CreateDelegateFunc<TMessage, bool>(hasProperty.GetGetMethod());
} else
{
- hasDelegate = message => !GetValue(message).Equals(fieldDescriptor.DefaultValue);
+ if (fieldDescriptor.ContainingOneof != null)
+ {
+ PropertyInfo caseProperty = typeof(TMessage).GetProperty(containingOneofName + "Case");
+ caseDelegate = ReflectionUtil.CreateUpcastDelegate<TMessage>(caseProperty.GetGetMethod());
+ hasDelegate = message => OneofFieldNumber(message).Equals(fieldDescriptor.FieldNumber);
+ }
+ else
+ {
+ hasDelegate = message => !GetValue(message).Equals(fieldDescriptor.DefaultValue);
+ }
}
clrType = messageProperty.PropertyType;
@@ -86,6 +97,11 @@ namespace Google.ProtocolBuffers.FieldAccess setValueDelegate = ReflectionUtil.CreateDowncastDelegate<TBuilder>(builderProperty.GetSetMethod());
}
+ private int OneofFieldNumber(TMessage message)
+ {
+ return (int) caseDelegate(message);
+ }
+
public bool Has(TMessage message)
{
return hasDelegate(message);
@@ -143,4 +159,4 @@ namespace Google.ProtocolBuffers.FieldAccess #endregion
}
-}
\ No newline at end of file +}
diff --git a/csharp/src/ProtocolBuffers/GeneratedBuilder.cs b/csharp/src/ProtocolBuffers/GeneratedBuilder.cs index e60a4201..0f121ae8 100644 --- a/csharp/src/ProtocolBuffers/GeneratedBuilder.cs +++ b/csharp/src/ProtocolBuffers/GeneratedBuilder.cs @@ -105,6 +105,16 @@ namespace Google.ProtocolBuffers set { InternalFieldAccessors[field].SetRepeated(ThisBuilder, index, value); }
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ return MessageBeingBuilt.HasOneof(oneof);
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ return MessageBeingBuilt.OneofFieldDescriptor(oneof);
+ }
+
public override bool HasField(FieldDescriptor field)
{
return MessageBeingBuilt.HasField(field);
@@ -121,6 +131,12 @@ namespace Google.ProtocolBuffers return ThisBuilder;
}
+ public override TBuilder ClearOneof(OneofDescriptor oneof)
+ {
+ InternalFieldAccessors.Oneof(oneof).Clear(ThisBuilder);
+ return ThisBuilder;
+ }
+
public override TBuilder MergeFrom(TMessage other)
{
if (other.DescriptorForType != InternalFieldAccessors.Descriptor)
diff --git a/csharp/src/ProtocolBuffers/GeneratedMessage.cs b/csharp/src/ProtocolBuffers/GeneratedMessage.cs index c17c15cf..ff3a0c2a 100644 --- a/csharp/src/ProtocolBuffers/GeneratedMessage.cs +++ b/csharp/src/ProtocolBuffers/GeneratedMessage.cs @@ -142,6 +142,16 @@ namespace Google.ProtocolBuffers get { return Dictionaries.AsReadOnly(GetMutableFieldMap()); }
}
+ public override bool HasOneof(OneofDescriptor oneof)
+ {
+ return InternalFieldAccessors.Oneof(oneof).Has(ThisMessage);
+ }
+
+ public override FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof)
+ {
+ return InternalFieldAccessors.Oneof(oneof).GetOneofFieldDescriptor(ThisMessage);
+ }
+
public override bool HasField(FieldDescriptor field)
{
return InternalFieldAccessors[field].Has(ThisMessage);
diff --git a/csharp/src/ProtocolBuffers/IBuilder.cs b/csharp/src/ProtocolBuffers/IBuilder.cs index f9c0df61..e765464a 100644 --- a/csharp/src/ProtocolBuffers/IBuilder.cs +++ b/csharp/src/ProtocolBuffers/IBuilder.cs @@ -103,6 +103,11 @@ namespace Google.ProtocolBuffers /// </summary>
object this[FieldDescriptor field, int index] { get; set; }
+
+ bool HasOneof(OneofDescriptor oneof);
+
+ FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof);
+
/// <summary>
/// <see cref="IMessage{TMessage, TBuilder}.HasField"/>
/// </summary>
@@ -125,6 +130,7 @@ namespace Google.ProtocolBuffers IBuilder WeakAddRepeatedField(FieldDescriptor field, object value);
new IBuilder WeakClear();
IBuilder WeakClearField(FieldDescriptor field);
+ IBuilder WeakClearOneof(OneofDescriptor oneof);
IBuilder WeakMergeFrom(IMessage message);
new IBuilder WeakMergeFrom(ByteString data);
new IBuilder WeakMergeFrom(ByteString data, ExtensionRegistry registry);
@@ -228,6 +234,14 @@ namespace Google.ProtocolBuffers TBuilder ClearField(FieldDescriptor field);
/// <summary>
+ /// Clears the oneof. This is exactly equivalent to calling the generated
+ /// Clear method corresponding to the oneof.
+ /// </summary>
+ /// <param name="oneof"></param>
+ /// <returns></returns>
+ TBuilder ClearOneof(OneofDescriptor oneof);
+
+ /// <summary>
/// Appends the given value as a new element for the specified repeated field.
/// </summary>
/// <exception cref="ArgumentException">the field is not a repeated field,
diff --git a/csharp/src/ProtocolBuffers/IMessage.cs b/csharp/src/ProtocolBuffers/IMessage.cs index c23bc3f7..dd309d4e 100644 --- a/csharp/src/ProtocolBuffers/IMessage.cs +++ b/csharp/src/ProtocolBuffers/IMessage.cs @@ -67,6 +67,10 @@ namespace Google.ProtocolBuffers /// </summary>
IDictionary<FieldDescriptor, object> AllFields { get; }
+ bool HasOneof(OneofDescriptor oneof);
+
+ FieldDescriptor OneofFieldDescriptor(OneofDescriptor oneof);
+
/// <summary>
/// Returns true if the given field is set. This is exactly equivalent
/// to calling the generated "Has" property corresponding to the field.
diff --git a/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj b/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj index 32a343ad..7dc8f665 100644 --- a/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj +++ b/csharp/src/ProtocolBuffers/ProtocolBuffers.csproj @@ -81,6 +81,7 @@ <Compile Include="Descriptors\FieldMappingAttribute.cs" />
<Compile Include="Descriptors\FieldType.cs" />
<Compile Include="Descriptors\FileDescriptor.cs" />
+ <Compile Include="Descriptors\OneofDescriptor.cs" />
<Compile Include="Descriptors\IDescriptor.cs" />
<Compile Include="Descriptors\IndexedDescriptorBase.cs" />
<Compile Include="Descriptors\MappedType.cs" />
@@ -106,6 +107,7 @@ <Compile Include="FieldAccess\IFieldAccessor.cs" />
<Compile Include="FieldAccess\FieldAccessorTable.cs" />
<Compile Include="FieldAccess\RepeatedMessageAccessor.cs" />
+ <Compile Include="FieldAccess\OneofAccessor.cs" />
<Compile Include="FieldSet.cs" />
<Compile Include="FrameworkPortability.cs" />
<Compile Include="GeneratedBuilder.cs" />
@@ -146,4 +148,4 @@ <Target Name="AfterBuild">
</Target>
-->
-</Project>
\ No newline at end of file +</Project>
diff --git a/csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs b/csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs index 083523c0..67898644 100644 --- a/csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs +++ b/csharp/src/ProtocolBuffersLite.Test/TestProtos/Unittest.cs @@ -355,6 +355,8 @@ namespace Google.ProtocolBuffers.TestProtos { internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder> internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_ForeignMessage__Descriptor; internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder> internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable; + internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestReservedFields__Descriptor; + internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder> internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_TestAllExtensions__Descriptor; internal static pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder> internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable; internal static pbd::MessageDescriptor internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor; @@ -565,426 +567,429 @@ namespace Google.ProtocolBuffers.TestProtos { "ZXMYciABKAxIABobCg1OZXN0ZWRNZXNzYWdlEgoKAmJiGAEgASgFGhoKDU9w", "dGlvbmFsR3JvdXASCQoBYRgRIAEoBRoaCg1SZXBlYXRlZEdyb3VwEgkKAWEY", "LyABKAUiOQoKTmVzdGVkRW51bRIHCgNGT08QARIHCgNCQVIQAhIHCgNCQVoQ", - "AxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCJ8ChJOZXN0ZWRU", - "ZXN0QWxsVHlwZXMSNAoFY2hpbGQYASABKAsyJS5wcm90b2J1Zl91bml0dGVz", - "dC5OZXN0ZWRUZXN0QWxsVHlwZXMSMAoHcGF5bG9hZBgCIAEoCzIfLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyI0ChRUZXN0RGVwcmVjYXRlZEZp", - "ZWxkcxIcChBkZXByZWNhdGVkX2ludDMyGAEgASgFQgIYASIbCg5Gb3JlaWdu", - "TWVzc2FnZRIJCgFjGAEgASgFIh0KEVRlc3RBbGxFeHRlbnNpb25zKggIARCA", - "gICAAiIkChdPcHRpb25hbEdyb3VwX2V4dGVuc2lvbhIJCgFhGBEgASgFIiQK", - "F1JlcGVhdGVkR3JvdXBfZXh0ZW5zaW9uEgkKAWEYLyABKAUimAEKE1Rlc3RO", - "ZXN0ZWRFeHRlbnNpb24yOQoEdGVzdBIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGOoHIAEoCToEdGVzdDJGChduZXN0ZWRfc3RyaW5n", - "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp", - "b25zGOsHIAEoCSLVBQoMVGVzdFJlcXVpcmVkEgkKAWEYASACKAUSDgoGZHVt", - "bXkyGAIgASgFEgkKAWIYAyACKAUSDgoGZHVtbXk0GAQgASgFEg4KBmR1bW15", - "NRgFIAEoBRIOCgZkdW1teTYYBiABKAUSDgoGZHVtbXk3GAcgASgFEg4KBmR1", - "bW15OBgIIAEoBRIOCgZkdW1teTkYCSABKAUSDwoHZHVtbXkxMBgKIAEoBRIP", - "CgdkdW1teTExGAsgASgFEg8KB2R1bW15MTIYDCABKAUSDwoHZHVtbXkxMxgN", - "IAEoBRIPCgdkdW1teTE0GA4gASgFEg8KB2R1bW15MTUYDyABKAUSDwoHZHVt", - "bXkxNhgQIAEoBRIPCgdkdW1teTE3GBEgASgFEg8KB2R1bW15MTgYEiABKAUS", - "DwoHZHVtbXkxORgTIAEoBRIPCgdkdW1teTIwGBQgASgFEg8KB2R1bW15MjEY", - "FSABKAUSDwoHZHVtbXkyMhgWIAEoBRIPCgdkdW1teTIzGBcgASgFEg8KB2R1", - "bW15MjQYGCABKAUSDwoHZHVtbXkyNRgZIAEoBRIPCgdkdW1teTI2GBogASgF", - "Eg8KB2R1bW15MjcYGyABKAUSDwoHZHVtbXkyOBgcIAEoBRIPCgdkdW1teTI5", - "GB0gASgFEg8KB2R1bW15MzAYHiABKAUSDwoHZHVtbXkzMRgfIAEoBRIPCgdk", - "dW1teTMyGCAgASgFEgkKAWMYISACKAUyVgoGc2luZ2xlEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY6AcgASgLMh8ucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdFJlcXVpcmVkMlUKBW11bHRpEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY6QcgAygLMh8ucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdFJlcXVpcmVkIpoBChNUZXN0UmVxdWlyZWRGb3JlaWduEjkK", - "EG9wdGlvbmFsX21lc3NhZ2UYASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5U", - "ZXN0UmVxdWlyZWQSOQoQcmVwZWF0ZWRfbWVzc2FnZRgCIAMoCzIfLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RSZXF1aXJlZBINCgVkdW1teRgDIAEoBSJaChFU", - "ZXN0Rm9yZWlnbk5lc3RlZBJFCg5mb3JlaWduX25lc3RlZBgBIAEoCzItLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlIhIK", - "EFRlc3RFbXB0eU1lc3NhZ2UiKgoeVGVzdEVtcHR5TWVzc2FnZVdpdGhFeHRl", - "bnNpb25zKggIARCAgICAAiI3ChtUZXN0TXVsdGlwbGVFeHRlbnNpb25SYW5n", - "ZXMqBAgqECsqBgivIBCUISoKCICABBCAgICAAiI0ChhUZXN0UmVhbGx5TGFy", - "Z2VUYWdOdW1iZXISCQoBYRgBIAEoBRINCgJiYhj///9/IAEoBSJVChRUZXN0", - "UmVjdXJzaXZlTWVzc2FnZRIyCgFhGAEgASgLMicucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdFJlY3Vyc2l2ZU1lc3NhZ2USCQoBaRgCIAEoBSJLChRUZXN0TXV0", - "dWFsUmVjdXJzaW9uQRIzCgJiYhgBIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RNdXR1YWxSZWN1cnNpb25CImIKFFRlc3RNdXR1YWxSZWN1cnNpb25C", - "EjIKAWEYASABKAsyJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVj", - "dXJzaW9uQRIWCg5vcHRpb25hbF9pbnQzMhgCIAEoBSKzAQoSVGVzdER1cEZp", - "ZWxkTnVtYmVyEgkKAWEYASABKAUSNgoDZm9vGAIgASgKMikucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdER1cEZpZWxkTnVtYmVyLkZvbxI2CgNiYXIYAyABKAoy", - "KS5wcm90b2J1Zl91bml0dGVzdC5UZXN0RHVwRmllbGROdW1iZXIuQmFyGhAK", - "A0ZvbxIJCgFhGAEgASgFGhAKA0JhchIJCgFhGAEgASgFIkwKEFRlc3RFYWdl", - "ck1lc3NhZ2USOAoLc3ViX21lc3NhZ2UYASABKAsyHy5wcm90b2J1Zl91bml0", - "dGVzdC5UZXN0QWxsVHlwZXNCAigAIksKD1Rlc3RMYXp5TWVzc2FnZRI4Cgtz", - "dWJfbWVzc2FnZRgBIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxU", - "eXBlc0ICKAEigAIKGFRlc3ROZXN0ZWRNZXNzYWdlSGFzQml0cxJaChdvcHRp", - "b25hbF9uZXN0ZWRfbWVzc2FnZRgBIAEoCzI5LnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3ROZXN0ZWRNZXNzYWdlSGFzQml0cy5OZXN0ZWRNZXNzYWdlGocBCg1O", - "ZXN0ZWRNZXNzYWdlEiQKHG5lc3RlZG1lc3NhZ2VfcmVwZWF0ZWRfaW50MzIY", - "ASADKAUSUAolbmVzdGVkbWVzc2FnZV9yZXBlYXRlZF9mb3JlaWdubWVzc2Fn", - "ZRgCIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlIuUD", - "ChdUZXN0Q2FtZWxDYXNlRmllbGROYW1lcxIWCg5QcmltaXRpdmVGaWVsZBgB", - "IAEoBRITCgtTdHJpbmdGaWVsZBgCIAEoCRIxCglFbnVtRmllbGQYAyABKA4y", - "Hi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bRI3CgxNZXNzYWdlRmll", - "bGQYBCABKAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRIc", - "ChBTdHJpbmdQaWVjZUZpZWxkGAUgASgJQgIIAhIVCglDb3JkRmllbGQYBiAB", - "KAlCAggBEh4KFlJlcGVhdGVkUHJpbWl0aXZlRmllbGQYByADKAUSGwoTUmVw", - "ZWF0ZWRTdHJpbmdGaWVsZBgIIAMoCRI5ChFSZXBlYXRlZEVudW1GaWVsZBgJ", - "IAMoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtEj8KFFJlcGVh", - "dGVkTWVzc2FnZUZpZWxkGAogAygLMiEucHJvdG9idWZfdW5pdHRlc3QuRm9y", - "ZWlnbk1lc3NhZ2USJAoYUmVwZWF0ZWRTdHJpbmdQaWVjZUZpZWxkGAsgAygJ", - "QgIIAhIdChFSZXBlYXRlZENvcmRGaWVsZBgMIAMoCUICCAEi1QEKElRlc3RG", - "aWVsZE9yZGVyaW5ncxIRCglteV9zdHJpbmcYCyABKAkSDgoGbXlfaW50GAEg", - "ASgDEhAKCG15X2Zsb2F0GGUgASgCElUKF29wdGlvbmFsX25lc3RlZF9tZXNz", - "YWdlGMgBIAEoCzIzLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVy", - "aW5ncy5OZXN0ZWRNZXNzYWdlGicKDU5lc3RlZE1lc3NhZ2USCgoCb28YAiAB", - "KAMSCgoCYmIYASABKAUqBAgCEAsqBAgMEGUitgcKGFRlc3RFeHRyZW1lRGVm", - "YXVsdFZhbHVlcxI/Cg1lc2NhcGVkX2J5dGVzGAEgASgMOihcMDAwXDAwMVww", - "MDdcMDEwXDAxNFxuXHJcdFwwMTNcXFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQz", - "MhgCIAEoDToKNDI5NDk2NzI5NRIqCgxsYXJnZV91aW50NjQYAyABKAQ6FDE4", - "NDQ2NzQ0MDczNzA5NTUxNjE1EiAKC3NtYWxsX2ludDMyGAQgASgFOgstMjE0", - "NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3", - "NzU4MDcSJwoScmVhbGx5X3NtYWxsX2ludDMyGBUgASgFOgstMjE0NzQ4MzY0", - "OBIwChJyZWFsbHlfc21hbGxfaW50NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0", - "Nzc1ODA4EhgKC3V0Zjhfc3RyaW5nGAYgASgJOgPhiLQSFQoKemVyb19mbG9h", - "dBgHIAEoAjoBMBIUCglvbmVfZmxvYXQYCCABKAI6ATESGAoLc21hbGxfZmxv", - "YXQYCSABKAI6AzEuNRIeChJuZWdhdGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0x", - "EhwKDm5lZ2F0aXZlX2Zsb2F0GAsgASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0", - "GAwgASgCOgUyZSswOBIkChRzbWFsbF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoG", - "LThlLTI4EhcKCmluZl9kb3VibGUYDiABKAE6A2luZhIcCg5uZWdfaW5mX2Rv", - "dWJsZRgPIAEoAToELWluZhIXCgpuYW5fZG91YmxlGBAgASgBOgNuYW4SFgoJ", - "aW5mX2Zsb2F0GBEgASgCOgNpbmYSGwoNbmVnX2luZl9mbG9hdBgSIAEoAjoE", - "LWluZhIWCgluYW5fZmxvYXQYEyABKAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgY", - "FCABKAk6FT8gPyA/PyA/PyA/Pz8gPz8vID8/LRIgChBzdHJpbmdfd2l0aF96", - "ZXJvGBcgASgJOgZoZWwAbG8SIgoPYnl0ZXNfd2l0aF96ZXJvGBggASgMOgl3", - "b3JcMDAwbGQSKAoWc3RyaW5nX3BpZWNlX3dpdGhfemVybxgZIAEoCToEYWIA", - "Y0ICCAISIAoOY29yZF93aXRoX3plcm8YGiABKAk6BDEyADNCAggBEiYKEnJl", - "cGxhY2VtZW50X3N0cmluZxgbIAEoCToKJHt1bmtub3dufSJLChFTcGFyc2VF", - "bnVtTWVzc2FnZRI2CgtzcGFyc2VfZW51bRgBIAEoDjIhLnByb3RvYnVmX3Vu", - "aXR0ZXN0LlRlc3RTcGFyc2VFbnVtIhkKCU9uZVN0cmluZxIMCgRkYXRhGAEg", - "ASgJIhoKCk1vcmVTdHJpbmcSDAoEZGF0YRgBIAMoCSIYCghPbmVCeXRlcxIM", - "CgRkYXRhGAEgASgMIhkKCU1vcmVCeXRlcxIMCgRkYXRhGAEgAygMIhwKDElu", - "dDMyTWVzc2FnZRIMCgRkYXRhGAEgASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoE", - "ZGF0YRgBIAEoDSIcCgxJbnQ2NE1lc3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1V", - "aW50NjRNZXNzYWdlEgwKBGRhdGEYASABKAQiGwoLQm9vbE1lc3NhZ2USDAoE", - "ZGF0YRgBIAEoCCLQAQoJVGVzdE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIU", - "Cgpmb29fc3RyaW5nGAIgASgJSAASNgoLZm9vX21lc3NhZ2UYAyABKAsyHy5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNIABI5Cghmb29ncm91cBgE", - "IAEoCjIlLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVvZi5Gb29Hcm91cEgA", - "GiAKCEZvb0dyb3VwEgkKAWEYBSABKAUSCQoBYhgGIAEoCUIFCgNmb28i5wEK", - "HFRlc3RPbmVvZkJhY2t3YXJkc0NvbXBhdGlibGUSDwoHZm9vX2ludBgBIAEo", - "BRISCgpmb29fc3RyaW5nGAIgASgJEjQKC2Zvb19tZXNzYWdlGAMgASgLMh8u", - "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEkoKCGZvb2dyb3VwGAQg", - "ASgKMjgucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mQmFja3dhcmRzQ29t", - "cGF0aWJsZS5Gb29Hcm91cBogCghGb29Hcm91cBIJCgFhGAUgASgFEgkKAWIY", - "BiABKAkingYKClRlc3RPbmVvZjISEQoHZm9vX2ludBgBIAEoBUgAEhQKCmZv", - "b19zdHJpbmcYAiABKAlIABIWCghmb29fY29yZBgDIAEoCUICCAFIABIeChBm", - "b29fc3RyaW5nX3BpZWNlGAQgASgJQgIIAkgAEhMKCWZvb19ieXRlcxgFIAEo", - "DEgAEjwKCGZvb19lbnVtGAYgASgOMigucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dE9uZW9mMi5OZXN0ZWRFbnVtSAASQgoLZm9vX21lc3NhZ2UYByABKAsyKy5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0T25lb2YyLk5lc3RlZE1lc3NhZ2VIABI6", - "Cghmb29ncm91cBgIIAEoCjImLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVv", - "ZjIuRm9vR3JvdXBIABJLChBmb29fbGF6eV9tZXNzYWdlGAsgASgLMisucHJv", - "dG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRNZXNzYWdlQgIoAUgA", - "EhQKB2Jhcl9pbnQYDCABKAU6ATVIARIcCgpiYXJfc3RyaW5nGA0gASgJOgZT", - "VFJJTkdIARIcCghiYXJfY29yZBgOIAEoCToEQ09SREICCAFIARImChBiYXJf", - "c3RyaW5nX3BpZWNlGA8gASgJOgZTUElFQ0VCAggCSAESGgoJYmFyX2J5dGVz", - "GBAgASgMOgVCWVRFU0gBEkEKCGJhcl9lbnVtGBEgASgOMigucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtOgNCQVJIARIPCgdiYXpf", - "aW50GBIgASgFEhcKCmJhel9zdHJpbmcYEyABKAk6A0JBWhogCghGb29Hcm91", - "cBIJCgFhGAkgASgFEgkKAWIYCiABKAkaMwoNTmVzdGVkTWVzc2FnZRIPCgdx", - "dXhfaW50GAEgASgDEhEKCWNvcmdlX2ludBgCIAMoBSInCgpOZXN0ZWRFbnVt", - "EgcKA0ZPTxABEgcKA0JBUhACEgcKA0JBWhADQgUKA2Zvb0IFCgNiYXIiuAEK", - "EVRlc3RSZXF1aXJlZE9uZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29f", - "c3RyaW5nGAIgASgJSAASSQoLZm9vX21lc3NhZ2UYAyABKAsyMi5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UmVxdWlyZWRPbmVvZi5OZXN0ZWRNZXNzYWdlSAAa", - "KAoNTmVzdGVkTWVzc2FnZRIXCg9yZXF1aXJlZF9kb3VibGUYASACKAFCBQoD", - "Zm9vIqoDCg9UZXN0UGFja2VkVHlwZXMSGAoMcGFja2VkX2ludDMyGFogAygF", - "QgIQARIYCgxwYWNrZWRfaW50NjQYWyADKANCAhABEhkKDXBhY2tlZF91aW50", - "MzIYXCADKA1CAhABEhkKDXBhY2tlZF91aW50NjQYXSADKARCAhABEhkKDXBh", - "Y2tlZF9zaW50MzIYXiADKBFCAhABEhkKDXBhY2tlZF9zaW50NjQYXyADKBJC", - "AhABEhoKDnBhY2tlZF9maXhlZDMyGGAgAygHQgIQARIaCg5wYWNrZWRfZml4", - "ZWQ2NBhhIAMoBkICEAESGwoPcGFja2VkX3NmaXhlZDMyGGIgAygPQgIQARIb", - "Cg9wYWNrZWRfc2ZpeGVkNjQYYyADKBBCAhABEhgKDHBhY2tlZF9mbG9hdBhk", - "IAMoAkICEAESGQoNcGFja2VkX2RvdWJsZRhlIAMoAUICEAESFwoLcGFja2Vk", - "X2Jvb2wYZiADKAhCAhABEjcKC3BhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9i", - "dWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhABIsgDChFUZXN0VW5wYWNrZWRU", - "eXBlcxIaCg51bnBhY2tlZF9pbnQzMhhaIAMoBUICEAASGgoOdW5wYWNrZWRf", - "aW50NjQYWyADKANCAhAAEhsKD3VucGFja2VkX3VpbnQzMhhcIAMoDUICEAAS", - "GwoPdW5wYWNrZWRfdWludDY0GF0gAygEQgIQABIbCg91bnBhY2tlZF9zaW50", - "MzIYXiADKBFCAhAAEhsKD3VucGFja2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQ", - "dW5wYWNrZWRfZml4ZWQzMhhgIAMoB0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2", - "NBhhIAMoBkICEAASHQoRdW5wYWNrZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0K", - "EXVucGFja2VkX3NmaXhlZDY0GGMgAygQQgIQABIaCg51bnBhY2tlZF9mbG9h", - "dBhkIAMoAkICEAASGwoPdW5wYWNrZWRfZG91YmxlGGUgAygBQgIQABIZCg11", - "bnBhY2tlZF9ib29sGGYgAygIQgIQABI5Cg11bnBhY2tlZF9lbnVtGGcgAygO", - "Mh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQ", - "YWNrZWRFeHRlbnNpb25zKggIARCAgICAAiIiChZUZXN0VW5wYWNrZWRFeHRl", - "bnNpb25zKggIARCAgICAAiKZBAoVVGVzdER5bmFtaWNFeHRlbnNpb25zEhkK", - "EHNjYWxhcl9leHRlbnNpb24Y0A8gASgHEjcKDmVudW1fZXh0ZW5zaW9uGNEP", - "IAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtElkKFmR5bmFt", - "aWNfZW51bV9leHRlbnNpb24Y0g8gASgOMjgucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdER5bmFtaWNFeHRlbnNpb25zLkR5bmFtaWNFbnVtVHlwZRI9ChFtZXNz", - "YWdlX2V4dGVuc2lvbhjTDyABKAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3Jl", - "aWduTWVzc2FnZRJfChlkeW5hbWljX21lc3NhZ2VfZXh0ZW5zaW9uGNQPIAEo", - "CzI7LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5E", - "eW5hbWljTWVzc2FnZVR5cGUSGwoScmVwZWF0ZWRfZXh0ZW5zaW9uGNUPIAMo", - "CRIdChBwYWNrZWRfZXh0ZW5zaW9uGNYPIAMoEUICEAEaLAoSRHluYW1pY01l", - "c3NhZ2VUeXBlEhYKDWR5bmFtaWNfZmllbGQYtBAgASgFIkcKD0R5bmFtaWNF", - "bnVtVHlwZRIQCgtEWU5BTUlDX0ZPTxCYERIQCgtEWU5BTUlDX0JBUhCZERIQ", - "CgtEWU5BTUlDX0JBWhCaESLAAQojVGVzdFJlcGVhdGVkU2NhbGFyRGlmZmVy", - "ZW50VGFnU2l6ZXMSGAoQcmVwZWF0ZWRfZml4ZWQzMhgMIAMoBxIWCg5yZXBl", - "YXRlZF9pbnQzMhgNIAMoBRIZChByZXBlYXRlZF9maXhlZDY0GP4PIAMoBhIX", - "Cg5yZXBlYXRlZF9pbnQ2NBj/DyADKAMSGAoOcmVwZWF0ZWRfZmxvYXQY/v8P", - "IAMoAhIZCg9yZXBlYXRlZF91aW50NjQY//8PIAMoBCL3CQoQVGVzdFBhcnNp", - "bmdNZXJnZRI7ChJyZXF1aXJlZF9hbGxfdHlwZXMYASACKAsyHy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSOwoSb3B0aW9uYWxfYWxsX3R5cGVz", - "GAIgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEjsKEnJl", - "cGVhdGVkX2FsbF90eXBlcxgDIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxUeXBlcxJICg1vcHRpb25hbGdyb3VwGAogASgKMjEucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdFBhcnNpbmdNZXJnZS5PcHRpb25hbEdyb3VwEkgKDXJl", - "cGVhdGVkZ3JvdXAYFCADKAoyMS5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFy", - "c2luZ01lcmdlLlJlcGVhdGVkR3JvdXAaqgQKF1JlcGVhdGVkRmllbGRzR2Vu", - "ZXJhdG9yEi8KBmZpZWxkMRgBIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxUeXBlcxIvCgZmaWVsZDIYAiADKAsyHy5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsVHlwZXMSLwoGZmllbGQzGAMgAygLMh8ucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbFR5cGVzElIKBmdyb3VwMRgKIAMoCjJCLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5l", - "cmF0b3IuR3JvdXAxElIKBmdyb3VwMhgUIAMoCjJCLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RQYXJzaW5nTWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3Iu", - "R3JvdXAyEi4KBGV4dDEY6AcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dEFsbFR5cGVzEi4KBGV4dDIY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdEFsbFR5cGVzGjkKBkdyb3VwMRIvCgZmaWVsZDEYCyABKAsyHy5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMaOQoGR3JvdXAyEi8KBmZpZWxk", - "MRgVIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1P", - "cHRpb25hbEdyb3VwEkEKGG9wdGlvbmFsX2dyb3VwX2FsbF90eXBlcxgLIAEo", - "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1SZXBlYXRl", - "ZEdyb3VwEkEKGHJlcGVhdGVkX2dyb3VwX2FsbF90eXBlcxgVIAEoCzIfLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcyoJCOgHEICAgIACMlsKDG9w", - "dGlvbmFsX2V4dBIjLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVy", - "Z2UY6AcgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzMlsK", - "DHJlcGVhdGVkX2V4dBIjLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5n", - "TWVyZ2UY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz", - "IkQKG1Rlc3RDb21tZW50SW5qZWN0aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoq", - "LyA8LSBOZWl0aGVyIHNob3VsZCB0aGlzLiIMCgpGb29SZXF1ZXN0Ig0KC0Zv", - "b1Jlc3BvbnNlIhIKEEZvb0NsaWVudE1lc3NhZ2UiEgoQRm9vU2VydmVyTWVz", - "c2FnZSIMCgpCYXJSZXF1ZXN0Ig0KC0JhclJlc3BvbnNlKkAKC0ZvcmVpZ25F", - "bnVtEg8KC0ZPUkVJR05fRk9PEAQSDwoLRk9SRUlHTl9CQVIQBRIPCgtGT1JF", - "SUdOX0JBWhAGKksKFFRlc3RFbnVtV2l0aER1cFZhbHVlEggKBEZPTzEQARII", - "CgRCQVIxEAISBwoDQkFaEAMSCAoERk9PMhABEggKBEJBUjIQAhoCEAEqiQEK", - "DlRlc3RTcGFyc2VFbnVtEgwKCFNQQVJTRV9BEHsSDgoIU1BBUlNFX0IQpucD", - "Eg8KCFNQQVJTRV9DELKxgAYSFQoIU1BBUlNFX0QQ8f//////////ARIVCghT", - "UEFSU0VfRRC03vz///////8BEgwKCFNQQVJTRV9GEAASDAoIU1BBUlNFX0cQ", - "AjKZAQoLVGVzdFNlcnZpY2USRAoDRm9vEh0ucHJvdG9idWZfdW5pdHRlc3Qu", - "Rm9vUmVxdWVzdBoeLnByb3RvYnVmX3VuaXR0ZXN0LkZvb1Jlc3BvbnNlEkQK", - "A0JhchIdLnByb3RvYnVmX3VuaXR0ZXN0LkJhclJlcXVlc3QaHi5wcm90b2J1", - "Zl91bml0dGVzdC5CYXJSZXNwb25zZTpGChhvcHRpb25hbF9pbnQzMl9leHRl", - "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgB", - "IAEoBTpGChhvcHRpb25hbF9pbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgCIAEoAzpHChlvcHRpb25hbF91", - "aW50MzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4", - "dGVuc2lvbnMYAyABKA06RwoZb3B0aW9uYWxfdWludDY0X2V4dGVuc2lvbhIk", - "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAQgASgEOkcK", - "GW9wdGlvbmFsX3NpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxgFIAEoETpHChlvcHRpb25hbF9zaW50NjRf", - "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYBiABKBI6SAoab3B0aW9uYWxfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgHIAEoBzpIChpvcHRp", - "b25hbF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGAggASgGOkkKG29wdGlvbmFsX3NmaXhlZDMyX2V4", + "AxIQCgNORUcQ////////////AUINCgtvbmVvZl9maWVsZCK7AQoSTmVzdGVk", + "VGVzdEFsbFR5cGVzEjQKBWNoaWxkGAEgASgLMiUucHJvdG9idWZfdW5pdHRl", + "c3QuTmVzdGVkVGVzdEFsbFR5cGVzEjAKB3BheWxvYWQYAiABKAsyHy5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSPQoOcmVwZWF0ZWRfY2hpbGQY", + "AyADKAsyJS5wcm90b2J1Zl91bml0dGVzdC5OZXN0ZWRUZXN0QWxsVHlwZXMi", + "NAoUVGVzdERlcHJlY2F0ZWRGaWVsZHMSHAoQZGVwcmVjYXRlZF9pbnQzMhgB", + "IAEoBUICGAEiGwoORm9yZWlnbk1lc3NhZ2USCQoBYxgBIAEoBSIwChJUZXN0", + "UmVzZXJ2ZWRGaWVsZHNKBAgCEANKBAgPEBBKBAgJEAxSA2JhclIDYmF6Ih0K", + "EVRlc3RBbGxFeHRlbnNpb25zKggIARCAgICAAiIkChdPcHRpb25hbEdyb3Vw", + "X2V4dGVuc2lvbhIJCgFhGBEgASgFIiQKF1JlcGVhdGVkR3JvdXBfZXh0ZW5z", + "aW9uEgkKAWEYLyABKAUimAEKE1Rlc3ROZXN0ZWRFeHRlbnNpb24yOQoEdGVz", + "dBIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOoHIAEo", + "CToEdGVzdDJGChduZXN0ZWRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGOsHIAEoCSLVBQoMVGVzdFJl", + "cXVpcmVkEgkKAWEYASACKAUSDgoGZHVtbXkyGAIgASgFEgkKAWIYAyACKAUS", + "DgoGZHVtbXk0GAQgASgFEg4KBmR1bW15NRgFIAEoBRIOCgZkdW1teTYYBiAB", + "KAUSDgoGZHVtbXk3GAcgASgFEg4KBmR1bW15OBgIIAEoBRIOCgZkdW1teTkY", + "CSABKAUSDwoHZHVtbXkxMBgKIAEoBRIPCgdkdW1teTExGAsgASgFEg8KB2R1", + "bW15MTIYDCABKAUSDwoHZHVtbXkxMxgNIAEoBRIPCgdkdW1teTE0GA4gASgF", + "Eg8KB2R1bW15MTUYDyABKAUSDwoHZHVtbXkxNhgQIAEoBRIPCgdkdW1teTE3", + "GBEgASgFEg8KB2R1bW15MTgYEiABKAUSDwoHZHVtbXkxORgTIAEoBRIPCgdk", + "dW1teTIwGBQgASgFEg8KB2R1bW15MjEYFSABKAUSDwoHZHVtbXkyMhgWIAEo", + "BRIPCgdkdW1teTIzGBcgASgFEg8KB2R1bW15MjQYGCABKAUSDwoHZHVtbXky", + "NRgZIAEoBRIPCgdkdW1teTI2GBogASgFEg8KB2R1bW15MjcYGyABKAUSDwoH", + "ZHVtbXkyOBgcIAEoBRIPCgdkdW1teTI5GB0gASgFEg8KB2R1bW15MzAYHiAB", + "KAUSDwoHZHVtbXkzMRgfIAEoBRIPCgdkdW1teTMyGCAgASgFEgkKAWMYISAC", + "KAUyVgoGc2luZ2xlEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMY6AcgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVk", + "MlUKBW11bHRpEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", + "bnMY6QcgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlcXVpcmVkIpoB", + "ChNUZXN0UmVxdWlyZWRGb3JlaWduEjkKEG9wdGlvbmFsX21lc3NhZ2UYASAB", + "KAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWlyZWQSOQoQcmVwZWF0", + "ZWRfbWVzc2FnZRgCIAMoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RSZXF1", + "aXJlZBINCgVkdW1teRgDIAEoBSJaChFUZXN0Rm9yZWlnbk5lc3RlZBJFCg5m", + "b3JlaWduX25lc3RlZBgBIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxUeXBlcy5OZXN0ZWRNZXNzYWdlIhIKEFRlc3RFbXB0eU1lc3NhZ2UiKgoe", + "VGVzdEVtcHR5TWVzc2FnZVdpdGhFeHRlbnNpb25zKggIARCAgICAAiI3ChtU", + "ZXN0TXVsdGlwbGVFeHRlbnNpb25SYW5nZXMqBAgqECsqBgivIBCUISoKCICA", + "BBCAgICAAiI0ChhUZXN0UmVhbGx5TGFyZ2VUYWdOdW1iZXISCQoBYRgBIAEo", + "BRINCgJiYhj///9/IAEoBSJVChRUZXN0UmVjdXJzaXZlTWVzc2FnZRIyCgFh", + "GAEgASgLMicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFJlY3Vyc2l2ZU1lc3Nh", + "Z2USCQoBaRgCIAEoBSJLChRUZXN0TXV0dWFsUmVjdXJzaW9uQRIzCgJiYhgB", + "IAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RNdXR1YWxSZWN1cnNpb25C", + "ImIKFFRlc3RNdXR1YWxSZWN1cnNpb25CEjIKAWEYASABKAsyJy5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0TXV0dWFsUmVjdXJzaW9uQRIWCg5vcHRpb25hbF9p", + "bnQzMhgCIAEoBSKzAQoSVGVzdER1cEZpZWxkTnVtYmVyEgkKAWEYASABKAUS", + "NgoDZm9vGAIgASgKMikucHJvdG9idWZfdW5pdHRlc3QuVGVzdER1cEZpZWxk", + "TnVtYmVyLkZvbxI2CgNiYXIYAyABKAoyKS5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0RHVwRmllbGROdW1iZXIuQmFyGhAKA0ZvbxIJCgFhGAEgASgFGhAKA0Jh", + "chIJCgFhGAEgASgFIkwKEFRlc3RFYWdlck1lc3NhZ2USOAoLc3ViX21lc3Nh", + "Z2UYASABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXNCAigA", + "IksKD1Rlc3RMYXp5TWVzc2FnZRI4CgtzdWJfbWVzc2FnZRgBIAEoCzIfLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlc0ICKAEigAIKGFRlc3ROZXN0", + "ZWRNZXNzYWdlSGFzQml0cxJaChdvcHRpb25hbF9uZXN0ZWRfbWVzc2FnZRgB", + "IAEoCzI5LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3ROZXN0ZWRNZXNzYWdlSGFz", + "Qml0cy5OZXN0ZWRNZXNzYWdlGocBCg1OZXN0ZWRNZXNzYWdlEiQKHG5lc3Rl", + "ZG1lc3NhZ2VfcmVwZWF0ZWRfaW50MzIYASADKAUSUAolbmVzdGVkbWVzc2Fn", + "ZV9yZXBlYXRlZF9mb3JlaWdubWVzc2FnZRgCIAMoCzIhLnByb3RvYnVmX3Vu", + "aXR0ZXN0LkZvcmVpZ25NZXNzYWdlIuUDChdUZXN0Q2FtZWxDYXNlRmllbGRO", + "YW1lcxIWCg5QcmltaXRpdmVGaWVsZBgBIAEoBRITCgtTdHJpbmdGaWVsZBgC", + "IAEoCRIxCglFbnVtRmllbGQYAyABKA4yHi5wcm90b2J1Zl91bml0dGVzdC5G", + "b3JlaWduRW51bRI3CgxNZXNzYWdlRmllbGQYBCABKAsyIS5wcm90b2J1Zl91", + "bml0dGVzdC5Gb3JlaWduTWVzc2FnZRIcChBTdHJpbmdQaWVjZUZpZWxkGAUg", + "ASgJQgIIAhIVCglDb3JkRmllbGQYBiABKAlCAggBEh4KFlJlcGVhdGVkUHJp", + "bWl0aXZlRmllbGQYByADKAUSGwoTUmVwZWF0ZWRTdHJpbmdGaWVsZBgIIAMo", + "CRI5ChFSZXBlYXRlZEVudW1GaWVsZBgJIAMoDjIeLnByb3RvYnVmX3VuaXR0", + "ZXN0LkZvcmVpZ25FbnVtEj8KFFJlcGVhdGVkTWVzc2FnZUZpZWxkGAogAygL", + "MiEucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbk1lc3NhZ2USJAoYUmVwZWF0", + "ZWRTdHJpbmdQaWVjZUZpZWxkGAsgAygJQgIIAhIdChFSZXBlYXRlZENvcmRG", + "aWVsZBgMIAMoCUICCAEi1QEKElRlc3RGaWVsZE9yZGVyaW5ncxIRCglteV9z", + "dHJpbmcYCyABKAkSDgoGbXlfaW50GAEgASgDEhAKCG15X2Zsb2F0GGUgASgC", + "ElUKF29wdGlvbmFsX25lc3RlZF9tZXNzYWdlGMgBIAEoCzIzLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RGaWVsZE9yZGVyaW5ncy5OZXN0ZWRNZXNzYWdlGicK", + "DU5lc3RlZE1lc3NhZ2USCgoCb28YAiABKAMSCgoCYmIYASABKAUqBAgCEAsq", + "BAgMEGUitgcKGFRlc3RFeHRyZW1lRGVmYXVsdFZhbHVlcxI/Cg1lc2NhcGVk", + "X2J5dGVzGAEgASgMOihcMDAwXDAwMVwwMDdcMDEwXDAxNFxuXHJcdFwwMTNc", + "XFwnXCJcMzc2EiAKDGxhcmdlX3VpbnQzMhgCIAEoDToKNDI5NDk2NzI5NRIq", + "CgxsYXJnZV91aW50NjQYAyABKAQ6FDE4NDQ2NzQ0MDczNzA5NTUxNjE1EiAK", + "C3NtYWxsX2ludDMyGAQgASgFOgstMjE0NzQ4MzY0NxIpCgtzbWFsbF9pbnQ2", + "NBgFIAEoAzoULTkyMjMzNzIwMzY4NTQ3NzU4MDcSJwoScmVhbGx5X3NtYWxs", + "X2ludDMyGBUgASgFOgstMjE0NzQ4MzY0OBIwChJyZWFsbHlfc21hbGxfaW50", + "NjQYFiABKAM6FC05MjIzMzcyMDM2ODU0Nzc1ODA4EhgKC3V0Zjhfc3RyaW5n", + "GAYgASgJOgPhiLQSFQoKemVyb19mbG9hdBgHIAEoAjoBMBIUCglvbmVfZmxv", + "YXQYCCABKAI6ATESGAoLc21hbGxfZmxvYXQYCSABKAI6AzEuNRIeChJuZWdh", + "dGl2ZV9vbmVfZmxvYXQYCiABKAI6Ai0xEhwKDm5lZ2F0aXZlX2Zsb2F0GAsg", + "ASgCOgQtMS41EhoKC2xhcmdlX2Zsb2F0GAwgASgCOgUyZSswOBIkChRzbWFs", + "bF9uZWdhdGl2ZV9mbG9hdBgNIAEoAjoGLThlLTI4EhcKCmluZl9kb3VibGUY", + "DiABKAE6A2luZhIcCg5uZWdfaW5mX2RvdWJsZRgPIAEoAToELWluZhIXCgpu", + "YW5fZG91YmxlGBAgASgBOgNuYW4SFgoJaW5mX2Zsb2F0GBEgASgCOgNpbmYS", + "GwoNbmVnX2luZl9mbG9hdBgSIAEoAjoELWluZhIWCgluYW5fZmxvYXQYEyAB", + "KAI6A25hbhIrCgxjcHBfdHJpZ3JhcGgYFCABKAk6FT8gPyA/PyA/PyA/Pz8g", + "Pz8vID8/LRIgChBzdHJpbmdfd2l0aF96ZXJvGBcgASgJOgZoZWwAbG8SIgoP", + "Ynl0ZXNfd2l0aF96ZXJvGBggASgMOgl3b3JcMDAwbGQSKAoWc3RyaW5nX3Bp", + "ZWNlX3dpdGhfemVybxgZIAEoCToEYWIAY0ICCAISIAoOY29yZF93aXRoX3pl", + "cm8YGiABKAk6BDEyADNCAggBEiYKEnJlcGxhY2VtZW50X3N0cmluZxgbIAEo", + "CToKJHt1bmtub3dufSJLChFTcGFyc2VFbnVtTWVzc2FnZRI2CgtzcGFyc2Vf", + "ZW51bRgBIAEoDjIhLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RTcGFyc2VFbnVt", + "IhkKCU9uZVN0cmluZxIMCgRkYXRhGAEgASgJIhoKCk1vcmVTdHJpbmcSDAoE", + "ZGF0YRgBIAMoCSIYCghPbmVCeXRlcxIMCgRkYXRhGAEgASgMIhkKCU1vcmVC", + "eXRlcxIMCgRkYXRhGAEgAygMIhwKDEludDMyTWVzc2FnZRIMCgRkYXRhGAEg", + "ASgFIh0KDVVpbnQzMk1lc3NhZ2USDAoEZGF0YRgBIAEoDSIcCgxJbnQ2NE1l", + "c3NhZ2USDAoEZGF0YRgBIAEoAyIdCg1VaW50NjRNZXNzYWdlEgwKBGRhdGEY", + "ASABKAQiGwoLQm9vbE1lc3NhZ2USDAoEZGF0YRgBIAEoCCLQAQoJVGVzdE9u", + "ZW9mEhEKB2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAAS", + "NgoLZm9vX21lc3NhZ2UYAyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "QWxsVHlwZXNIABI5Cghmb29ncm91cBgEIAEoCjIlLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RPbmVvZi5Gb29Hcm91cEgAGiAKCEZvb0dyb3VwEgkKAWEYBSAB", + "KAUSCQoBYhgGIAEoCUIFCgNmb28i5wEKHFRlc3RPbmVvZkJhY2t3YXJkc0Nv", + "bXBhdGlibGUSDwoHZm9vX2ludBgBIAEoBRISCgpmb29fc3RyaW5nGAIgASgJ", + "EjQKC2Zvb19tZXNzYWdlGAMgASgLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVz", + "dEFsbFR5cGVzEkoKCGZvb2dyb3VwGAQgASgKMjgucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdE9uZW9mQmFja3dhcmRzQ29tcGF0aWJsZS5Gb29Hcm91cBogCghG", + "b29Hcm91cBIJCgFhGAUgASgFEgkKAWIYBiABKAkingYKClRlc3RPbmVvZjIS", + "EQoHZm9vX2ludBgBIAEoBUgAEhQKCmZvb19zdHJpbmcYAiABKAlIABIWCghm", + "b29fY29yZBgDIAEoCUICCAFIABIeChBmb29fc3RyaW5nX3BpZWNlGAQgASgJ", + "QgIIAkgAEhMKCWZvb19ieXRlcxgFIAEoDEgAEjwKCGZvb19lbnVtGAYgASgO", + "MigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5OZXN0ZWRFbnVtSAAS", + "QgoLZm9vX21lc3NhZ2UYByABKAsyKy5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "T25lb2YyLk5lc3RlZE1lc3NhZ2VIABI6Cghmb29ncm91cBgIIAEoCjImLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RPbmVvZjIuRm9vR3JvdXBIABJLChBmb29f", + "bGF6eV9tZXNzYWdlGAsgASgLMisucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9u", + "ZW9mMi5OZXN0ZWRNZXNzYWdlQgIoAUgAEhQKB2Jhcl9pbnQYDCABKAU6ATVI", + "ARIcCgpiYXJfc3RyaW5nGA0gASgJOgZTVFJJTkdIARIcCghiYXJfY29yZBgO", + "IAEoCToEQ09SREICCAFIARImChBiYXJfc3RyaW5nX3BpZWNlGA8gASgJOgZT", + "UElFQ0VCAggCSAESGgoJYmFyX2J5dGVzGBAgASgMOgVCWVRFU0gBEkEKCGJh", + "cl9lbnVtGBEgASgOMigucHJvdG9idWZfdW5pdHRlc3QuVGVzdE9uZW9mMi5O", + "ZXN0ZWRFbnVtOgNCQVJIARIPCgdiYXpfaW50GBIgASgFEhcKCmJhel9zdHJp", + "bmcYEyABKAk6A0JBWhogCghGb29Hcm91cBIJCgFhGAkgASgFEgkKAWIYCiAB", + "KAkaMwoNTmVzdGVkTWVzc2FnZRIPCgdxdXhfaW50GAEgASgDEhEKCWNvcmdl", + "X2ludBgCIAMoBSInCgpOZXN0ZWRFbnVtEgcKA0ZPTxABEgcKA0JBUhACEgcK", + "A0JBWhADQgUKA2Zvb0IFCgNiYXIiuAEKEVRlc3RSZXF1aXJlZE9uZW9mEhEK", + "B2Zvb19pbnQYASABKAVIABIUCgpmb29fc3RyaW5nGAIgASgJSAASSQoLZm9v", + "X21lc3NhZ2UYAyABKAsyMi5wcm90b2J1Zl91bml0dGVzdC5UZXN0UmVxdWly", + "ZWRPbmVvZi5OZXN0ZWRNZXNzYWdlSAAaKAoNTmVzdGVkTWVzc2FnZRIXCg9y", + "ZXF1aXJlZF9kb3VibGUYASACKAFCBQoDZm9vIqoDCg9UZXN0UGFja2VkVHlw", + "ZXMSGAoMcGFja2VkX2ludDMyGFogAygFQgIQARIYCgxwYWNrZWRfaW50NjQY", + "WyADKANCAhABEhkKDXBhY2tlZF91aW50MzIYXCADKA1CAhABEhkKDXBhY2tl", + "ZF91aW50NjQYXSADKARCAhABEhkKDXBhY2tlZF9zaW50MzIYXiADKBFCAhAB", + "EhkKDXBhY2tlZF9zaW50NjQYXyADKBJCAhABEhoKDnBhY2tlZF9maXhlZDMy", + "GGAgAygHQgIQARIaCg5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAESGwoPcGFj", + "a2VkX3NmaXhlZDMyGGIgAygPQgIQARIbCg9wYWNrZWRfc2ZpeGVkNjQYYyAD", + "KBBCAhABEhgKDHBhY2tlZF9mbG9hdBhkIAMoAkICEAESGQoNcGFja2VkX2Rv", + "dWJsZRhlIAMoAUICEAESFwoLcGFja2VkX2Jvb2wYZiADKAhCAhABEjcKC3Bh", + "Y2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVu", + "dW1CAhABIsgDChFUZXN0VW5wYWNrZWRUeXBlcxIaCg51bnBhY2tlZF9pbnQz", + "MhhaIAMoBUICEAASGgoOdW5wYWNrZWRfaW50NjQYWyADKANCAhAAEhsKD3Vu", + "cGFja2VkX3VpbnQzMhhcIAMoDUICEAASGwoPdW5wYWNrZWRfdWludDY0GF0g", + "AygEQgIQABIbCg91bnBhY2tlZF9zaW50MzIYXiADKBFCAhAAEhsKD3VucGFj", + "a2VkX3NpbnQ2NBhfIAMoEkICEAASHAoQdW5wYWNrZWRfZml4ZWQzMhhgIAMo", + "B0ICEAASHAoQdW5wYWNrZWRfZml4ZWQ2NBhhIAMoBkICEAASHQoRdW5wYWNr", + "ZWRfc2ZpeGVkMzIYYiADKA9CAhAAEh0KEXVucGFja2VkX3NmaXhlZDY0GGMg", + "AygQQgIQABIaCg51bnBhY2tlZF9mbG9hdBhkIAMoAkICEAASGwoPdW5wYWNr", + "ZWRfZG91YmxlGGUgAygBQgIQABIZCg11bnBhY2tlZF9ib29sGGYgAygIQgIQ", + "ABI5Cg11bnBhY2tlZF9lbnVtGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", + "Rm9yZWlnbkVudW1CAhAAIiAKFFRlc3RQYWNrZWRFeHRlbnNpb25zKggIARCA", + "gICAAiIiChZUZXN0VW5wYWNrZWRFeHRlbnNpb25zKggIARCAgICAAiKZBAoV", + "VGVzdER5bmFtaWNFeHRlbnNpb25zEhkKEHNjYWxhcl9leHRlbnNpb24Y0A8g", + "ASgHEjcKDmVudW1fZXh0ZW5zaW9uGNEPIAEoDjIeLnByb3RvYnVmX3VuaXR0", + "ZXN0LkZvcmVpZ25FbnVtElkKFmR5bmFtaWNfZW51bV9leHRlbnNpb24Y0g8g", + "ASgOMjgucHJvdG9idWZfdW5pdHRlc3QuVGVzdER5bmFtaWNFeHRlbnNpb25z", + "LkR5bmFtaWNFbnVtVHlwZRI9ChFtZXNzYWdlX2V4dGVuc2lvbhjTDyABKAsy", + "IS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZRJfChlkeW5hbWlj", + "X21lc3NhZ2VfZXh0ZW5zaW9uGNQPIAEoCzI7LnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3REeW5hbWljRXh0ZW5zaW9ucy5EeW5hbWljTWVzc2FnZVR5cGUSGwoS", + "cmVwZWF0ZWRfZXh0ZW5zaW9uGNUPIAMoCRIdChBwYWNrZWRfZXh0ZW5zaW9u", + "GNYPIAMoEUICEAEaLAoSRHluYW1pY01lc3NhZ2VUeXBlEhYKDWR5bmFtaWNf", + "ZmllbGQYtBAgASgFIkcKD0R5bmFtaWNFbnVtVHlwZRIQCgtEWU5BTUlDX0ZP", + "TxCYERIQCgtEWU5BTUlDX0JBUhCZERIQCgtEWU5BTUlDX0JBWhCaESLAAQoj", + "VGVzdFJlcGVhdGVkU2NhbGFyRGlmZmVyZW50VGFnU2l6ZXMSGAoQcmVwZWF0", + "ZWRfZml4ZWQzMhgMIAMoBxIWCg5yZXBlYXRlZF9pbnQzMhgNIAMoBRIZChBy", + "ZXBlYXRlZF9maXhlZDY0GP4PIAMoBhIXCg5yZXBlYXRlZF9pbnQ2NBj/DyAD", + "KAMSGAoOcmVwZWF0ZWRfZmxvYXQY/v8PIAMoAhIZCg9yZXBlYXRlZF91aW50", + "NjQY//8PIAMoBCL3CQoQVGVzdFBhcnNpbmdNZXJnZRI7ChJyZXF1aXJlZF9h", + "bGxfdHlwZXMYASACKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlw", + "ZXMSOwoSb3B0aW9uYWxfYWxsX3R5cGVzGAIgASgLMh8ucHJvdG9idWZfdW5p", + "dHRlc3QuVGVzdEFsbFR5cGVzEjsKEnJlcGVhdGVkX2FsbF90eXBlcxgDIAMo", + "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxJICg1vcHRpb25h", + "bGdyb3VwGAogASgKMjEucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhcnNpbmdN", + "ZXJnZS5PcHRpb25hbEdyb3VwEkgKDXJlcGVhdGVkZ3JvdXAYFCADKAoyMS5w", + "cm90b2J1Zl91bml0dGVzdC5UZXN0UGFyc2luZ01lcmdlLlJlcGVhdGVkR3Jv", + "dXAaqgQKF1JlcGVhdGVkRmllbGRzR2VuZXJhdG9yEi8KBmZpZWxkMRgBIAMo", + "CzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcxIvCgZmaWVsZDIY", + "AiADKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMSLwoGZmll", + "bGQzGAMgAygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzElIK", + "Bmdyb3VwMRgKIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5n", + "TWVyZ2UuUmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAxElIKBmdyb3Vw", + "MhgUIAMoCjJCLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2Uu", + "UmVwZWF0ZWRGaWVsZHNHZW5lcmF0b3IuR3JvdXAyEi4KBGV4dDEY6AcgAygL", + "Mh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzEi4KBGV4dDIY6Qcg", + "AygLMh8ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzGjkKBkdyb3Vw", + "MRIvCgZmaWVsZDEYCyABKAsyHy5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "VHlwZXMaOQoGR3JvdXAyEi8KBmZpZWxkMRgVIAEoCzIfLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxUeXBlcxpSCg1PcHRpb25hbEdyb3VwEkEKGG9wdGlv", + "bmFsX2dyb3VwX2FsbF90eXBlcxgLIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxUeXBlcxpSCg1SZXBlYXRlZEdyb3VwEkEKGHJlcGVhdGVkX2dy", + "b3VwX2FsbF90eXBlcxgVIAEoCzIfLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxUeXBlcyoJCOgHEICAgIACMlsKDG9wdGlvbmFsX2V4dBIjLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6AcgASgLMh8ucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbFR5cGVzMlsKDHJlcGVhdGVkX2V4dBIjLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RQYXJzaW5nTWVyZ2UY6QcgAygLMh8ucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzIkQKG1Rlc3RDb21tZW50SW5qZWN0", + "aW9uTWVzc2FnZRIlCgFhGAEgASgJOhoqLyA8LSBOZWl0aGVyIHNob3VsZCB0", + "aGlzLiIMCgpGb29SZXF1ZXN0Ig0KC0Zvb1Jlc3BvbnNlIhIKEEZvb0NsaWVu", + "dE1lc3NhZ2UiEgoQRm9vU2VydmVyTWVzc2FnZSIMCgpCYXJSZXF1ZXN0Ig0K", + "C0JhclJlc3BvbnNlKkAKC0ZvcmVpZ25FbnVtEg8KC0ZPUkVJR05fRk9PEAQS", + "DwoLRk9SRUlHTl9CQVIQBRIPCgtGT1JFSUdOX0JBWhAGKksKFFRlc3RFbnVt", + "V2l0aER1cFZhbHVlEggKBEZPTzEQARIICgRCQVIxEAISBwoDQkFaEAMSCAoE", + "Rk9PMhABEggKBEJBUjIQAhoCEAEqiQEKDlRlc3RTcGFyc2VFbnVtEgwKCFNQ", + "QVJTRV9BEHsSDgoIU1BBUlNFX0IQpucDEg8KCFNQQVJTRV9DELKxgAYSFQoI", + "U1BBUlNFX0QQ8f//////////ARIVCghTUEFSU0VfRRC03vz///////8BEgwK", + "CFNQQVJTRV9GEAASDAoIU1BBUlNFX0cQAjKZAQoLVGVzdFNlcnZpY2USRAoD", + "Rm9vEh0ucHJvdG9idWZfdW5pdHRlc3QuRm9vUmVxdWVzdBoeLnByb3RvYnVm", + "X3VuaXR0ZXN0LkZvb1Jlc3BvbnNlEkQKA0JhchIdLnByb3RvYnVmX3VuaXR0", + "ZXN0LkJhclJlcXVlc3QaHi5wcm90b2J1Zl91bml0dGVzdC5CYXJSZXNwb25z", + "ZTpGChhvcHRpb25hbF9pbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", + "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgBIAEoBTpGChhvcHRpb25hbF9pbnQ2", + "NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxgCIAEoAzpHChlvcHRpb25hbF91aW50MzJfZXh0ZW5zaW9uEiQucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYAyABKA06RwoZb3B0", + "aW9uYWxfdWludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxFeHRlbnNpb25zGAQgASgEOkcKGW9wdGlvbmFsX3NpbnQzMl9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgF", + "IAEoETpHChlvcHRpb25hbF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYBiABKBI6SAoab3B0aW9uYWxf", + "Zml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxgHIAEoBzpIChpvcHRpb25hbF9maXhlZDY0X2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAggASgG", + "OkkKG29wdGlvbmFsX3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAkgASgPOkkKG29wdGlvbmFsX3Nm", + "aXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", + "eHRlbnNpb25zGAogASgQOkYKGG9wdGlvbmFsX2Zsb2F0X2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAsgASgCOkcK", + "GW9wdGlvbmFsX2RvdWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEoATpFChdvcHRpb25hbF9ib29sX2V4", + "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", + "GA0gASgIOkcKGW9wdGlvbmFsX3N0cmluZ19leHRlbnNpb24SJC5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgOIAEoCTpGChhvcHRpb25h", + "bF9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxgPIAEoDDpxChdvcHRpb25hbGdyb3VwX2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBAgASgKMiou", + "cHJvdG9idWZfdW5pdHRlc3QuT3B0aW9uYWxHcm91cF9leHRlbnNpb246fgoh", + "b3B0aW9uYWxfbmVzdGVkX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEiABKAsyLS5wcm90b2J1Zl91", + "bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkTWVzc2FnZTpzCiJvcHRpb25h", + "bF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYEyABKAsyIS5wcm90b2J1Zl91bml0dGVz", + "dC5Gb3JlaWduTWVzc2FnZTp4CiFvcHRpb25hbF9pbXBvcnRfbWVzc2FnZV9l", + "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u", + "cxgUIAEoCzInLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRNZXNz", + "YWdlOngKHm9wdGlvbmFsX25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBUgASgOMioucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06bQofb3B0aW9u", + "YWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxFeHRlbnNpb25zGBYgASgOMh4ucHJvdG9idWZfdW5pdHRlc3Qu", + "Rm9yZWlnbkVudW06cgoeb3B0aW9uYWxfaW1wb3J0X2VudW1fZXh0ZW5zaW9u", + "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYFyABKA4y", + "JC5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuSW1wb3J0RW51bTpRCh9vcHRp", + "b25hbF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYGCABKAlCAggCOkkKF29wdGlvbmFsX2Nv", + "cmRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYGSABKAlCAggBOoUBCihvcHRpb25hbF9wdWJsaWNfaW1wb3J0X21l", + "c3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4", + "dGVuc2lvbnMYGiABKAsyLS5wcm90b2J1Zl91bml0dGVzdF9pbXBvcnQuUHVi", + "bGljSW1wb3J0TWVzc2FnZTqAAQofb3B0aW9uYWxfbGF6eV9tZXNzYWdlX2V4", "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", - "GAkgASgPOkkKG29wdGlvbmFsX3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGAogASgQOkYKGG9wdGlv", - "bmFsX2Zsb2F0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGAsgASgCOkcKGW9wdGlvbmFsX2RvdWJsZV9leHRlbnNp", - "b24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgMIAEo", - "ATpFChdvcHRpb25hbF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGA0gASgIOkcKGW9wdGlvbmFsX3N0cmlu", - "Z19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", - "aW9ucxgOIAEoCTpGChhvcHRpb25hbF9ieXRlc19leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgPIAEoDDpxChdvcHRp", - "b25hbGdyb3VwX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGBAgASgKMioucHJvdG9idWZfdW5pdHRlc3QuT3B0aW9u", - "YWxHcm91cF9leHRlbnNpb246fgohb3B0aW9uYWxfbmVzdGVkX21lc3NhZ2Vf", + "GBsgASgLMi0ucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3Rl", + "ZE1lc3NhZ2VCAigBOkYKGHJlcGVhdGVkX2ludDMyX2V4dGVuc2lvbhIkLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGB8gAygFOkYKGHJl", + "cGVhdGVkX2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxFeHRlbnNpb25zGCAgAygDOkcKGXJlcGVhdGVkX3VpbnQzMl9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgh", + "IAMoDTpHChlyZXBlYXRlZF91aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", + "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYIiADKAQ6RwoZcmVwZWF0ZWRf", + "c2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", + "eHRlbnNpb25zGCMgAygROkcKGXJlcGVhdGVkX3NpbnQ2NF9leHRlbnNpb24S", + "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgkIAMoEjpI", + "ChpyZXBlYXRlZF9maXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCUgAygHOkgKGnJlcGVhdGVkX2ZpeGVk", + "NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYJiADKAY6SQobcmVwZWF0ZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEiQu", + "cHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJyADKA86SQob", + "cmVwZWF0ZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdEFsbEV4dGVuc2lvbnMYKCADKBA6RgoYcmVwZWF0ZWRfZmxvYXRf", "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYEiABKAsyLS5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVz", - "dGVkTWVzc2FnZTpzCiJvcHRpb25hbF9mb3JlaWduX21lc3NhZ2VfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYEyAB", - "KAsyIS5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduTWVzc2FnZTp4CiFvcHRp", - "b25hbF9pbXBvcnRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", - "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgUIAEoCzInLnByb3RvYnVmX3VuaXR0", - "ZXN0X2ltcG9ydC5JbXBvcnRNZXNzYWdlOngKHm9wdGlvbmFsX25lc3RlZF9l", - "bnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGBUgASgOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVz", - "Lk5lc3RlZEVudW06bQofb3B0aW9uYWxfZm9yZWlnbl9lbnVtX2V4dGVuc2lv", - "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBYgASgO", - "Mh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW06cgoeb3B0aW9uYWxf", - "aW1wb3J0X2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dEFsbEV4dGVuc2lvbnMYFyABKA4yJC5wcm90b2J1Zl91bml0dGVzdF9pbXBv", - "cnQuSW1wb3J0RW51bTpRCh9vcHRpb25hbF9zdHJpbmdfcGllY2VfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGCAB", - "KAlCAggCOkkKF29wdGlvbmFsX2NvcmRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGSABKAlCAggBOoUBCihvcHRp", - "b25hbF9wdWJsaWNfaW1wb3J0X21lc3NhZ2VfZXh0ZW5zaW9uEiQucHJvdG9i", - "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYGiABKAsyLS5wcm90b2J1", - "Zl91bml0dGVzdF9pbXBvcnQuUHVibGljSW1wb3J0TWVzc2FnZTqAAQofb3B0", - "aW9uYWxfbGF6eV9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGBsgASgLMi0ucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEFsbFR5cGVzLk5lc3RlZE1lc3NhZ2VCAigBOkYKGHJlcGVhdGVk", - "X2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", - "eHRlbnNpb25zGB8gAygFOkYKGHJlcGVhdGVkX2ludDY0X2V4dGVuc2lvbhIk", - "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCAgAygDOkcK", - "GXJlcGVhdGVkX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxghIAMoDTpHChlyZXBlYXRlZF91aW50NjRf", + "bnMYKSADKAI6RwoZcmVwZWF0ZWRfZG91YmxlX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCogAygBOkUKF3JlcGVh", + "dGVkX2Jvb2xfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs", + "bEV4dGVuc2lvbnMYKyADKAg6RwoZcmVwZWF0ZWRfc3RyaW5nX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCwgAygJ", + "OkYKGHJlcGVhdGVkX2J5dGVzX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0", + "ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0gAygMOnEKF3JlcGVhdGVkZ3JvdXBf", "ZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lv", - "bnMYIiADKAQ6RwoZcmVwZWF0ZWRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCMgAygROkcKGXJlcGVh", - "dGVkX3NpbnQ2NF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", - "QWxsRXh0ZW5zaW9ucxgkIAMoEjpIChpyZXBlYXRlZF9maXhlZDMyX2V4dGVu", - "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGCUg", - "AygHOkgKGnJlcGVhdGVkX2ZpeGVkNjRfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYJiADKAY6SQobcmVwZWF0ZWRf", - "c2ZpeGVkMzJfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFs", - "bEV4dGVuc2lvbnMYJyADKA86SQobcmVwZWF0ZWRfc2ZpeGVkNjRfZXh0ZW5z", - "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKCAD", - "KBA6RgoYcmVwZWF0ZWRfZmxvYXRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKSADKAI6RwoZcmVwZWF0ZWRfZG91", - "YmxlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGCogAygBOkUKF3JlcGVhdGVkX2Jvb2xfZXh0ZW5zaW9uEiQucHJv", - "dG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYKyADKAg6RwoZcmVw", - "ZWF0ZWRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGCwgAygJOkYKGHJlcGVhdGVkX2J5dGVzX2V4dGVu", - "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGC0g", - "AygMOnEKF3JlcGVhdGVkZ3JvdXBfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5p", - "dHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYLiADKAoyKi5wcm90b2J1Zl91bml0", - "dGVzdC5SZXBlYXRlZEdyb3VwX2V4dGVuc2lvbjp+CiFyZXBlYXRlZF9uZXN0", - "ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", - "QWxsRXh0ZW5zaW9ucxgwIAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxUeXBlcy5OZXN0ZWRNZXNzYWdlOnMKInJlcGVhdGVkX2ZvcmVpZ25fbWVz", - "c2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxgxIAMoCzIhLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNz", - "YWdlOngKIXJlcGVhdGVkX2ltcG9ydF9tZXNzYWdlX2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGDIgAygLMicucHJv", - "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydE1lc3NhZ2U6eAoecmVwZWF0", - "ZWRfbmVzdGVkX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdEFsbEV4dGVuc2lvbnMYMyADKA4yKi5wcm90b2J1Zl91bml0dGVzdC5U", - "ZXN0QWxsVHlwZXMuTmVzdGVkRW51bTptCh9yZXBlYXRlZF9mb3JlaWduX2Vu", - "dW1fZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", - "c2lvbnMYNCADKA4yHi5wcm90b2J1Zl91bml0dGVzdC5Gb3JlaWduRW51bTpy", - "Ch5yZXBlYXRlZF9pbXBvcnRfZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg1IAMoDjIkLnByb3RvYnVmX3Vu", - "aXR0ZXN0X2ltcG9ydC5JbXBvcnRFbnVtOlEKH3JlcGVhdGVkX3N0cmluZ19w", - "aWVjZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxg2IAMoCUICCAI6SQoXcmVwZWF0ZWRfY29yZF9leHRlbnNpb24S", - "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg3IAMoCUIC", - "CAE6gAEKH3JlcGVhdGVkX2xhenlfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90", - "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg5IAMoCzItLnByb3Rv", - "YnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlQgIoATpJ", - "ChdkZWZhdWx0X2ludDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RBbGxFeHRlbnNpb25zGD0gASgFOgI0MTpJChdkZWZhdWx0X2ludDY0", - "X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNp", - "b25zGD4gASgDOgI0MjpKChhkZWZhdWx0X3VpbnQzMl9leHRlbnNpb24SJC5w", - "cm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6", - "SgoYZGVmYXVsdF91aW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEFsbEV4dGVuc2lvbnMYQCABKAQ6AjQ0OksKGGRlZmF1bHRfc2lu", - "dDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", - "bnNpb25zGEEgASgROgMtNDU6SgoYZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9u", - "EiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6", - "AjQ2OksKGWRlZmF1bHRfZml4ZWQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVs", - "dF9maXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", - "bGxFeHRlbnNpb25zGEQgASgGOgI0ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4", - "dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25z", - "GEUgASgPOgI0OTpNChpkZWZhdWx0X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEYgASgQOgMtNTA6", - "SwoXZGVmYXVsdF9mbG9hdF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxhHIAEoAjoENTEuNTpNChhkZWZhdWx0X2Rv", - "dWJsZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0", - "ZW5zaW9ucxhIIAEoAToFNTIwMDA6SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lv", - "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEkgASgI", - "OgR0cnVlOk0KGGRlZmF1bHRfc3RyaW5nX2V4dGVuc2lvbhIkLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEogASgJOgVoZWxsbzpMChdk", - "ZWZhdWx0X2J5dGVzX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGEsgASgMOgV3b3JsZDp8Ch1kZWZhdWx0X25lc3Rl", - "ZF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxF", - "eHRlbnNpb25zGFEgASgOMioucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5", - "cGVzLk5lc3RlZEVudW06A0JBUjp5Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9l", - "eHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9u", - "cxhSIAEoDjIeLnByb3RvYnVmX3VuaXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JF", - "SUdOX0JBUjp9Ch1kZWZhdWx0X2ltcG9ydF9lbnVtX2V4dGVuc2lvbhIkLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFMgASgOMiQucHJv", - "dG9idWZfdW5pdHRlc3RfaW1wb3J0LkltcG9ydEVudW06CklNUE9SVF9CQVI6", - "VQoeZGVmYXVsdF9zdHJpbmdfcGllY2VfZXh0ZW5zaW9uEiQucHJvdG9idWZf", - "dW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYVCABKAk6A2FiY0ICCAI6TQoW", - "ZGVmYXVsdF9jb3JkX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRl", - "c3RBbGxFeHRlbnNpb25zGFUgASgJOgMxMjNCAggBOkQKFm9uZW9mX3VpbnQz", - "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", - "aW9ucxhvIAEoDTp7Ch5vbmVvZl9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24S", - "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhwIAEoCzIt", + "bnMYLiADKAoyKi5wcm90b2J1Zl91bml0dGVzdC5SZXBlYXRlZEdyb3VwX2V4", + "dGVuc2lvbjp+CiFyZXBlYXRlZF9uZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24S", + "JC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgwIAMoCzIt", "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdl", - "OkQKFm9uZW9mX3N0cmluZ19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVz", - "dC5UZXN0QWxsRXh0ZW5zaW9ucxhxIAEoCTpDChVvbmVvZl9ieXRlc19leHRl", - "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhy", - "IAEoDDpCChNteV9leHRlbnNpb25fc3RyaW5nEiUucHJvdG9idWZfdW5pdHRl", - "c3QuVGVzdEZpZWxkT3JkZXJpbmdzGDIgASgJOj8KEG15X2V4dGVuc2lvbl9p", - "bnQSJS5wcm90b2J1Zl91bml0dGVzdC5UZXN0RmllbGRPcmRlcmluZ3MYBSAB", - "KAU6SwoWcGFja2VkX2ludDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGFogAygFQgIQATpLChZwYWNrZWRf", + "OnMKInJlcGVhdGVkX2ZvcmVpZ25fbWVzc2FnZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxgxIAMoCzIhLnByb3Rv", + "YnVmX3VuaXR0ZXN0LkZvcmVpZ25NZXNzYWdlOngKIXJlcGVhdGVkX2ltcG9y", + "dF9tZXNzYWdlX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGDIgAygLMicucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", + "LkltcG9ydE1lc3NhZ2U6eAoecmVwZWF0ZWRfbmVzdGVkX2VudW1fZXh0ZW5z", + "aW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYMyAD", + "KA4yKi5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsVHlwZXMuTmVzdGVkRW51", + "bTptCh9yZXBlYXRlZF9mb3JlaWduX2VudW1fZXh0ZW5zaW9uEiQucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMYNCADKA4yHi5wcm90b2J1", + "Zl91bml0dGVzdC5Gb3JlaWduRW51bTpyCh5yZXBlYXRlZF9pbXBvcnRfZW51", + "bV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxg1IAMoDjIkLnByb3RvYnVmX3VuaXR0ZXN0X2ltcG9ydC5JbXBvcnRF", + "bnVtOlEKH3JlcGVhdGVkX3N0cmluZ19waWVjZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxg2IAMoCUICCAI6SQoX", + "cmVwZWF0ZWRfY29yZF9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0QWxsRXh0ZW5zaW9ucxg3IAMoCUICCAE6gAEKH3JlcGVhdGVkX2xhenlf", + "bWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxs", + "RXh0ZW5zaW9ucxg5IAMoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxU", + "eXBlcy5OZXN0ZWRNZXNzYWdlQgIoATpJChdkZWZhdWx0X2ludDMyX2V4dGVu", + "c2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD0g", + "ASgFOgI0MTpJChdkZWZhdWx0X2ludDY0X2V4dGVuc2lvbhIkLnByb3RvYnVm", + "X3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGD4gASgDOgI0MjpKChhkZWZh", + "dWx0X3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0", + "QWxsRXh0ZW5zaW9ucxg/IAEoDToCNDM6SgoYZGVmYXVsdF91aW50NjRfZXh0", + "ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVuc2lvbnMY", + "QCABKAQ6AjQ0OksKGGRlZmF1bHRfc2ludDMyX2V4dGVuc2lvbhIkLnByb3Rv", + "YnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEEgASgROgMtNDU6SgoY", + "ZGVmYXVsdF9zaW50NjRfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3Qu", + "VGVzdEFsbEV4dGVuc2lvbnMYQiABKBI6AjQ2OksKGWRlZmF1bHRfZml4ZWQz", + "Ml9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5z", + "aW9ucxhDIAEoBzoCNDc6SwoZZGVmYXVsdF9maXhlZDY0X2V4dGVuc2lvbhIk", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEQgASgGOgI0", + "ODpMChpkZWZhdWx0X3NmaXhlZDMyX2V4dGVuc2lvbhIkLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEUgASgPOgI0OTpNChpkZWZhdWx0", + "X3NmaXhlZDY0X2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGEYgASgQOgMtNTA6SwoXZGVmYXVsdF9mbG9hdF9leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhH", + "IAEoAjoENTEuNTpNChhkZWZhdWx0X2RvdWJsZV9leHRlbnNpb24SJC5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhIIAEoAToFNTIwMDA6", + "SgoWZGVmYXVsdF9ib29sX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RBbGxFeHRlbnNpb25zGEkgASgIOgR0cnVlOk0KGGRlZmF1bHRfc3Ry", + "aW5nX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRl", + "bnNpb25zGEogASgJOgVoZWxsbzpMChdkZWZhdWx0X2J5dGVzX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGEsgASgM", + "OgV3b3JsZDp8Ch1kZWZhdWx0X25lc3RlZF9lbnVtX2V4dGVuc2lvbhIkLnBy", + "b3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFEgASgOMioucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdEFsbFR5cGVzLk5lc3RlZEVudW06A0JBUjp5", + "Ch5kZWZhdWx0X2ZvcmVpZ25fZW51bV9leHRlbnNpb24SJC5wcm90b2J1Zl91", + "bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhSIAEoDjIeLnByb3RvYnVmX3Vu", + "aXR0ZXN0LkZvcmVpZ25FbnVtOgtGT1JFSUdOX0JBUjp9Ch1kZWZhdWx0X2lt", + "cG9ydF9lbnVtX2V4dGVuc2lvbhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RB", + "bGxFeHRlbnNpb25zGFMgASgOMiQucHJvdG9idWZfdW5pdHRlc3RfaW1wb3J0", + "LkltcG9ydEVudW06CklNUE9SVF9CQVI6VQoeZGVmYXVsdF9zdHJpbmdfcGll", + "Y2VfZXh0ZW5zaW9uEiQucHJvdG9idWZfdW5pdHRlc3QuVGVzdEFsbEV4dGVu", + "c2lvbnMYVCABKAk6A2FiY0ICCAI6TQoWZGVmYXVsdF9jb3JkX2V4dGVuc2lv", + "bhIkLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RBbGxFeHRlbnNpb25zGFUgASgJ", + "OgMxMjNCAggBOkQKFm9uZW9mX3VpbnQzMl9leHRlbnNpb24SJC5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhvIAEoDTp7Ch5vbmVvZl9u", + "ZXN0ZWRfbWVzc2FnZV9leHRlbnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5U", + "ZXN0QWxsRXh0ZW5zaW9ucxhwIAEoCzItLnByb3RvYnVmX3VuaXR0ZXN0LlRl", + "c3RBbGxUeXBlcy5OZXN0ZWRNZXNzYWdlOkQKFm9uZW9mX3N0cmluZ19leHRl", + "bnNpb24SJC5wcm90b2J1Zl91bml0dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhx", + "IAEoCTpDChVvbmVvZl9ieXRlc19leHRlbnNpb24SJC5wcm90b2J1Zl91bml0", + "dGVzdC5UZXN0QWxsRXh0ZW5zaW9ucxhyIAEoDDpCChNteV9leHRlbnNpb25f", + "c3RyaW5nEiUucHJvdG9idWZfdW5pdHRlc3QuVGVzdEZpZWxkT3JkZXJpbmdz", + "GDIgASgJOj8KEG15X2V4dGVuc2lvbl9pbnQSJS5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0RmllbGRPcmRlcmluZ3MYBSABKAU6SwoWcGFja2VkX2ludDMyX2V4", + "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp", + "b25zGFogAygFQgIQATpLChZwYWNrZWRfaW50NjRfZXh0ZW5zaW9uEicucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYWyADKANCAhAB", + "OkwKF3BhY2tlZF91aW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXCADKA1CAhABOkwKF3BhY2tlZF91", "aW50NjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl", - "ZEV4dGVuc2lvbnMYWyADKANCAhABOkwKF3BhY2tlZF91aW50MzJfZXh0ZW5z", + "ZEV4dGVuc2lvbnMYXSADKARCAhABOkwKF3BhY2tlZF9zaW50MzJfZXh0ZW5z", "aW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMY", - "XCADKA1CAhABOkwKF3BhY2tlZF91aW50NjRfZXh0ZW5zaW9uEicucHJvdG9i", - "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXSADKARCAhABOkwK", - "F3BhY2tlZF9zaW50MzJfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdFBhY2tlZEV4dGVuc2lvbnMYXiADKBFCAhABOkwKF3BhY2tlZF9zaW50", - "NjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4", - "dGVuc2lvbnMYXyADKBJCAhABOk0KGHBhY2tlZF9maXhlZDMyX2V4dGVuc2lv", - "bhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGAg", - "AygHQgIQATpNChhwYWNrZWRfZml4ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhhIAMoBkICEAE6TgoZ", - "cGFja2VkX3NmaXhlZDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RQYWNrZWRFeHRlbnNpb25zGGIgAygPQgIQATpOChlwYWNrZWRfc2Zp", - "eGVkNjRfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tl", - "ZEV4dGVuc2lvbnMYYyADKBBCAhABOksKFnBhY2tlZF9mbG9hdF9leHRlbnNp", - "b24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhk", - "IAMoAkICEAE6TAoXcGFja2VkX2RvdWJsZV9leHRlbnNpb24SJy5wcm90b2J1", - "Zl91bml0dGVzdC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhlIAMoAUICEAE6SgoV", - "cGFja2VkX2Jvb2xfZXh0ZW5zaW9uEicucHJvdG9idWZfdW5pdHRlc3QuVGVz", - "dFBhY2tlZEV4dGVuc2lvbnMYZiADKAhCAhABOmoKFXBhY2tlZF9lbnVtX2V4", - "dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNp", - "b25zGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAB", - "Ok8KGHVucGFja2VkX2ludDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0", - "ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWiADKAVCAhAAOk8KGHVucGFj", - "a2VkX2ludDY0X2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RV", - "bnBhY2tlZEV4dGVuc2lvbnMYWyADKANCAhAAOlAKGXVucGFja2VkX3VpbnQz", - "Ml9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRF", - "eHRlbnNpb25zGFwgAygNQgIQADpQChl1bnBhY2tlZF91aW50NjRfZXh0ZW5z", + "XiADKBFCAhABOkwKF3BhY2tlZF9zaW50NjRfZXh0ZW5zaW9uEicucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYXyADKBJCAhABOk0K", + "GHBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0", + "LlRlc3RQYWNrZWRFeHRlbnNpb25zGGAgAygHQgIQATpNChhwYWNrZWRfZml4", + "ZWQ2NF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", + "RXh0ZW5zaW9ucxhhIAMoBkICEAE6TgoZcGFja2VkX3NmaXhlZDMyX2V4dGVu", + "c2lvbhInLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25z", + "GGIgAygPQgIQATpOChlwYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEicucHJv", + "dG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYYyADKBBCAhAB", + "OksKFnBhY2tlZF9mbG9hdF9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVz", + "dC5UZXN0UGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAE6TAoXcGFja2VkX2Rv", + "dWJsZV9leHRlbnNpb24SJy5wcm90b2J1Zl91bml0dGVzdC5UZXN0UGFja2Vk", + "RXh0ZW5zaW9ucxhlIAMoAUICEAE6SgoVcGFja2VkX2Jvb2xfZXh0ZW5zaW9u", + "EicucHJvdG9idWZfdW5pdHRlc3QuVGVzdFBhY2tlZEV4dGVuc2lvbnMYZiAD", + "KAhCAhABOmoKFXBhY2tlZF9lbnVtX2V4dGVuc2lvbhInLnByb3RvYnVmX3Vu", + "aXR0ZXN0LlRlc3RQYWNrZWRFeHRlbnNpb25zGGcgAygOMh4ucHJvdG9idWZf", + "dW5pdHRlc3QuRm9yZWlnbkVudW1CAhABOk8KGHVucGFja2VkX2ludDMyX2V4", + "dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVu", + "c2lvbnMYWiADKAVCAhAAOk8KGHVucGFja2VkX2ludDY0X2V4dGVuc2lvbhIp", + "LnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYWyAD", + "KANCAhAAOlAKGXVucGFja2VkX3VpbnQzMl9leHRlbnNpb24SKS5wcm90b2J1", + "Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGFwgAygNQgIQADpQ", + "Chl1bnBhY2tlZF91aW50NjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRl", + "c3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhdIAMoBEICEAA6UAoZdW5wYWNr", + "ZWRfc2ludDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RV", + "bnBhY2tlZEV4dGVuc2lvbnMYXiADKBFCAhAAOlAKGXVucGFja2VkX3NpbnQ2", + "NF9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRF", + "eHRlbnNpb25zGF8gAygSQgIQADpRChp1bnBhY2tlZF9maXhlZDMyX2V4dGVu", + "c2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lv", + "bnMYYCADKAdCAhAAOlEKGnVucGFja2VkX2ZpeGVkNjRfZXh0ZW5zaW9uEiku", + "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhhIAMo", + "BkICEAA6UgobdW5wYWNrZWRfc2ZpeGVkMzJfZXh0ZW5zaW9uEikucHJvdG9i", + "dWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhiIAMoD0ICEAA6", + "UgobdW5wYWNrZWRfc2ZpeGVkNjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5p", + "dHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhjIAMoEEICEAA6TwoYdW5w", + "YWNrZWRfZmxvYXRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVz", + "dFVucGFja2VkRXh0ZW5zaW9ucxhkIAMoAkICEAA6UAoZdW5wYWNrZWRfZG91", + "YmxlX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tl", + "ZEV4dGVuc2lvbnMYZSADKAFCAhAAOk4KF3VucGFja2VkX2Jvb2xfZXh0ZW5z", "aW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9u", - "cxhdIAMoBEICEAA6UAoZdW5wYWNrZWRfc2ludDMyX2V4dGVuc2lvbhIpLnBy", - "b3RvYnVmX3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYXiADKBFC", - "AhAAOlAKGXVucGFja2VkX3NpbnQ2NF9leHRlbnNpb24SKS5wcm90b2J1Zl91", - "bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGF8gAygSQgIQADpRChp1", - "bnBhY2tlZF9maXhlZDMyX2V4dGVuc2lvbhIpLnByb3RvYnVmX3VuaXR0ZXN0", - "LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYYCADKAdCAhAAOlEKGnVucGFja2Vk", - "X2ZpeGVkNjRfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVu", - "cGFja2VkRXh0ZW5zaW9ucxhhIAMoBkICEAA6UgobdW5wYWNrZWRfc2ZpeGVk", - "MzJfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2Vk", - "RXh0ZW5zaW9ucxhiIAMoD0ICEAA6UgobdW5wYWNrZWRfc2ZpeGVkNjRfZXh0", - "ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5z", - "aW9ucxhjIAMoEEICEAA6TwoYdW5wYWNrZWRfZmxvYXRfZXh0ZW5zaW9uEiku", - "cHJvdG9idWZfdW5pdHRlc3QuVGVzdFVucGFja2VkRXh0ZW5zaW9ucxhkIAMo", - "AkICEAA6UAoZdW5wYWNrZWRfZG91YmxlX2V4dGVuc2lvbhIpLnByb3RvYnVm", - "X3VuaXR0ZXN0LlRlc3RVbnBhY2tlZEV4dGVuc2lvbnMYZSADKAFCAhAAOk4K", - "F3VucGFja2VkX2Jvb2xfZXh0ZW5zaW9uEikucHJvdG9idWZfdW5pdHRlc3Qu", - "VGVzdFVucGFja2VkRXh0ZW5zaW9ucxhmIAMoCEICEAA6bgoXdW5wYWNrZWRf", - "ZW51bV9leHRlbnNpb24SKS5wcm90b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNr", - "ZWRFeHRlbnNpb25zGGcgAygOMh4ucHJvdG9idWZfdW5pdHRlc3QuRm9yZWln", - "bkVudW1CAhAAQkFCDVVuaXR0ZXN0UHJvdG9IAYABAYgBAZABAfgBAaoCIUdv", - "b2dsZS5Qcm90b2NvbEJ1ZmZlcnMuVGVzdFByb3Rvcw==")); + "cxhmIAMoCEICEAA6bgoXdW5wYWNrZWRfZW51bV9leHRlbnNpb24SKS5wcm90", + "b2J1Zl91bml0dGVzdC5UZXN0VW5wYWNrZWRFeHRlbnNpb25zGGcgAygOMh4u", + "cHJvdG9idWZfdW5pdHRlc3QuRm9yZWlnbkVudW1CAhAAQkFCDVVuaXR0ZXN0", + "UHJvdG9IAYABAYgBAZABAfgBAaoCIUdvb2dsZS5Qcm90b2NvbEJ1ZmZlcnMu", + "VGVzdFByb3Rvcw==")); pbd::FileDescriptor.InternalDescriptorAssigner assigner = delegate(pbd::FileDescriptor root) { descriptor = root; internal__static_protobuf_unittest_TestAllTypes__Descriptor = Descriptor.MessageTypes[0]; internal__static_protobuf_unittest_TestAllTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder>(internal__static_protobuf_unittest_TestAllTypes__Descriptor, - new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "OptionalPublicImportMessage", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", }); + new string[] { "OptionalInt32", "OptionalInt64", "OptionalUint32", "OptionalUint64", "OptionalSint32", "OptionalSint64", "OptionalFixed32", "OptionalFixed64", "OptionalSfixed32", "OptionalSfixed64", "OptionalFloat", "OptionalDouble", "OptionalBool", "OptionalString", "OptionalBytes", "OptionalGroup", "OptionalNestedMessage", "OptionalForeignMessage", "OptionalImportMessage", "OptionalNestedEnum", "OptionalForeignEnum", "OptionalImportEnum", "OptionalStringPiece", "OptionalCord", "OptionalPublicImportMessage", "OptionalLazyMessage", "RepeatedInt32", "RepeatedInt64", "RepeatedUint32", "RepeatedUint64", "RepeatedSint32", "RepeatedSint64", "RepeatedFixed32", "RepeatedFixed64", "RepeatedSfixed32", "RepeatedSfixed64", "RepeatedFloat", "RepeatedDouble", "RepeatedBool", "RepeatedString", "RepeatedBytes", "RepeatedGroup", "RepeatedNestedMessage", "RepeatedForeignMessage", "RepeatedImportMessage", "RepeatedNestedEnum", "RepeatedForeignEnum", "RepeatedImportEnum", "RepeatedStringPiece", "RepeatedCord", "RepeatedLazyMessage", "DefaultInt32", "DefaultInt64", "DefaultUint32", "DefaultUint64", "DefaultSint32", "DefaultSint64", "DefaultFixed32", "DefaultFixed64", "DefaultSfixed32", "DefaultSfixed64", "DefaultFloat", "DefaultDouble", "DefaultBool", "DefaultString", "DefaultBytes", "DefaultNestedEnum", "DefaultForeignEnum", "DefaultImportEnum", "DefaultStringPiece", "DefaultCord", "OneofUint32", "OneofNestedMessage", "OneofString", "OneofBytes", "OneofField", }); internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestAllTypes__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestAllTypes_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestAllTypes_NestedMessage__Descriptor, @@ -1000,7 +1005,7 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor = Descriptor.MessageTypes[1]; internal__static_protobuf_unittest_NestedTestAllTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder>(internal__static_protobuf_unittest_NestedTestAllTypes__Descriptor, - new string[] { "Child", "Payload", }); + new string[] { "Child", "Payload", "RepeatedChild", }); internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor = Descriptor.MessageTypes[2]; internal__static_protobuf_unittest_TestDeprecatedFields__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields, global::Google.ProtocolBuffers.TestProtos.TestDeprecatedFields.Builder>(internal__static_protobuf_unittest_TestDeprecatedFields__Descriptor, @@ -1009,67 +1014,71 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_ForeignMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.ForeignMessage, global::Google.ProtocolBuffers.TestProtos.ForeignMessage.Builder>(internal__static_protobuf_unittest_ForeignMessage__Descriptor, new string[] { "C", }); - internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[4]; + internal__static_protobuf_unittest_TestReservedFields__Descriptor = Descriptor.MessageTypes[4]; + internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable = + new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReservedFields, global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Builder>(internal__static_protobuf_unittest_TestReservedFields__Descriptor, + new string[] { }); + internal__static_protobuf_unittest_TestAllExtensions__Descriptor = Descriptor.MessageTypes[5]; internal__static_protobuf_unittest_TestAllExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestAllExtensions, global::Google.ProtocolBuffers.TestProtos.TestAllExtensions.Builder>(internal__static_protobuf_unittest_TestAllExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[5]; + internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor = Descriptor.MessageTypes[6]; internal__static_protobuf_unittest_OptionalGroup_extension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension, global::Google.ProtocolBuffers.TestProtos.OptionalGroup_extension.Builder>(internal__static_protobuf_unittest_OptionalGroup_extension__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[6]; + internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor = Descriptor.MessageTypes[7]; internal__static_protobuf_unittest_RepeatedGroup_extension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension, global::Google.ProtocolBuffers.TestProtos.RepeatedGroup_extension.Builder>(internal__static_protobuf_unittest_RepeatedGroup_extension__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_TestNestedExtension__Descriptor = Descriptor.MessageTypes[7]; + internal__static_protobuf_unittest_TestNestedExtension__Descriptor = Descriptor.MessageTypes[8]; internal__static_protobuf_unittest_TestNestedExtension__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedExtension, global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Builder>(internal__static_protobuf_unittest_TestNestedExtension__Descriptor, new string[] { }); global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Test = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.NestedStringExtension = pb::GeneratedSingleExtension<string>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestNestedExtension.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[8]; + internal__static_protobuf_unittest_TestRequired__Descriptor = Descriptor.MessageTypes[9]; internal__static_protobuf_unittest_TestRequired__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequired, global::Google.ProtocolBuffers.TestProtos.TestRequired.Builder>(internal__static_protobuf_unittest_TestRequired__Descriptor, new string[] { "A", "Dummy2", "B", "Dummy4", "Dummy5", "Dummy6", "Dummy7", "Dummy8", "Dummy9", "Dummy10", "Dummy11", "Dummy12", "Dummy13", "Dummy14", "Dummy15", "Dummy16", "Dummy17", "Dummy18", "Dummy19", "Dummy20", "Dummy21", "Dummy22", "Dummy23", "Dummy24", "Dummy25", "Dummy26", "Dummy27", "Dummy28", "Dummy29", "Dummy30", "Dummy31", "Dummy32", "C", }); global::Google.ProtocolBuffers.TestProtos.TestRequired.Single = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestRequired.Multi = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestRequired>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestRequired.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[9]; + internal__static_protobuf_unittest_TestRequiredForeign__Descriptor = Descriptor.MessageTypes[10]; internal__static_protobuf_unittest_TestRequiredForeign__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign, global::Google.ProtocolBuffers.TestProtos.TestRequiredForeign.Builder>(internal__static_protobuf_unittest_TestRequiredForeign__Descriptor, new string[] { "OptionalMessage", "RepeatedMessage", "Dummy", }); - internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[10]; + internal__static_protobuf_unittest_TestForeignNested__Descriptor = Descriptor.MessageTypes[11]; internal__static_protobuf_unittest_TestForeignNested__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestForeignNested, global::Google.ProtocolBuffers.TestProtos.TestForeignNested.Builder>(internal__static_protobuf_unittest_TestForeignNested__Descriptor, new string[] { "ForeignNested", }); - internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[11]; + internal__static_protobuf_unittest_TestEmptyMessage__Descriptor = Descriptor.MessageTypes[12]; internal__static_protobuf_unittest_TestEmptyMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessage.Builder>(internal__static_protobuf_unittest_TestEmptyMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[12]; + internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor = Descriptor.MessageTypes[13]; internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions, global::Google.ProtocolBuffers.TestProtos.TestEmptyMessageWithExtensions.Builder>(internal__static_protobuf_unittest_TestEmptyMessageWithExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor = Descriptor.MessageTypes[13]; + internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor = Descriptor.MessageTypes[14]; internal__static_protobuf_unittest_TestMultipleExtensionRanges__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges, global::Google.ProtocolBuffers.TestProtos.TestMultipleExtensionRanges.Builder>(internal__static_protobuf_unittest_TestMultipleExtensionRanges__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[14]; + internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor = Descriptor.MessageTypes[15]; internal__static_protobuf_unittest_TestReallyLargeTagNumber__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber, global::Google.ProtocolBuffers.TestProtos.TestReallyLargeTagNumber.Builder>(internal__static_protobuf_unittest_TestReallyLargeTagNumber__Descriptor, new string[] { "A", "Bb", }); - internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[15]; + internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor = Descriptor.MessageTypes[16]; internal__static_protobuf_unittest_TestRecursiveMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage, global::Google.ProtocolBuffers.TestProtos.TestRecursiveMessage.Builder>(internal__static_protobuf_unittest_TestRecursiveMessage__Descriptor, new string[] { "A", "I", }); - internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[16]; + internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor = Descriptor.MessageTypes[17]; internal__static_protobuf_unittest_TestMutualRecursionA__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionA.Builder>(internal__static_protobuf_unittest_TestMutualRecursionA__Descriptor, new string[] { "Bb", }); - internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[17]; + internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor = Descriptor.MessageTypes[18]; internal__static_protobuf_unittest_TestMutualRecursionB__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB, global::Google.ProtocolBuffers.TestProtos.TestMutualRecursionB.Builder>(internal__static_protobuf_unittest_TestMutualRecursionB__Descriptor, new string[] { "A", "OptionalInt32", }); - internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[18]; + internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor = Descriptor.MessageTypes[19]; internal__static_protobuf_unittest_TestDupFieldNumber__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber__Descriptor, new string[] { "A", "Foo", "Bar", }); @@ -1081,15 +1090,15 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestDupFieldNumber_Bar__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar, global::Google.ProtocolBuffers.TestProtos.TestDupFieldNumber.Types.Bar.Builder>(internal__static_protobuf_unittest_TestDupFieldNumber_Bar__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_TestEagerMessage__Descriptor = Descriptor.MessageTypes[19]; + internal__static_protobuf_unittest_TestEagerMessage__Descriptor = Descriptor.MessageTypes[20]; internal__static_protobuf_unittest_TestEagerMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestEagerMessage, global::Google.ProtocolBuffers.TestProtos.TestEagerMessage.Builder>(internal__static_protobuf_unittest_TestEagerMessage__Descriptor, new string[] { "SubMessage", }); - internal__static_protobuf_unittest_TestLazyMessage__Descriptor = Descriptor.MessageTypes[20]; + internal__static_protobuf_unittest_TestLazyMessage__Descriptor = Descriptor.MessageTypes[21]; internal__static_protobuf_unittest_TestLazyMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestLazyMessage, global::Google.ProtocolBuffers.TestProtos.TestLazyMessage.Builder>(internal__static_protobuf_unittest_TestLazyMessage__Descriptor, new string[] { "SubMessage", }); - internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[21]; + internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor = Descriptor.MessageTypes[22]; internal__static_protobuf_unittest_TestNestedMessageHasBits__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits__Descriptor, new string[] { "OptionalNestedMessage", }); @@ -1097,11 +1106,11 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestNestedMessageHasBits.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestNestedMessageHasBits_NestedMessage__Descriptor, new string[] { "NestedmessageRepeatedInt32", "NestedmessageRepeatedForeignmessage", }); - internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[22]; + internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor = Descriptor.MessageTypes[23]; internal__static_protobuf_unittest_TestCamelCaseFieldNames__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames, global::Google.ProtocolBuffers.TestProtos.TestCamelCaseFieldNames.Builder>(internal__static_protobuf_unittest_TestCamelCaseFieldNames__Descriptor, new string[] { "PrimitiveField", "StringField", "EnumField", "MessageField", "StringPieceField", "CordField", "RepeatedPrimitiveField", "RepeatedStringField", "RepeatedEnumField", "RepeatedMessageField", "RepeatedStringPieceField", "RepeatedCordField", }); - internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[23]; + internal__static_protobuf_unittest_TestFieldOrderings__Descriptor = Descriptor.MessageTypes[24]; internal__static_protobuf_unittest_TestFieldOrderings__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Builder>(internal__static_protobuf_unittest_TestFieldOrderings__Descriptor, new string[] { "MyString", "MyInt", "MyFloat", "OptionalNestedMessage", }); @@ -1109,59 +1118,59 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestFieldOrderings.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestFieldOrderings_NestedMessage__Descriptor, new string[] { "Oo", "Bb", }); - internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[24]; + internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor = Descriptor.MessageTypes[25]; internal__static_protobuf_unittest_TestExtremeDefaultValues__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues, global::Google.ProtocolBuffers.TestProtos.TestExtremeDefaultValues.Builder>(internal__static_protobuf_unittest_TestExtremeDefaultValues__Descriptor, new string[] { "EscapedBytes", "LargeUint32", "LargeUint64", "SmallInt32", "SmallInt64", "ReallySmallInt32", "ReallySmallInt64", "Utf8String", "ZeroFloat", "OneFloat", "SmallFloat", "NegativeOneFloat", "NegativeFloat", "LargeFloat", "SmallNegativeFloat", "InfDouble", "NegInfDouble", "NanDouble", "InfFloat", "NegInfFloat", "NanFloat", "CppTrigraph", "StringWithZero", "BytesWithZero", "StringPieceWithZero", "CordWithZero", "ReplacementString", }); - internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[25]; + internal__static_protobuf_unittest_SparseEnumMessage__Descriptor = Descriptor.MessageTypes[26]; internal__static_protobuf_unittest_SparseEnumMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage, global::Google.ProtocolBuffers.TestProtos.SparseEnumMessage.Builder>(internal__static_protobuf_unittest_SparseEnumMessage__Descriptor, new string[] { "SparseEnum", }); - internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[26]; + internal__static_protobuf_unittest_OneString__Descriptor = Descriptor.MessageTypes[27]; internal__static_protobuf_unittest_OneString__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneString, global::Google.ProtocolBuffers.TestProtos.OneString.Builder>(internal__static_protobuf_unittest_OneString__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_MoreString__Descriptor = Descriptor.MessageTypes[27]; + internal__static_protobuf_unittest_MoreString__Descriptor = Descriptor.MessageTypes[28]; internal__static_protobuf_unittest_MoreString__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreString, global::Google.ProtocolBuffers.TestProtos.MoreString.Builder>(internal__static_protobuf_unittest_MoreString__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[28]; + internal__static_protobuf_unittest_OneBytes__Descriptor = Descriptor.MessageTypes[29]; internal__static_protobuf_unittest_OneBytes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.OneBytes, global::Google.ProtocolBuffers.TestProtos.OneBytes.Builder>(internal__static_protobuf_unittest_OneBytes__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_MoreBytes__Descriptor = Descriptor.MessageTypes[29]; + internal__static_protobuf_unittest_MoreBytes__Descriptor = Descriptor.MessageTypes[30]; internal__static_protobuf_unittest_MoreBytes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.MoreBytes, global::Google.ProtocolBuffers.TestProtos.MoreBytes.Builder>(internal__static_protobuf_unittest_MoreBytes__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Int32Message__Descriptor = Descriptor.MessageTypes[30]; + internal__static_protobuf_unittest_Int32Message__Descriptor = Descriptor.MessageTypes[31]; internal__static_protobuf_unittest_Int32Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int32Message, global::Google.ProtocolBuffers.TestProtos.Int32Message.Builder>(internal__static_protobuf_unittest_Int32Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Uint32Message__Descriptor = Descriptor.MessageTypes[31]; + internal__static_protobuf_unittest_Uint32Message__Descriptor = Descriptor.MessageTypes[32]; internal__static_protobuf_unittest_Uint32Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint32Message, global::Google.ProtocolBuffers.TestProtos.Uint32Message.Builder>(internal__static_protobuf_unittest_Uint32Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Int64Message__Descriptor = Descriptor.MessageTypes[32]; + internal__static_protobuf_unittest_Int64Message__Descriptor = Descriptor.MessageTypes[33]; internal__static_protobuf_unittest_Int64Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Int64Message, global::Google.ProtocolBuffers.TestProtos.Int64Message.Builder>(internal__static_protobuf_unittest_Int64Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_Uint64Message__Descriptor = Descriptor.MessageTypes[33]; + internal__static_protobuf_unittest_Uint64Message__Descriptor = Descriptor.MessageTypes[34]; internal__static_protobuf_unittest_Uint64Message__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.Uint64Message, global::Google.ProtocolBuffers.TestProtos.Uint64Message.Builder>(internal__static_protobuf_unittest_Uint64Message__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_BoolMessage__Descriptor = Descriptor.MessageTypes[34]; + internal__static_protobuf_unittest_BoolMessage__Descriptor = Descriptor.MessageTypes[35]; internal__static_protobuf_unittest_BoolMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BoolMessage, global::Google.ProtocolBuffers.TestProtos.BoolMessage.Builder>(internal__static_protobuf_unittest_BoolMessage__Descriptor, new string[] { "Data", }); - internal__static_protobuf_unittest_TestOneof__Descriptor = Descriptor.MessageTypes[35]; + internal__static_protobuf_unittest_TestOneof__Descriptor = Descriptor.MessageTypes[36]; internal__static_protobuf_unittest_TestOneof__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof, global::Google.ProtocolBuffers.TestProtos.TestOneof.Builder>(internal__static_protobuf_unittest_TestOneof__Descriptor, - new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", }); + new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", "Foo", }); internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestOneof_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof_FooGroup__Descriptor, new string[] { "A", "B", }); - internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor = Descriptor.MessageTypes[36]; + internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor = Descriptor.MessageTypes[37]; internal__static_protobuf_unittest_TestOneofBackwardsCompatible__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible__Descriptor, new string[] { "FooInt", "FooString", "FooMessage", "FooGroup", }); @@ -1169,10 +1178,10 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneofBackwardsCompatible.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneofBackwardsCompatible_FooGroup__Descriptor, new string[] { "A", "B", }); - internal__static_protobuf_unittest_TestOneof2__Descriptor = Descriptor.MessageTypes[37]; + internal__static_protobuf_unittest_TestOneof2__Descriptor = Descriptor.MessageTypes[38]; internal__static_protobuf_unittest_TestOneof2__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Builder>(internal__static_protobuf_unittest_TestOneof2__Descriptor, - new string[] { "FooInt", "FooString", "FooCord", "FooStringPiece", "FooBytes", "FooEnum", "FooMessage", "FooGroup", "FooLazyMessage", "BarInt", "BarString", "BarCord", "BarStringPiece", "BarBytes", "BarEnum", "BazInt", "BazString", }); + new string[] { "FooInt", "FooString", "FooCord", "FooStringPiece", "FooBytes", "FooEnum", "FooMessage", "FooGroup", "FooLazyMessage", "BarInt", "BarString", "BarCord", "BarStringPiece", "BarBytes", "BarEnum", "BazInt", "BazString", "Foo", "Bar", }); internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor = internal__static_protobuf_unittest_TestOneof2__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestOneof2_FooGroup__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder>(internal__static_protobuf_unittest_TestOneof2_FooGroup__Descriptor, @@ -1181,31 +1190,31 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestOneof2_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestOneof2_NestedMessage__Descriptor, new string[] { "QuxInt", "CorgeInt", }); - internal__static_protobuf_unittest_TestRequiredOneof__Descriptor = Descriptor.MessageTypes[38]; + internal__static_protobuf_unittest_TestRequiredOneof__Descriptor = Descriptor.MessageTypes[39]; internal__static_protobuf_unittest_TestRequiredOneof__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Builder>(internal__static_protobuf_unittest_TestRequiredOneof__Descriptor, - new string[] { "FooInt", "FooString", "FooMessage", }); + new string[] { "FooInt", "FooString", "FooMessage", "Foo", }); internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor = internal__static_protobuf_unittest_TestRequiredOneof__Descriptor.NestedTypes[0]; internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage, global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder>(internal__static_protobuf_unittest_TestRequiredOneof_NestedMessage__Descriptor, new string[] { "RequiredDouble", }); - internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[39]; + internal__static_protobuf_unittest_TestPackedTypes__Descriptor = Descriptor.MessageTypes[40]; internal__static_protobuf_unittest_TestPackedTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedTypes, global::Google.ProtocolBuffers.TestProtos.TestPackedTypes.Builder>(internal__static_protobuf_unittest_TestPackedTypes__Descriptor, new string[] { "PackedInt32", "PackedInt64", "PackedUint32", "PackedUint64", "PackedSint32", "PackedSint64", "PackedFixed32", "PackedFixed64", "PackedSfixed32", "PackedSfixed64", "PackedFloat", "PackedDouble", "PackedBool", "PackedEnum", }); - internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[40]; + internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor = Descriptor.MessageTypes[41]; internal__static_protobuf_unittest_TestUnpackedTypes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes, global::Google.ProtocolBuffers.TestProtos.TestUnpackedTypes.Builder>(internal__static_protobuf_unittest_TestUnpackedTypes__Descriptor, new string[] { "UnpackedInt32", "UnpackedInt64", "UnpackedUint32", "UnpackedUint64", "UnpackedSint32", "UnpackedSint64", "UnpackedFixed32", "UnpackedFixed64", "UnpackedSfixed32", "UnpackedSfixed64", "UnpackedFloat", "UnpackedDouble", "UnpackedBool", "UnpackedEnum", }); - internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[41]; + internal__static_protobuf_unittest_TestPackedExtensions__Descriptor = Descriptor.MessageTypes[42]; internal__static_protobuf_unittest_TestPackedExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestPackedExtensions.Builder>(internal__static_protobuf_unittest_TestPackedExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[42]; + internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor = Descriptor.MessageTypes[43]; internal__static_protobuf_unittest_TestUnpackedExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions, global::Google.ProtocolBuffers.TestProtos.TestUnpackedExtensions.Builder>(internal__static_protobuf_unittest_TestUnpackedExtensions__Descriptor, new string[] { }); - internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[43]; + internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor = Descriptor.MessageTypes[44]; internal__static_protobuf_unittest_TestDynamicExtensions__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions__Descriptor, new string[] { "ScalarExtension", "EnumExtension", "DynamicEnumExtension", "MessageExtension", "DynamicMessageExtension", "RepeatedExtension", "PackedExtension", }); @@ -1213,11 +1222,11 @@ namespace Google.ProtocolBuffers.TestProtos { internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType, global::Google.ProtocolBuffers.TestProtos.TestDynamicExtensions.Types.DynamicMessageType.Builder>(internal__static_protobuf_unittest_TestDynamicExtensions_DynamicMessageType__Descriptor, new string[] { "DynamicField", }); - internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor = Descriptor.MessageTypes[44]; + internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor = Descriptor.MessageTypes[45]; internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes, global::Google.ProtocolBuffers.TestProtos.TestRepeatedScalarDifferentTagSizes.Builder>(internal__static_protobuf_unittest_TestRepeatedScalarDifferentTagSizes__Descriptor, new string[] { "RepeatedFixed32", "RepeatedInt32", "RepeatedFixed64", "RepeatedInt64", "RepeatedFloat", "RepeatedUint64", }); - internal__static_protobuf_unittest_TestParsingMerge__Descriptor = Descriptor.MessageTypes[45]; + internal__static_protobuf_unittest_TestParsingMerge__Descriptor = Descriptor.MessageTypes[46]; internal__static_protobuf_unittest_TestParsingMerge__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestParsingMerge, global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Builder>(internal__static_protobuf_unittest_TestParsingMerge__Descriptor, new string[] { "RequiredAllTypes", "OptionalAllTypes", "RepeatedAllTypes", "OptionalGroup", "RepeatedGroup", }); @@ -1243,31 +1252,31 @@ namespace Google.ProtocolBuffers.TestProtos { new string[] { "RepeatedGroupAllTypes", }); global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.OptionalExt = pb::GeneratedSingleExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[0]); global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.RepeatedExt = pb::GeneratedRepeatExtension<global::Google.ProtocolBuffers.TestProtos.TestAllTypes>.CreateInstance(global::Google.ProtocolBuffers.TestProtos.TestParsingMerge.Descriptor.Extensions[1]); - internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor = Descriptor.MessageTypes[46]; + internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor = Descriptor.MessageTypes[47]; internal__static_protobuf_unittest_TestCommentInjectionMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage, global::Google.ProtocolBuffers.TestProtos.TestCommentInjectionMessage.Builder>(internal__static_protobuf_unittest_TestCommentInjectionMessage__Descriptor, new string[] { "A", }); - internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[47]; + internal__static_protobuf_unittest_FooRequest__Descriptor = Descriptor.MessageTypes[48]; internal__static_protobuf_unittest_FooRequest__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooRequest, global::Google.ProtocolBuffers.TestProtos.FooRequest.Builder>(internal__static_protobuf_unittest_FooRequest__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[48]; + internal__static_protobuf_unittest_FooResponse__Descriptor = Descriptor.MessageTypes[49]; internal__static_protobuf_unittest_FooResponse__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooResponse, global::Google.ProtocolBuffers.TestProtos.FooResponse.Builder>(internal__static_protobuf_unittest_FooResponse__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooClientMessage__Descriptor = Descriptor.MessageTypes[49]; + internal__static_protobuf_unittest_FooClientMessage__Descriptor = Descriptor.MessageTypes[50]; internal__static_protobuf_unittest_FooClientMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooClientMessage, global::Google.ProtocolBuffers.TestProtos.FooClientMessage.Builder>(internal__static_protobuf_unittest_FooClientMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_FooServerMessage__Descriptor = Descriptor.MessageTypes[50]; + internal__static_protobuf_unittest_FooServerMessage__Descriptor = Descriptor.MessageTypes[51]; internal__static_protobuf_unittest_FooServerMessage__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.FooServerMessage, global::Google.ProtocolBuffers.TestProtos.FooServerMessage.Builder>(internal__static_protobuf_unittest_FooServerMessage__Descriptor, new string[] { }); - internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[51]; + internal__static_protobuf_unittest_BarRequest__Descriptor = Descriptor.MessageTypes[52]; internal__static_protobuf_unittest_BarRequest__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarRequest, global::Google.ProtocolBuffers.TestProtos.BarRequest.Builder>(internal__static_protobuf_unittest_BarRequest__Descriptor, new string[] { }); - internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[52]; + internal__static_protobuf_unittest_BarResponse__Descriptor = Descriptor.MessageTypes[53]; internal__static_protobuf_unittest_BarResponse__FieldAccessorTable = new pb::FieldAccess.FieldAccessorTable<global::Google.ProtocolBuffers.TestProtos.BarResponse, global::Google.ProtocolBuffers.TestProtos.BarResponse.Builder>(internal__static_protobuf_unittest_BarResponse__Descriptor, new string[] { }); @@ -2281,6 +2290,19 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object oneofField_; + public enum OneofFieldOneofCase { + OneofUint32 = 111, + OneofNestedMessage = 112, + OneofString = 113, + OneofBytes = 114, + None = 0, + } + private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; + public OneofFieldOneofCase OneofFieldCase { + get { return oneofFieldCase_; } + } + public const int OptionalInt32FieldNumber = 1; private bool hasOptionalInt32; private int optionalInt32_; @@ -3042,43 +3064,35 @@ namespace Google.ProtocolBuffers.TestProtos { } public const int OneofUint32FieldNumber = 111; - private bool hasOneofUint32; - private uint oneofUint32_; public bool HasOneofUint32 { - get { return hasOneofUint32; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return oneofUint32_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } } public const int OneofNestedMessageFieldNumber = 112; - private bool hasOneofNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage oneofNestedMessage_; public bool HasOneofNestedMessage { - get { return hasOneofNestedMessage; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return oneofNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } } public const int OneofStringFieldNumber = 113; - private bool hasOneofString; - private string oneofString_ = ""; public bool HasOneofString { - get { return hasOneofString; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return oneofString_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } } public const int OneofBytesFieldNumber = 114; - private bool hasOneofBytes; - private pb::ByteString oneofBytes_ = pb::ByteString.Empty; public bool HasOneofBytes { - get { return hasOneofBytes; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return oneofBytes_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; } } public override bool IsInitialized { @@ -3303,16 +3317,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { output.WriteString(85, field_names[2], DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { output.WriteUInt32(111, field_names[23], OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { output.WriteMessage(112, field_names[21], OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { output.WriteString(113, field_names[22], OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { output.WriteBytes(114, field_names[20], OneofBytes); } UnknownFields.WriteTo(output); @@ -3637,16 +3651,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { size += pb::CodedOutputStream.ComputeStringSize(113, OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { size += pb::CodedOutputStream.ComputeBytesSize(114, OneofBytes); } size += UnknownFields.SerializedSize; @@ -4009,17 +4023,24 @@ namespace Google.ProtocolBuffers.TestProtos { if (other.HasDefaultCord) { DefaultCord = other.DefaultCord; } - if (other.HasOneofUint32) { - OneofUint32 = other.OneofUint32; - } - if (other.HasOneofNestedMessage) { - MergeOneofNestedMessage(other.OneofNestedMessage); - } - if (other.HasOneofString) { - OneofString = other.OneofString; - } - if (other.HasOneofBytes) { - OneofBytes = other.OneofBytes; + switch (other.OneofFieldCase) { + case OneofFieldOneofCase.OneofUint32: { + SetOneofUint32(other.OneofUint32); + break; + } + case OneofFieldOneofCase.OneofNestedMessage: { + MergeOneofNestedMessage(other.OneofNestedMessage); + break; + } + case OneofFieldOneofCase.OneofString: { + SetOneofString(other.OneofString); + break; + } + case OneofFieldOneofCase.OneofBytes: { + SetOneofBytes(other.OneofBytes); + break; + } + case OneofFieldOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -4470,24 +4491,37 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 888: { - result.hasOneofUint32 = input.ReadUInt32(ref result.oneofUint32_); + uint value = 0; + if (input.ReadUInt32(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; + } break; } case 898: { global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(); - if (result.hasOneofNestedMessage) { + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { subBuilder.MergeFrom(OneofNestedMessage); } input.ReadMessage(subBuilder, extensionRegistry); - OneofNestedMessage = subBuilder.BuildPartial(); + result.oneofField_ = subBuilder.BuildPartial(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; break; } case 906: { - result.hasOneofString = input.ReadString(ref result.oneofString_); + string value = ""; + if (input.ReadString(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; + } break; } case 914: { - result.hasOneofBytes = input.ReadBytes(ref result.oneofBytes_); + pb::ByteString value = pb::ByteString.Empty; + if (input.ReadBytes(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; + } break; } } @@ -6377,104 +6411,119 @@ namespace Google.ProtocolBuffers.TestProtos { } public bool HasOneofUint32 { - get { return result.hasOneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return result.OneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; } set { SetOneofUint32(value); } } public Builder SetOneofUint32(uint value) { PrepareBuilder(); - result.hasOneofUint32 = true; - result.oneofUint32_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; return this; } public Builder ClearOneofUint32() { PrepareBuilder(); - result.hasOneofUint32 = false; - result.oneofUint32_ = 0; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofNestedMessage { - get { return result.hasOneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage OneofNestedMessage { - get { return result.OneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance; } set { SetOneofNestedMessage(value); } } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = value; return this; } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = builderForValue.Build(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = builderForValue.Build(); return this; } public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasOneofNestedMessage && - result.oneofNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) { - result.oneofNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.oneofNestedMessage_).MergeFrom(value).BuildPartial(); + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage && + result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.DefaultInstance) { + result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial(); } else { - result.oneofNestedMessage_ = value; + result.oneofField_ = value; } - result.hasOneofNestedMessage = true; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; return this; } public Builder ClearOneofNestedMessage() { - PrepareBuilder(); - result.hasOneofNestedMessage = false; - result.oneofNestedMessage_ = null; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { + PrepareBuilder(); + result.oneofFieldCase_ = OneofFieldOneofCase.None; + result.oneofField_ = null; + } return this; } public bool HasOneofString { - get { return result.hasOneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return result.OneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; } set { SetOneofString(value); } } public Builder SetOneofString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofString = true; - result.oneofString_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; return this; } public Builder ClearOneofString() { PrepareBuilder(); - result.hasOneofString = false; - result.oneofString_ = ""; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofBytes { - get { return result.hasOneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return result.OneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) result.oneofField_ : pb::ByteString.Empty; } set { SetOneofBytes(value); } } public Builder SetOneofBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofBytes = true; - result.oneofBytes_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; return this; } public Builder ClearOneofBytes() { PrepareBuilder(); - result.hasOneofBytes = false; - result.oneofBytes_ = pb::ByteString.Empty; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } + return this; + } + + public OneofFieldOneofCase OneofFieldCase { + get { return result.oneofFieldCase_; } + } + public Builder ClearOneofField() { + PrepareBuilder(); + result.oneofField_ = null; + result.oneofFieldCase_ = OneofFieldOneofCase.None; return this; } } @@ -6487,8 +6536,8 @@ namespace Google.ProtocolBuffers.TestProtos { public sealed partial class NestedTestAllTypes : pb::GeneratedMessage<NestedTestAllTypes, NestedTestAllTypes.Builder> { private NestedTestAllTypes() { } private static readonly NestedTestAllTypes defaultInstance = new NestedTestAllTypes().MakeReadOnly(); - private static readonly string[] _nestedTestAllTypesFieldNames = new string[] { "child", "payload" }; - private static readonly uint[] _nestedTestAllTypesFieldTags = new uint[] { 10, 18 }; + private static readonly string[] _nestedTestAllTypesFieldNames = new string[] { "child", "payload", "repeated_child" }; + private static readonly uint[] _nestedTestAllTypesFieldTags = new uint[] { 10, 18, 26 }; public static NestedTestAllTypes DefaultInstance { get { return defaultInstance; } } @@ -6529,6 +6578,18 @@ namespace Google.ProtocolBuffers.TestProtos { get { return payload_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } } + public const int RepeatedChildFieldNumber = 3; + private pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> repeatedChild_ = new pbc::PopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes>(); + public scg::IList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList { + get { return repeatedChild_; } + } + public int RepeatedChildCount { + get { return repeatedChild_.Count; } + } + public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) { + return repeatedChild_[index]; + } + public override bool IsInitialized { get { return true; @@ -6544,6 +6605,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasPayload) { output.WriteMessage(2, field_names[1], Payload); } + if (repeatedChild_.Count > 0) { + output.WriteMessageArray(3, field_names[2], repeatedChild_); + } UnknownFields.WriteTo(output); } @@ -6567,6 +6631,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasPayload) { size += pb::CodedOutputStream.ComputeMessageSize(2, Payload); } + foreach (global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes element in RepeatedChildList) { + size += pb::CodedOutputStream.ComputeMessageSize(3, element); + } size += UnknownFields.SerializedSize; memoizedSerializedSize = size; return size; @@ -6602,6 +6669,7 @@ namespace Google.ProtocolBuffers.TestProtos { return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); } private NestedTestAllTypes MakeReadOnly() { + repeatedChild_.MakeReadOnly(); return this; } @@ -6695,6 +6763,9 @@ namespace Google.ProtocolBuffers.TestProtos { if (other.HasPayload) { MergePayload(other.Payload); } + if (other.repeatedChild_.Count != 0) { + result.repeatedChild_.Add(other.repeatedChild_); + } this.MergeUnknownFields(other.UnknownFields); return this; } @@ -6756,6 +6827,10 @@ namespace Google.ProtocolBuffers.TestProtos { Payload = subBuilder.BuildPartial(); break; } + case 26: { + input.ReadMessageArray(tag, field_name, result.repeatedChild_, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.DefaultInstance, extensionRegistry); + break; + } } } @@ -6845,6 +6920,50 @@ namespace Google.ProtocolBuffers.TestProtos { result.payload_ = null; return this; } + + public pbc::IPopsicleList<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> RepeatedChildList { + get { return PrepareBuilder().repeatedChild_; } + } + public int RepeatedChildCount { + get { return result.RepeatedChildCount; } + } + public global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes GetRepeatedChild(int index) { + return result.GetRepeatedChild(index); + } + public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.repeatedChild_[index] = value; + return this; + } + public Builder SetRepeatedChild(int index, global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.repeatedChild_[index] = builderForValue.Build(); + return this; + } + public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes value) { + pb::ThrowHelper.ThrowIfNull(value, "value"); + PrepareBuilder(); + result.repeatedChild_.Add(value); + return this; + } + public Builder AddRepeatedChild(global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes.Builder builderForValue) { + pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); + PrepareBuilder(); + result.repeatedChild_.Add(builderForValue.Build()); + return this; + } + public Builder AddRangeRepeatedChild(scg::IEnumerable<global::Google.ProtocolBuffers.TestProtos.NestedTestAllTypes> values) { + PrepareBuilder(); + result.repeatedChild_.Add(values); + return this; + } + public Builder ClearRepeatedChild() { + PrepareBuilder(); + result.repeatedChild_.Clear(); + return this; + } } static NestedTestAllTypes() { object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); @@ -7408,6 +7527,238 @@ namespace Google.ProtocolBuffers.TestProtos { } [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public sealed partial class TestReservedFields : pb::GeneratedMessage<TestReservedFields, TestReservedFields.Builder> { + private TestReservedFields() { } + private static readonly TestReservedFields defaultInstance = new TestReservedFields().MakeReadOnly(); + private static readonly string[] _testReservedFieldsFieldNames = new string[] { }; + private static readonly uint[] _testReservedFieldsFieldTags = new uint[] { }; + public static TestReservedFields DefaultInstance { + get { return defaultInstance; } + } + + public override TestReservedFields DefaultInstanceForType { + get { return DefaultInstance; } + } + + protected override TestReservedFields ThisMessage { + get { return this; } + } + + public static pbd::MessageDescriptor Descriptor { + get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__Descriptor; } + } + + protected override pb::FieldAccess.FieldAccessorTable<TestReservedFields, TestReservedFields.Builder> InternalFieldAccessors { + get { return global::Google.ProtocolBuffers.TestProtos.Unittest.internal__static_protobuf_unittest_TestReservedFields__FieldAccessorTable; } + } + + public override bool IsInitialized { + get { + return true; + } + } + + public override void WriteTo(pb::ICodedOutputStream output) { + CalcSerializedSize(); + string[] field_names = _testReservedFieldsFieldNames; + UnknownFields.WriteTo(output); + } + + private int memoizedSerializedSize = -1; + public override int SerializedSize { + get { + int size = memoizedSerializedSize; + if (size != -1) return size; + return CalcSerializedSize(); + } + } + + private int CalcSerializedSize() { + int size = memoizedSerializedSize; + if (size != -1) return size; + + size = 0; + size += UnknownFields.SerializedSize; + memoizedSerializedSize = size; + return size; + } + public static TestReservedFields ParseFrom(pb::ByteString data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ByteString data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseFrom(byte[] data) { + return ((Builder) CreateBuilder().MergeFrom(data)).BuildParsed(); + } + public static TestReservedFields ParseFrom(byte[] data, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(data, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseFrom(global::System.IO.Stream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestReservedFields ParseFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input) { + return CreateBuilder().MergeDelimitedFrom(input).BuildParsed(); + } + public static TestReservedFields ParseDelimitedFrom(global::System.IO.Stream input, pb::ExtensionRegistry extensionRegistry) { + return CreateBuilder().MergeDelimitedFrom(input, extensionRegistry).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ICodedInputStream input) { + return ((Builder) CreateBuilder().MergeFrom(input)).BuildParsed(); + } + public static TestReservedFields ParseFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + return ((Builder) CreateBuilder().MergeFrom(input, extensionRegistry)).BuildParsed(); + } + private TestReservedFields MakeReadOnly() { + return this; + } + + public static Builder CreateBuilder() { return new Builder(); } + public override Builder ToBuilder() { return CreateBuilder(this); } + public override Builder CreateBuilderForType() { return new Builder(); } + public static Builder CreateBuilder(TestReservedFields prototype) { + return new Builder(prototype); + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + public sealed partial class Builder : pb::GeneratedBuilder<TestReservedFields, Builder> { + protected override Builder ThisBuilder { + get { return this; } + } + public Builder() { + result = DefaultInstance; + resultIsReadOnly = true; + } + internal Builder(TestReservedFields cloneFrom) { + result = cloneFrom; + resultIsReadOnly = true; + } + + private bool resultIsReadOnly; + private TestReservedFields result; + + private TestReservedFields PrepareBuilder() { + if (resultIsReadOnly) { + TestReservedFields original = result; + result = new TestReservedFields(); + resultIsReadOnly = false; + MergeFrom(original); + } + return result; + } + + public override bool IsInitialized { + get { return result.IsInitialized; } + } + + protected override TestReservedFields MessageBeingBuilt { + get { return PrepareBuilder(); } + } + + public override Builder Clear() { + result = DefaultInstance; + resultIsReadOnly = true; + return this; + } + + public override Builder Clone() { + if (resultIsReadOnly) { + return new Builder(result); + } else { + return new Builder().MergeFrom(result); + } + } + + public override pbd::MessageDescriptor DescriptorForType { + get { return global::Google.ProtocolBuffers.TestProtos.TestReservedFields.Descriptor; } + } + + public override TestReservedFields DefaultInstanceForType { + get { return global::Google.ProtocolBuffers.TestProtos.TestReservedFields.DefaultInstance; } + } + + public override TestReservedFields BuildPartial() { + if (resultIsReadOnly) { + return result; + } + resultIsReadOnly = true; + return result.MakeReadOnly(); + } + + public override Builder MergeFrom(pb::IMessage other) { + if (other is TestReservedFields) { + return MergeFrom((TestReservedFields) other); + } else { + base.MergeFrom(other); + return this; + } + } + + public override Builder MergeFrom(TestReservedFields other) { + if (other == global::Google.ProtocolBuffers.TestProtos.TestReservedFields.DefaultInstance) return this; + PrepareBuilder(); + this.MergeUnknownFields(other.UnknownFields); + return this; + } + + public override Builder MergeFrom(pb::ICodedInputStream input) { + return MergeFrom(input, pb::ExtensionRegistry.Empty); + } + + public override Builder MergeFrom(pb::ICodedInputStream input, pb::ExtensionRegistry extensionRegistry) { + PrepareBuilder(); + pb::UnknownFieldSet.Builder unknownFields = null; + uint tag; + string field_name; + while (input.ReadTag(out tag, out field_name)) { + if(tag == 0 && field_name != null) { + int field_ordinal = global::System.Array.BinarySearch(_testReservedFieldsFieldNames, field_name, global::System.StringComparer.Ordinal); + if(field_ordinal >= 0) + tag = _testReservedFieldsFieldTags[field_ordinal]; + else { + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + continue; + } + } + switch (tag) { + case 0: { + throw pb::InvalidProtocolBufferException.InvalidTag(); + } + default: { + if (pb::WireFormat.IsEndGroupTag(tag)) { + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + if (unknownFields == null) { + unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); + } + ParseUnknownField(input, unknownFields, extensionRegistry, tag, field_name); + break; + } + } + } + + if (unknownFields != null) { + this.UnknownFields = unknownFields.Build(); + } + return this; + } + + } + static TestReservedFields() { + object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); + } + } + + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] public sealed partial class TestAllExtensions : pb::ExtendableMessage<TestAllExtensions, TestAllExtensions.Builder> { private TestAllExtensions() { } private static readonly TestAllExtensions defaultInstance = new TestAllExtensions().MakeReadOnly(); @@ -21288,44 +21639,49 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooMessage = 3, + FooGroup = 4, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooMessageFieldNumber = 3; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypes fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } } public const int FooGroupFieldNumber = 4; - private bool hasFooGroup; - private global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup fooGroup_; public bool HasFooGroup { - get { return hasFooGroup; } + get { return fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup { - get { return fooGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } } public override bool IsInitialized { @@ -21337,16 +21693,16 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testOneofFieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[0], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[2], FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(3, field_names[1], FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { output.WriteGroup(4, field_names[3], FooGroup); } UnknownFields.WriteTo(output); @@ -21366,16 +21722,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { size += pb::CodedOutputStream.ComputeGroupSize(4, FooGroup); } size += UnknownFields.SerializedSize; @@ -21500,17 +21856,24 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestOneof other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); - } - if (other.HasFooGroup) { - MergeFooGroup(other.FooGroup); + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.FooGroup: { + MergeFooGroup(other.FooGroup); + break; + } + case FooOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -21556,29 +21919,39 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } case 35: { global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(); - if (result.hasFooGroup) { + if (result.fooCase_ == FooOneofCase.FooGroup) { subBuilder.MergeFrom(FooGroup); } input.ReadGroup(4, subBuilder, extensionRegistry); - FooGroup = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooGroup; break; } } @@ -21592,123 +21965,139 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypes FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypes) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypes value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypes.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypes.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { - PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooGroup { - get { return result.hasFooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup FooGroup { - get { return result.FooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance; } set { SetFooGroup(value); } } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = value; + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = value; return this; } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooGroup && - result.fooGroup_ != global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) { - result.fooGroup_ = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(result.fooGroup_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooGroup && + result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial(); } else { - result.fooGroup_ = value; + result.foo_ = value; } - result.hasFooGroup = true; + result.fooCase_ = FooOneofCase.FooGroup; return this; } public Builder ClearFooGroup() { + if (result.fooCase_ == FooOneofCase.FooGroup) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } + return this; + } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { PrepareBuilder(); - result.hasFooGroup = false; - result.fooGroup_ = null; + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; return this; } } @@ -23191,154 +23580,157 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooCord = 3, + FooStringPiece = 4, + FooBytes = 5, + FooEnum = 6, + FooMessage = 7, + FooGroup = 8, + FooLazyMessage = 11, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + + private object bar_; + public enum BarOneofCase { + BarInt = 12, + BarString = 13, + BarCord = 14, + BarStringPiece = 15, + BarBytes = 16, + BarEnum = 17, + None = 0, + } + private BarOneofCase barCase_ = BarOneofCase.None; + public BarOneofCase BarCase { + get { return barCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooCordFieldNumber = 3; - private bool hasFooCord; - private string fooCord_ = ""; public bool HasFooCord { - get { return hasFooCord; } + get { return fooCase_ == FooOneofCase.FooCord; } } public string FooCord { - get { return fooCord_; } + get { return fooCase_ == FooOneofCase.FooCord ? (string) foo_ : ""; } } public const int FooStringPieceFieldNumber = 4; - private bool hasFooStringPiece; - private string fooStringPiece_ = ""; public bool HasFooStringPiece { - get { return hasFooStringPiece; } + get { return fooCase_ == FooOneofCase.FooStringPiece; } } public string FooStringPiece { - get { return fooStringPiece_; } + get { return fooCase_ == FooOneofCase.FooStringPiece ? (string) foo_ : ""; } } public const int FooBytesFieldNumber = 5; - private bool hasFooBytes; - private pb::ByteString fooBytes_ = pb::ByteString.Empty; public bool HasFooBytes { - get { return hasFooBytes; } + get { return fooCase_ == FooOneofCase.FooBytes; } } public pb::ByteString FooBytes { - get { return fooBytes_; } + get { return fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) foo_ : pb::ByteString.Empty; } } public const int FooEnumFieldNumber = 6; - private bool hasFooEnum; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum fooEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; public bool HasFooEnum { - get { return hasFooEnum; } + get { return fooCase_ == FooOneofCase.FooEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum { - get { return fooEnum_; } + get { return fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; } } public const int FooMessageFieldNumber = 7; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } } public const int FooGroupFieldNumber = 8; - private bool hasFooGroup; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup fooGroup_; public bool HasFooGroup { - get { return hasFooGroup; } + get { return fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup { - get { return fooGroup_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } } public const int FooLazyMessageFieldNumber = 11; - private bool hasFooLazyMessage; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage fooLazyMessage_; public bool HasFooLazyMessage { - get { return hasFooLazyMessage; } + get { return fooCase_ == FooOneofCase.FooLazyMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage { - get { return fooLazyMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } } public const int BarIntFieldNumber = 12; - private bool hasBarInt; - private int barInt_ = 5; public bool HasBarInt { - get { return hasBarInt; } + get { return barCase_ == BarOneofCase.BarInt; } } public int BarInt { - get { return barInt_; } + get { return barCase_ == BarOneofCase.BarInt ? (int) bar_ : 5; } } public const int BarStringFieldNumber = 13; - private bool hasBarString; - private string barString_ = "STRING"; public bool HasBarString { - get { return hasBarString; } + get { return barCase_ == BarOneofCase.BarString; } } public string BarString { - get { return barString_; } + get { return barCase_ == BarOneofCase.BarString ? (string) bar_ : "STRING"; } } public const int BarCordFieldNumber = 14; - private bool hasBarCord; - private string barCord_ = "CORD"; public bool HasBarCord { - get { return hasBarCord; } + get { return barCase_ == BarOneofCase.BarCord; } } public string BarCord { - get { return barCord_; } + get { return barCase_ == BarOneofCase.BarCord ? (string) bar_ : "CORD"; } } public const int BarStringPieceFieldNumber = 15; - private bool hasBarStringPiece; - private string barStringPiece_ = "SPIECE"; public bool HasBarStringPiece { - get { return hasBarStringPiece; } + get { return barCase_ == BarOneofCase.BarStringPiece; } } public string BarStringPiece { - get { return barStringPiece_; } + get { return barCase_ == BarOneofCase.BarStringPiece ? (string) bar_ : "SPIECE"; } } public const int BarBytesFieldNumber = 16; - private bool hasBarBytes; - private pb::ByteString barBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; public bool HasBarBytes { - get { return hasBarBytes; } + get { return barCase_ == BarOneofCase.BarBytes; } } public pb::ByteString BarBytes { - get { return barBytes_; } + get { return barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; } } public const int BarEnumFieldNumber = 17; - private bool hasBarEnum; - private global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum barEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; public bool HasBarEnum { - get { return hasBarEnum; } + get { return barCase_ == BarOneofCase.BarEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum { - get { return barEnum_; } + get { return barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; } } public const int BazIntFieldNumber = 18; @@ -23370,49 +23762,49 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testOneof2FieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[11], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[14], FooString); } - if (hasFooCord) { + if (fooCase_ == FooOneofCase.FooCord) { output.WriteString(3, field_names[9], FooCord); } - if (hasFooStringPiece) { + if (fooCase_ == FooOneofCase.FooStringPiece) { output.WriteString(4, field_names[15], FooStringPiece); } - if (hasFooBytes) { + if (fooCase_ == FooOneofCase.FooBytes) { output.WriteBytes(5, field_names[8], FooBytes); } - if (hasFooEnum) { + if (fooCase_ == FooOneofCase.FooEnum) { output.WriteEnum(6, field_names[10], (int) FooEnum, FooEnum); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(7, field_names[13], FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { output.WriteGroup(8, field_names[16], FooGroup); } - if (hasFooLazyMessage) { + if (fooCase_ == FooOneofCase.FooLazyMessage) { output.WriteMessage(11, field_names[12], FooLazyMessage); } - if (hasBarInt) { + if (barCase_ == BarOneofCase.BarInt) { output.WriteInt32(12, field_names[3], BarInt); } - if (hasBarString) { + if (barCase_ == BarOneofCase.BarString) { output.WriteString(13, field_names[4], BarString); } - if (hasBarCord) { + if (barCase_ == BarOneofCase.BarCord) { output.WriteString(14, field_names[1], BarCord); } - if (hasBarStringPiece) { + if (barCase_ == BarOneofCase.BarStringPiece) { output.WriteString(15, field_names[5], BarStringPiece); } - if (hasBarBytes) { + if (barCase_ == BarOneofCase.BarBytes) { output.WriteBytes(16, field_names[0], BarBytes); } - if (hasBarEnum) { + if (barCase_ == BarOneofCase.BarEnum) { output.WriteEnum(17, field_names[2], (int) BarEnum, BarEnum); } if (hasBazInt) { @@ -23438,49 +23830,49 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooCord) { + if (fooCase_ == FooOneofCase.FooCord) { size += pb::CodedOutputStream.ComputeStringSize(3, FooCord); } - if (hasFooStringPiece) { + if (fooCase_ == FooOneofCase.FooStringPiece) { size += pb::CodedOutputStream.ComputeStringSize(4, FooStringPiece); } - if (hasFooBytes) { + if (fooCase_ == FooOneofCase.FooBytes) { size += pb::CodedOutputStream.ComputeBytesSize(5, FooBytes); } - if (hasFooEnum) { + if (fooCase_ == FooOneofCase.FooEnum) { size += pb::CodedOutputStream.ComputeEnumSize(6, (int) FooEnum); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(7, FooMessage); } - if (hasFooGroup) { + if (fooCase_ == FooOneofCase.FooGroup) { size += pb::CodedOutputStream.ComputeGroupSize(8, FooGroup); } - if (hasFooLazyMessage) { + if (fooCase_ == FooOneofCase.FooLazyMessage) { size += pb::CodedOutputStream.ComputeMessageSize(11, FooLazyMessage); } - if (hasBarInt) { + if (barCase_ == BarOneofCase.BarInt) { size += pb::CodedOutputStream.ComputeInt32Size(12, BarInt); } - if (hasBarString) { + if (barCase_ == BarOneofCase.BarString) { size += pb::CodedOutputStream.ComputeStringSize(13, BarString); } - if (hasBarCord) { + if (barCase_ == BarOneofCase.BarCord) { size += pb::CodedOutputStream.ComputeStringSize(14, BarCord); } - if (hasBarStringPiece) { + if (barCase_ == BarOneofCase.BarStringPiece) { size += pb::CodedOutputStream.ComputeStringSize(15, BarStringPiece); } - if (hasBarBytes) { + if (barCase_ == BarOneofCase.BarBytes) { size += pb::CodedOutputStream.ComputeBytesSize(16, BarBytes); } - if (hasBarEnum) { + if (barCase_ == BarOneofCase.BarEnum) { size += pb::CodedOutputStream.ComputeEnumSize(17, (int) BarEnum); } if (hasBazInt) { @@ -23611,57 +24003,78 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestOneof2 other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestOneof2.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooCord) { - FooCord = other.FooCord; - } - if (other.HasFooStringPiece) { - FooStringPiece = other.FooStringPiece; - } - if (other.HasFooBytes) { - FooBytes = other.FooBytes; - } - if (other.HasFooEnum) { - FooEnum = other.FooEnum; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); - } - if (other.HasFooGroup) { - MergeFooGroup(other.FooGroup); - } - if (other.HasFooLazyMessage) { - MergeFooLazyMessage(other.FooLazyMessage); - } - if (other.HasBarInt) { - BarInt = other.BarInt; - } - if (other.HasBarString) { - BarString = other.BarString; - } - if (other.HasBarCord) { - BarCord = other.BarCord; - } - if (other.HasBarStringPiece) { - BarStringPiece = other.BarStringPiece; - } - if (other.HasBarBytes) { - BarBytes = other.BarBytes; - } - if (other.HasBarEnum) { - BarEnum = other.BarEnum; - } if (other.HasBazInt) { BazInt = other.BazInt; } if (other.HasBazString) { BazString = other.BazString; } + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooCord: { + SetFooCord(other.FooCord); + break; + } + case FooOneofCase.FooStringPiece: { + SetFooStringPiece(other.FooStringPiece); + break; + } + case FooOneofCase.FooBytes: { + SetFooBytes(other.FooBytes); + break; + } + case FooOneofCase.FooEnum: { + SetFooEnum(other.FooEnum); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.FooGroup: { + MergeFooGroup(other.FooGroup); + break; + } + case FooOneofCase.FooLazyMessage: { + MergeFooLazyMessage(other.FooLazyMessage); + break; + } + case FooOneofCase.None: { break; } + } + switch (other.BarCase) { + case BarOneofCase.BarInt: { + SetBarInt(other.BarInt); + break; + } + case BarOneofCase.BarString: { + SetBarString(other.BarString); + break; + } + case BarOneofCase.BarCord: { + SetBarCord(other.BarCord); + break; + } + case BarOneofCase.BarStringPiece: { + SetBarStringPiece(other.BarStringPiece); + break; + } + case BarOneofCase.BarBytes: { + SetBarBytes(other.BarBytes); + break; + } + case BarOneofCase.BarEnum: { + SetBarEnum(other.BarEnum); + break; + } + case BarOneofCase.None: { break; } + } this.MergeUnknownFields(other.UnknownFields); return this; } @@ -23706,29 +24119,51 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { - result.hasFooCord = input.ReadString(ref result.fooCord_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooCord; + } break; } case 34: { - result.hasFooStringPiece = input.ReadString(ref result.fooStringPiece_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooStringPiece; + } break; } case 42: { - result.hasFooBytes = input.ReadBytes(ref result.fooBytes_); + pb::ByteString value = pb::ByteString.Empty; + if (input.ReadBytes(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooBytes; + } break; } case 48: { object unknown; - if(input.ReadEnum(ref result.fooEnum_, out unknown)) { - result.hasFooEnum = true; + global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; + if(input.ReadEnum(ref enumValue, out unknown)) { + result.foo_ = enumValue; + result.fooCase_ = FooOneofCase.FooEnum; } else if(unknown is int) { if (unknownFields == null) { unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); @@ -23739,55 +24174,80 @@ namespace Google.ProtocolBuffers.TestProtos { } case 58: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } case 67: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(); - if (result.hasFooGroup) { + if (result.fooCase_ == FooOneofCase.FooGroup) { subBuilder.MergeFrom(FooGroup); } input.ReadGroup(8, subBuilder, extensionRegistry); - FooGroup = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooGroup; break; } case 90: { global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(); - if (result.hasFooLazyMessage) { + if (result.fooCase_ == FooOneofCase.FooLazyMessage) { subBuilder.MergeFrom(FooLazyMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooLazyMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooLazyMessage; break; } case 96: { - result.hasBarInt = input.ReadInt32(ref result.barInt_); + int value = 5; + if (input.ReadInt32(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarInt; + } break; } case 106: { - result.hasBarString = input.ReadString(ref result.barString_); + string value = "STRING"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarString; + } break; } case 114: { - result.hasBarCord = input.ReadString(ref result.barCord_); + string value = "CORD"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarCord; + } break; } case 122: { - result.hasBarStringPiece = input.ReadString(ref result.barStringPiece_); + string value = "SPIECE"; + if (input.ReadString(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarStringPiece; + } break; } case 130: { - result.hasBarBytes = input.ReadBytes(ref result.barBytes_); + pb::ByteString value = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; + if (input.ReadBytes(ref value)) { + result.bar_ = value; + result.barCase_ = BarOneofCase.BarBytes; + } break; } case 136: { object unknown; - if(input.ReadEnum(ref result.barEnum_, out unknown)) { - result.hasBarEnum = true; + global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum enumValue = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; + if(input.ReadEnum(ref enumValue, out unknown)) { + result.bar_ = enumValue; + result.barCase_ = BarOneofCase.BarEnum; } else if(unknown is int) { if (unknownFields == null) { unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields); @@ -23815,370 +24275,388 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooCord { - get { return result.hasFooCord; } + get { return result.fooCase_ == FooOneofCase.FooCord; } } public string FooCord { - get { return result.FooCord; } + get { return result.fooCase_ == FooOneofCase.FooCord ? (string) result.foo_ : ""; } set { SetFooCord(value); } } public Builder SetFooCord(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooCord = true; - result.fooCord_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooCord; return this; } public Builder ClearFooCord() { PrepareBuilder(); - result.hasFooCord = false; - result.fooCord_ = ""; + if (result.fooCase_ == FooOneofCase.FooCord) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooStringPiece { - get { return result.hasFooStringPiece; } + get { return result.fooCase_ == FooOneofCase.FooStringPiece; } } public string FooStringPiece { - get { return result.FooStringPiece; } + get { return result.fooCase_ == FooOneofCase.FooStringPiece ? (string) result.foo_ : ""; } set { SetFooStringPiece(value); } } public Builder SetFooStringPiece(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooStringPiece = true; - result.fooStringPiece_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooStringPiece; return this; } public Builder ClearFooStringPiece() { PrepareBuilder(); - result.hasFooStringPiece = false; - result.fooStringPiece_ = ""; + if (result.fooCase_ == FooOneofCase.FooStringPiece) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooBytes { - get { return result.hasFooBytes; } + get { return result.fooCase_ == FooOneofCase.FooBytes; } } public pb::ByteString FooBytes { - get { return result.FooBytes; } + get { return result.fooCase_ == FooOneofCase.FooBytes ? (pb::ByteString) result.foo_ : pb::ByteString.Empty; } set { SetFooBytes(value); } } public Builder SetFooBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooBytes = true; - result.fooBytes_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooBytes; return this; } public Builder ClearFooBytes() { PrepareBuilder(); - result.hasFooBytes = false; - result.fooBytes_ = pb::ByteString.Empty; + if (result.fooCase_ == FooOneofCase.FooBytes) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooEnum { - get { return result.hasFooEnum; } + get { return result.fooCase_ == FooOneofCase.FooEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum FooEnum { - get { return result.FooEnum; } + get { return result.fooCase_ == FooOneofCase.FooEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; } set { SetFooEnum(value); } } public Builder SetFooEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) { PrepareBuilder(); - result.hasFooEnum = true; - result.fooEnum_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooEnum; return this; } public Builder ClearFooEnum() { PrepareBuilder(); - result.hasFooEnum = false; - result.fooEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.FOO; + if (result.fooCase_ == FooOneofCase.FooEnum) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { - PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooGroup { - get { return result.hasFooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup FooGroup { - get { return result.FooGroup; } + get { return result.fooCase_ == FooOneofCase.FooGroup ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance; } set { SetFooGroup(value); } } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = value; + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = value; return this; } public Builder SetFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooGroup = true; - result.fooGroup_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooGroup; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooGroup(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooGroup && - result.fooGroup_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) { - result.fooGroup_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(result.fooGroup_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooGroup && + result.FooGroup != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.FooGroup.CreateBuilder(result.FooGroup).MergeFrom(value).BuildPartial(); } else { - result.fooGroup_ = value; + result.foo_ = value; } - result.hasFooGroup = true; + result.fooCase_ = FooOneofCase.FooGroup; return this; } public Builder ClearFooGroup() { - PrepareBuilder(); - result.hasFooGroup = false; - result.fooGroup_ = null; + if (result.fooCase_ == FooOneofCase.FooGroup) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasFooLazyMessage { - get { return result.hasFooLazyMessage; } + get { return result.fooCase_ == FooOneofCase.FooLazyMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage FooLazyMessage { - get { return result.FooLazyMessage; } + get { return result.fooCase_ == FooOneofCase.FooLazyMessage ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance; } set { SetFooLazyMessage(value); } } public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooLazyMessage = true; - result.fooLazyMessage_ = value; + result.fooCase_ = FooOneofCase.FooLazyMessage; + result.foo_ = value; return this; } public Builder SetFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooLazyMessage = true; - result.fooLazyMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooLazyMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooLazyMessage(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooLazyMessage && - result.fooLazyMessage_ != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { - result.fooLazyMessage_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.fooLazyMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooLazyMessage && + result.FooLazyMessage != global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedMessage.CreateBuilder(result.FooLazyMessage).MergeFrom(value).BuildPartial(); } else { - result.fooLazyMessage_ = value; + result.foo_ = value; } - result.hasFooLazyMessage = true; + result.fooCase_ = FooOneofCase.FooLazyMessage; return this; } public Builder ClearFooLazyMessage() { - PrepareBuilder(); - result.hasFooLazyMessage = false; - result.fooLazyMessage_ = null; + if (result.fooCase_ == FooOneofCase.FooLazyMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } return this; } public bool HasBarInt { - get { return result.hasBarInt; } + get { return result.barCase_ == BarOneofCase.BarInt; } } public int BarInt { - get { return result.BarInt; } + get { return result.barCase_ == BarOneofCase.BarInt ? (int) result.bar_ : 5; } set { SetBarInt(value); } } public Builder SetBarInt(int value) { PrepareBuilder(); - result.hasBarInt = true; - result.barInt_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarInt; return this; } public Builder ClearBarInt() { PrepareBuilder(); - result.hasBarInt = false; - result.barInt_ = 5; + if (result.barCase_ == BarOneofCase.BarInt) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarString { - get { return result.hasBarString; } + get { return result.barCase_ == BarOneofCase.BarString; } } public string BarString { - get { return result.BarString; } + get { return result.barCase_ == BarOneofCase.BarString ? (string) result.bar_ : "STRING"; } set { SetBarString(value); } } public Builder SetBarString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarString = true; - result.barString_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarString; return this; } public Builder ClearBarString() { PrepareBuilder(); - result.hasBarString = false; - result.barString_ = "STRING"; + if (result.barCase_ == BarOneofCase.BarString) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarCord { - get { return result.hasBarCord; } + get { return result.barCase_ == BarOneofCase.BarCord; } } public string BarCord { - get { return result.BarCord; } + get { return result.barCase_ == BarOneofCase.BarCord ? (string) result.bar_ : "CORD"; } set { SetBarCord(value); } } public Builder SetBarCord(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarCord = true; - result.barCord_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarCord; return this; } public Builder ClearBarCord() { PrepareBuilder(); - result.hasBarCord = false; - result.barCord_ = "CORD"; + if (result.barCase_ == BarOneofCase.BarCord) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarStringPiece { - get { return result.hasBarStringPiece; } + get { return result.barCase_ == BarOneofCase.BarStringPiece; } } public string BarStringPiece { - get { return result.BarStringPiece; } + get { return result.barCase_ == BarOneofCase.BarStringPiece ? (string) result.bar_ : "SPIECE"; } set { SetBarStringPiece(value); } } public Builder SetBarStringPiece(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarStringPiece = true; - result.barStringPiece_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarStringPiece; return this; } public Builder ClearBarStringPiece() { PrepareBuilder(); - result.hasBarStringPiece = false; - result.barStringPiece_ = "SPIECE"; + if (result.barCase_ == BarOneofCase.BarStringPiece) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarBytes { - get { return result.hasBarBytes; } + get { return result.barCase_ == BarOneofCase.BarBytes; } } public pb::ByteString BarBytes { - get { return result.BarBytes; } + get { return result.barCase_ == BarOneofCase.BarBytes ? (pb::ByteString) result.bar_ : (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; } set { SetBarBytes(value); } } public Builder SetBarBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasBarBytes = true; - result.barBytes_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarBytes; return this; } public Builder ClearBarBytes() { PrepareBuilder(); - result.hasBarBytes = false; - result.barBytes_ = (pb::ByteString) global::Google.ProtocolBuffers.TestProtos.TestOneof2.Descriptor.Fields[13].DefaultValue; + if (result.barCase_ == BarOneofCase.BarBytes) { + result.barCase_ = BarOneofCase.None; + } return this; } public bool HasBarEnum { - get { return result.hasBarEnum; } + get { return result.barCase_ == BarOneofCase.BarEnum; } } public global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum BarEnum { - get { return result.BarEnum; } + get { return result.barCase_ == BarOneofCase.BarEnum ? (global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum) result.bar_ : global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; } set { SetBarEnum(value); } } public Builder SetBarEnum(global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum value) { PrepareBuilder(); - result.hasBarEnum = true; - result.barEnum_ = value; + result.bar_ = value; + result.barCase_ = BarOneofCase.BarEnum; return this; } public Builder ClearBarEnum() { PrepareBuilder(); - result.hasBarEnum = false; - result.barEnum_ = global::Google.ProtocolBuffers.TestProtos.TestOneof2.Types.NestedEnum.BAR; + if (result.barCase_ == BarOneofCase.BarEnum) { + result.barCase_ = BarOneofCase.None; + } return this; } @@ -24222,6 +24700,26 @@ namespace Google.ProtocolBuffers.TestProtos { result.bazString_ = "BAZ"; return this; } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { + PrepareBuilder(); + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; + return this; + } + + public BarOneofCase BarCase { + get { return result.barCase_; } + } + public Builder ClearBar() { + PrepareBuilder(); + result.bar_ = null; + result.barCase_ = BarOneofCase.None; + return this; + } } static TestOneof2() { object.ReferenceEquals(global::Google.ProtocolBuffers.TestProtos.Unittest.Descriptor, null); @@ -24536,34 +25034,40 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object foo_; + public enum FooOneofCase { + FooInt = 1, + FooString = 2, + FooMessage = 3, + None = 0, + } + private FooOneofCase fooCase_ = FooOneofCase.None; + public FooOneofCase FooCase { + get { return fooCase_; } + } + public const int FooIntFieldNumber = 1; - private bool hasFooInt; - private int fooInt_; public bool HasFooInt { - get { return hasFooInt; } + get { return fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return fooInt_; } + get { return fooCase_ == FooOneofCase.FooInt ? (int) foo_ : 0; } } public const int FooStringFieldNumber = 2; - private bool hasFooString; - private string fooString_ = ""; public bool HasFooString { - get { return hasFooString; } + get { return fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return fooString_; } + get { return fooCase_ == FooOneofCase.FooString ? (string) foo_ : ""; } } public const int FooMessageFieldNumber = 3; - private bool hasFooMessage; - private global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage fooMessage_; public bool HasFooMessage { - get { return hasFooMessage; } + get { return fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage { - get { return fooMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } + get { return fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } } public override bool IsInitialized { @@ -24578,13 +25082,13 @@ namespace Google.ProtocolBuffers.TestProtos { public override void WriteTo(pb::ICodedOutputStream output) { CalcSerializedSize(); string[] field_names = _testRequiredOneofFieldNames; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { output.WriteInt32(1, field_names[0], FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { output.WriteString(2, field_names[2], FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { output.WriteMessage(3, field_names[1], FooMessage); } UnknownFields.WriteTo(output); @@ -24604,13 +25108,13 @@ namespace Google.ProtocolBuffers.TestProtos { if (size != -1) return size; size = 0; - if (hasFooInt) { + if (fooCase_ == FooOneofCase.FooInt) { size += pb::CodedOutputStream.ComputeInt32Size(1, FooInt); } - if (hasFooString) { + if (fooCase_ == FooOneofCase.FooString) { size += pb::CodedOutputStream.ComputeStringSize(2, FooString); } - if (hasFooMessage) { + if (fooCase_ == FooOneofCase.FooMessage) { size += pb::CodedOutputStream.ComputeMessageSize(3, FooMessage); } size += UnknownFields.SerializedSize; @@ -24735,14 +25239,20 @@ namespace Google.ProtocolBuffers.TestProtos { public override Builder MergeFrom(TestRequiredOneof other) { if (other == global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.DefaultInstance) return this; PrepareBuilder(); - if (other.HasFooInt) { - FooInt = other.FooInt; - } - if (other.HasFooString) { - FooString = other.FooString; - } - if (other.HasFooMessage) { - MergeFooMessage(other.FooMessage); + switch (other.FooCase) { + case FooOneofCase.FooInt: { + SetFooInt(other.FooInt); + break; + } + case FooOneofCase.FooString: { + SetFooString(other.FooString); + break; + } + case FooOneofCase.FooMessage: { + MergeFooMessage(other.FooMessage); + break; + } + case FooOneofCase.None: { break; } } this.MergeUnknownFields(other.UnknownFields); return this; @@ -24788,20 +25298,29 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 8: { - result.hasFooInt = input.ReadInt32(ref result.fooInt_); + int value = 0; + if (input.ReadInt32(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; + } break; } case 18: { - result.hasFooString = input.ReadString(ref result.fooString_); + string value = ""; + if (input.ReadString(ref value)) { + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; + } break; } case 26: { global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(); - if (result.hasFooMessage) { + if (result.fooCase_ == FooOneofCase.FooMessage) { subBuilder.MergeFrom(FooMessage); } input.ReadMessage(subBuilder, extensionRegistry); - FooMessage = subBuilder.BuildPartial(); + result.foo_ = subBuilder.BuildPartial(); + result.fooCase_ = FooOneofCase.FooMessage; break; } } @@ -24815,83 +25334,97 @@ namespace Google.ProtocolBuffers.TestProtos { public bool HasFooInt { - get { return result.hasFooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt; } } public int FooInt { - get { return result.FooInt; } + get { return result.fooCase_ == FooOneofCase.FooInt ? (int) result.foo_ : 0; } set { SetFooInt(value); } } public Builder SetFooInt(int value) { PrepareBuilder(); - result.hasFooInt = true; - result.fooInt_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooInt; return this; } public Builder ClearFooInt() { PrepareBuilder(); - result.hasFooInt = false; - result.fooInt_ = 0; + if (result.fooCase_ == FooOneofCase.FooInt) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooString { - get { return result.hasFooString; } + get { return result.fooCase_ == FooOneofCase.FooString; } } public string FooString { - get { return result.FooString; } + get { return result.fooCase_ == FooOneofCase.FooString ? (string) result.foo_ : ""; } set { SetFooString(value); } } public Builder SetFooString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooString = true; - result.fooString_ = value; + result.foo_ = value; + result.fooCase_ = FooOneofCase.FooString; return this; } public Builder ClearFooString() { PrepareBuilder(); - result.hasFooString = false; - result.fooString_ = ""; + if (result.fooCase_ == FooOneofCase.FooString) { + result.fooCase_ = FooOneofCase.None; + } return this; } public bool HasFooMessage { - get { return result.hasFooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage FooMessage { - get { return result.FooMessage; } + get { return result.fooCase_ == FooOneofCase.FooMessage ? (global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage) result.foo_ : global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance; } set { SetFooMessage(value); } } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = value; + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = value; return this; } public Builder SetFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasFooMessage = true; - result.fooMessage_ = builderForValue.Build(); + result.fooCase_ = FooOneofCase.FooMessage; + result.foo_ = builderForValue.Build(); return this; } public Builder MergeFooMessage(global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasFooMessage && - result.fooMessage_ != global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance) { - result.fooMessage_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(result.fooMessage_).MergeFrom(value).BuildPartial(); + if (result.fooCase_ == FooOneofCase.FooMessage && + result.FooMessage != global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.DefaultInstance) { + result.foo_ = global::Google.ProtocolBuffers.TestProtos.TestRequiredOneof.Types.NestedMessage.CreateBuilder(result.FooMessage).MergeFrom(value).BuildPartial(); } else { - result.fooMessage_ = value; + result.foo_ = value; } - result.hasFooMessage = true; + result.fooCase_ = FooOneofCase.FooMessage; return this; } public Builder ClearFooMessage() { + if (result.fooCase_ == FooOneofCase.FooMessage) { + PrepareBuilder(); + result.fooCase_ = FooOneofCase.None; + result.foo_ = null; + } + return this; + } + + public FooOneofCase FooCase { + get { return result.fooCase_; } + } + public Builder ClearFoo() { PrepareBuilder(); - result.hasFooMessage = false; - result.fooMessage_ = null; + result.foo_ = null; + result.fooCase_ = FooOneofCase.None; return this; } } diff --git a/csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs b/csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs index e6cc2adb..84860b69 100644 --- a/csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs +++ b/csharp/src/ProtocolBuffersLite.Test/TestProtos/UnittestLite.cs @@ -1971,6 +1971,19 @@ namespace Google.ProtocolBuffers.TestProtos { } #endregion + private object oneofField_; + public enum OneofFieldOneofCase { + OneofUint32 = 111, + OneofNestedMessage = 112, + OneofString = 113, + OneofBytes = 114, + None = 0, + } + private OneofFieldOneofCase oneofFieldCase_ = OneofFieldOneofCase.None; + public OneofFieldOneofCase OneofFieldCase { + get { return oneofFieldCase_; } + } + public const int OptionalInt32FieldNumber = 1; private bool hasOptionalInt32; private int optionalInt32_; @@ -2732,43 +2745,35 @@ namespace Google.ProtocolBuffers.TestProtos { } public const int OneofUint32FieldNumber = 111; - private bool hasOneofUint32; - private uint oneofUint32_; public bool HasOneofUint32 { - get { return hasOneofUint32; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return oneofUint32_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) oneofField_ : 0; } } public const int OneofNestedMessageFieldNumber = 112; - private bool hasOneofNestedMessage; - private global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage oneofNestedMessage_; public bool HasOneofNestedMessage { - get { return hasOneofNestedMessage; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OneofNestedMessage { - get { return oneofNestedMessage_ ?? global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage) oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; } } public const int OneofStringFieldNumber = 113; - private bool hasOneofString; - private string oneofString_ = ""; public bool HasOneofString { - get { return hasOneofString; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return oneofString_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) oneofField_ : ""; } } public const int OneofBytesFieldNumber = 114; - private bool hasOneofBytes; - private pb::ByteString oneofBytes_ = pb::ByteString.Empty; public bool HasOneofBytes { - get { return hasOneofBytes; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return oneofBytes_; } + get { return oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) oneofField_ : pb::ByteString.Empty; } } public override bool IsInitialized { @@ -2993,16 +2998,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { output.WriteString(85, field_names[2], DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { output.WriteUInt32(111, field_names[23], OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { output.WriteMessage(112, field_names[21], OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { output.WriteString(113, field_names[22], OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { output.WriteBytes(114, field_names[20], OneofBytes); } } @@ -3326,16 +3331,16 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { size += pb::CodedOutputStream.ComputeStringSize(85, DefaultCord); } - if (hasOneofUint32) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { size += pb::CodedOutputStream.ComputeUInt32Size(111, OneofUint32); } - if (hasOneofNestedMessage) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { size += pb::CodedOutputStream.ComputeMessageSize(112, OneofNestedMessage); } - if (hasOneofString) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofString) { size += pb::CodedOutputStream.ComputeStringSize(113, OneofString); } - if (hasOneofBytes) { + if (oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { size += pb::CodedOutputStream.ComputeBytesSize(114, OneofBytes); } memoizedSerializedSize = size; @@ -3520,15 +3525,8 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultCord) { hash ^= defaultCord_.GetHashCode(); } - if (hasOneofUint32) { - hash ^= oneofUint32_.GetHashCode(); - } - if (hasOneofNestedMessage) hash ^= oneofNestedMessage_.GetHashCode(); - if (hasOneofString) { - hash ^= oneofString_.GetHashCode(); - } - if (hasOneofBytes) { - hash ^= oneofBytes_.GetHashCode(); + if (oneofFieldCase_ != OneofFieldOneofCase.None) { + hash ^= oneofField_.GetHashCode(); } return hash; } @@ -3657,10 +3655,10 @@ namespace Google.ProtocolBuffers.TestProtos { if (hasDefaultImportEnum != other.hasDefaultImportEnum || (hasDefaultImportEnum && !defaultImportEnum_.Equals(other.defaultImportEnum_))) return false; if (hasDefaultStringPiece != other.hasDefaultStringPiece || (hasDefaultStringPiece && !defaultStringPiece_.Equals(other.defaultStringPiece_))) return false; if (hasDefaultCord != other.hasDefaultCord || (hasDefaultCord && !defaultCord_.Equals(other.defaultCord_))) return false; - if (hasOneofUint32 != other.hasOneofUint32 || (hasOneofUint32 && !oneofUint32_.Equals(other.oneofUint32_))) return false; - if (hasOneofNestedMessage != other.hasOneofNestedMessage || (hasOneofNestedMessage && !oneofNestedMessage_.Equals(other.oneofNestedMessage_))) return false; - if (hasOneofString != other.hasOneofString || (hasOneofString && !oneofString_.Equals(other.oneofString_))) return false; - if (hasOneofBytes != other.hasOneofBytes || (hasOneofBytes && !oneofBytes_.Equals(other.oneofBytes_))) return false; + if (!OneofUint32.Equals(other.OneofUint32)) return false; + if (!OneofNestedMessage.Equals(other.OneofNestedMessage)) return false; + if (!OneofString.Equals(other.OneofString)) return false; + if (!OneofBytes.Equals(other.OneofBytes)) return false; return true; } @@ -3736,10 +3734,10 @@ namespace Google.ProtocolBuffers.TestProtos { PrintField("default_import_enum", hasDefaultImportEnum, defaultImportEnum_, writer); PrintField("default_string_piece", hasDefaultStringPiece, defaultStringPiece_, writer); PrintField("default_cord", hasDefaultCord, defaultCord_, writer); - PrintField("oneof_uint32", hasOneofUint32, oneofUint32_, writer); - PrintField("oneof_nested_message", hasOneofNestedMessage, oneofNestedMessage_, writer); - PrintField("oneof_string", hasOneofString, oneofString_, writer); - PrintField("oneof_bytes", hasOneofBytes, oneofBytes_, writer); + PrintField("oneof_uint32", oneofFieldCase_ == OneofFieldOneofCase.OneofUint32, oneofField_, writer); + PrintField("oneof_nested_message", oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage, oneofField_, writer); + PrintField("oneof_string", oneofFieldCase_ == OneofFieldOneofCase.OneofString, oneofField_, writer); + PrintField("oneof_bytes", oneofFieldCase_ == OneofFieldOneofCase.OneofBytes, oneofField_, writer); } #endregion @@ -4095,17 +4093,24 @@ namespace Google.ProtocolBuffers.TestProtos { if (other.HasDefaultCord) { DefaultCord = other.DefaultCord; } - if (other.HasOneofUint32) { - OneofUint32 = other.OneofUint32; - } - if (other.HasOneofNestedMessage) { - MergeOneofNestedMessage(other.OneofNestedMessage); - } - if (other.HasOneofString) { - OneofString = other.OneofString; - } - if (other.HasOneofBytes) { - OneofBytes = other.OneofBytes; + switch (other.OneofFieldCase) { + case OneofFieldOneofCase.OneofUint32: { + SetOneofUint32(other.OneofUint32); + break; + } + case OneofFieldOneofCase.OneofNestedMessage: { + MergeOneofNestedMessage(other.OneofNestedMessage); + break; + } + case OneofFieldOneofCase.OneofString: { + SetOneofString(other.OneofString); + break; + } + case OneofFieldOneofCase.OneofBytes: { + SetOneofBytes(other.OneofBytes); + break; + } + case OneofFieldOneofCase.None: { break; } } return this; } @@ -4497,24 +4502,37 @@ namespace Google.ProtocolBuffers.TestProtos { break; } case 888: { - result.hasOneofUint32 = input.ReadUInt32(ref result.oneofUint32_); + uint value = 0; + if (input.ReadUInt32(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; + } break; } case 898: { global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder subBuilder = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(); - if (result.hasOneofNestedMessage) { + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { subBuilder.MergeFrom(OneofNestedMessage); } input.ReadMessage(subBuilder, extensionRegistry); - OneofNestedMessage = subBuilder.BuildPartial(); + result.oneofField_ = subBuilder.BuildPartial(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; break; } case 906: { - result.hasOneofString = input.ReadString(ref result.oneofString_); + string value = ""; + if (input.ReadString(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; + } break; } case 914: { - result.hasOneofBytes = input.ReadBytes(ref result.oneofBytes_); + pb::ByteString value = pb::ByteString.Empty; + if (input.ReadBytes(ref value)) { + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; + } break; } } @@ -6401,104 +6419,119 @@ namespace Google.ProtocolBuffers.TestProtos { } public bool HasOneofUint32 { - get { return result.hasOneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32; } } public uint OneofUint32 { - get { return result.OneofUint32; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32 ? (uint) result.oneofField_ : 0; } set { SetOneofUint32(value); } } public Builder SetOneofUint32(uint value) { PrepareBuilder(); - result.hasOneofUint32 = true; - result.oneofUint32_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofUint32; return this; } public Builder ClearOneofUint32() { PrepareBuilder(); - result.hasOneofUint32 = false; - result.oneofUint32_ = 0; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofUint32) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofNestedMessage { - get { return result.hasOneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage; } } public global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage OneofNestedMessage { - get { return result.OneofNestedMessage; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage ? (global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage) result.oneofField_ : global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance; } set { SetOneofNestedMessage(value); } } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = value; return this; } public Builder SetOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.Builder builderForValue) { pb::ThrowHelper.ThrowIfNull(builderForValue, "builderForValue"); PrepareBuilder(); - result.hasOneofNestedMessage = true; - result.oneofNestedMessage_ = builderForValue.Build(); + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; + result.oneofField_ = builderForValue.Build(); return this; } public Builder MergeOneofNestedMessage(global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - if (result.hasOneofNestedMessage && - result.oneofNestedMessage_ != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) { - result.oneofNestedMessage_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.oneofNestedMessage_).MergeFrom(value).BuildPartial(); + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage && + result.OneofNestedMessage != global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.DefaultInstance) { + result.oneofField_ = global::Google.ProtocolBuffers.TestProtos.TestAllTypesLite.Types.NestedMessage.CreateBuilder(result.OneofNestedMessage).MergeFrom(value).BuildPartial(); } else { - result.oneofNestedMessage_ = value; + result.oneofField_ = value; } - result.hasOneofNestedMessage = true; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofNestedMessage; return this; } public Builder ClearOneofNestedMessage() { - PrepareBuilder(); - result.hasOneofNestedMessage = false; - result.oneofNestedMessage_ = null; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofNestedMessage) { + PrepareBuilder(); + result.oneofFieldCase_ = OneofFieldOneofCase.None; + result.oneofField_ = null; + } return this; } public bool HasOneofString { - get { return result.hasOneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString; } } public string OneofString { - get { return result.OneofString; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofString ? (string) result.oneofField_ : ""; } set { SetOneofString(value); } } public Builder SetOneofString(string value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofString = true; - result.oneofString_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofString; return this; } public Builder ClearOneofString() { PrepareBuilder(); - result.hasOneofString = false; - result.oneofString_ = ""; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofString) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } return this; } public bool HasOneofBytes { - get { return result.hasOneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes; } } public pb::ByteString OneofBytes { - get { return result.OneofBytes; } + get { return result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes ? (pb::ByteString) result.oneofField_ : pb::ByteString.Empty; } set { SetOneofBytes(value); } } public Builder SetOneofBytes(pb::ByteString value) { pb::ThrowHelper.ThrowIfNull(value, "value"); PrepareBuilder(); - result.hasOneofBytes = true; - result.oneofBytes_ = value; + result.oneofField_ = value; + result.oneofFieldCase_ = OneofFieldOneofCase.OneofBytes; return this; } public Builder ClearOneofBytes() { PrepareBuilder(); - result.hasOneofBytes = false; - result.oneofBytes_ = pb::ByteString.Empty; + if (result.oneofFieldCase_ == OneofFieldOneofCase.OneofBytes) { + result.oneofFieldCase_ = OneofFieldOneofCase.None; + } + return this; + } + + public OneofFieldOneofCase OneofFieldCase { + get { return result.oneofFieldCase_; } + } + public Builder ClearOneofField() { + PrepareBuilder(); + result.oneofField_ = null; + result.oneofFieldCase_ = OneofFieldOneofCase.None; return this; } } diff --git a/src/google/protobuf/compiler/csharp/csharp_enum_field.cc b/src/google/protobuf/compiler/csharp/csharp_enum_field.cc index 34d1c5c6..a2d8a98b 100644 --- a/src/google/protobuf/compiler/csharp/csharp_enum_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_enum_field.cc @@ -49,6 +49,11 @@ namespace csharp { EnumFieldGenerator::EnumFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal) : FieldGeneratorBase(descriptor, fieldOrdinal) { + if (SupportFieldPresence(descriptor_->file())) { + has_property_check = "has" + property_name(); + } else { + has_property_check = property_name() + " != " + default_value(); + } } EnumFieldGenerator::~EnumFieldGenerator() { @@ -122,8 +127,7 @@ void EnumFieldGenerator::GenerateBuildingCode(Writer* writer) { void EnumFieldGenerator::GenerateParsingCode(Writer* writer) { writer->WriteLine("object unknown;"); - writer->WriteLine("if(input.ReadEnum(ref result.$0$_, out unknown)) {", - name()); + writer->WriteLine("if(input.ReadEnum(ref result.$0$_, out unknown)) {", name()); if (SupportFieldPresence(descriptor_->file())) { writer->WriteLine(" result.has$0$ = true;", property_name()); } @@ -141,11 +145,7 @@ void EnumFieldGenerator::GenerateParsingCode(Writer* writer) { } void EnumFieldGenerator::GenerateSerializationCode(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine( " output.WriteEnum($0$, field_names[$2$], (int) $1$, $1$);", number(), property_name(), field_ordinal()); @@ -153,11 +153,7 @@ void EnumFieldGenerator::GenerateSerializationCode(Writer* writer) { } void EnumFieldGenerator::GenerateSerializedSizeCode(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine( " size += pb::CodedOutputStream.ComputeEnumSize($0$, (int) $1$);", number(), property_name()); @@ -165,11 +161,7 @@ void EnumFieldGenerator::GenerateSerializedSizeCode(Writer* writer) { } void EnumFieldGenerator::WriteHash(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" hash ^= $0$_.GetHashCode();", name()); writer->WriteLine("}"); } @@ -184,13 +176,94 @@ void EnumFieldGenerator::WriteEquals(Writer* writer) { } } void EnumFieldGenerator::WriteToString(Writer* writer) { + writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", + descriptor_->name(), has_property_check, name()); +} + +EnumOneofFieldGenerator::EnumOneofFieldGenerator(const FieldDescriptor* descriptor, + int fieldOrdinal) + : EnumFieldGenerator(descriptor, fieldOrdinal) { + has_property_check = oneof_name() + "Case_ == " + oneof_property_name() + + "OneofCase." + property_name(); +} + +EnumOneofFieldGenerator::~EnumOneofFieldGenerator() { +} + +void EnumOneofFieldGenerator::GenerateMembers(Writer* writer) { + AddDeprecatedFlag(writer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("PrintField(\"$0$\", has$1$, $2$_, writer);", - descriptor_->name(), property_name(), name()); - } else { - writer->WriteLine("PrintField(\"$0$\", $1$_, writer);", - descriptor_->name(), name()); + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return $0$; }", has_property_check); + writer->WriteLine("}"); + } + AddPublicMemberAttributes(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return $0$ ? ($1$) $2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine("}"); +} + +void EnumOneofFieldGenerator::GenerateBuilderMembers(Writer* writer) { + AddDeprecatedFlag(writer); + if (SupportFieldPresence(descriptor_->file())) { + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return result.$0$; }", has_property_check); + writer->WriteLine("}"); } + AddPublicMemberAttributes(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return result.$0$ ? ($1$) result.$2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine(" set { Set$0$(value); }", property_name()); + writer->WriteLine("}"); + AddPublicMemberAttributes(writer); + writer->WriteLine("public Builder Set$0$($1$ value) {", property_name(), + type_name()); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$_ = value;", oneof_name()); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Clear$0$() {", property_name()); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" if (result.$0$) {", has_property_check); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.None;", + oneof_name(), oneof_property_name()); + writer->WriteLine(" }"); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); +} + +void EnumOneofFieldGenerator::WriteEquals(Writer* writer) { + writer->WriteLine("if (!$0$.Equals(other.$0$)) return false;", property_name()); +} +void EnumOneofFieldGenerator::WriteToString(Writer* writer) { + writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", + descriptor_->name(), has_property_check, oneof_name()); +} + +void EnumOneofFieldGenerator::GenerateParsingCode(Writer* writer) { + writer->WriteLine("object unknown;"); + writer->WriteLine("$0$ enumValue = $1$;", type_name(), default_value()); + writer->WriteLine("if(input.ReadEnum(ref enumValue, out unknown)) {", + name()); + writer->WriteLine(" result.$0$_ = enumValue;", oneof_name()); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine("} else if(unknown is int) {"); + if (!use_lite_runtime()) { + writer->WriteLine(" if (unknownFields == null) {"); // First unknown field - create builder now + writer->WriteLine( + " unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);"); + writer->WriteLine(" }"); + writer->WriteLine( + " unknownFields.MergeVarintField($0$, (ulong)(int)unknown);", + number()); + } + writer->WriteLine("}"); } } // namespace csharp diff --git a/src/google/protobuf/compiler/csharp/csharp_enum_field.h b/src/google/protobuf/compiler/csharp/csharp_enum_field.h index b21fa9dc..565287b2 100644 --- a/src/google/protobuf/compiler/csharp/csharp_enum_field.h +++ b/src/google/protobuf/compiler/csharp/csharp_enum_field.h @@ -60,10 +60,28 @@ class EnumFieldGenerator : public FieldGeneratorBase { virtual void WriteEquals(Writer* writer); virtual void WriteToString(Writer* writer); + protected: + string has_property_check; + private: GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumFieldGenerator); }; +class EnumOneofFieldGenerator : public EnumFieldGenerator { + public: + EnumOneofFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal); + ~EnumOneofFieldGenerator(); + + virtual void GenerateMembers(Writer* writer); + virtual void GenerateBuilderMembers(Writer* writer); + virtual void WriteEquals(Writer* writer); + virtual void WriteToString(Writer* writer); + virtual void GenerateParsingCode(Writer* writer); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(EnumOneofFieldGenerator); +}; + } // namespace csharp } // namespace compiler } // namespace protobuf diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.cc b/src/google/protobuf/compiler/csharp/csharp_field_base.cc index 145b6743..dfc803e6 100644 --- a/src/google/protobuf/compiler/csharp/csharp_field_base.cc +++ b/src/google/protobuf/compiler/csharp/csharp_field_base.cc @@ -81,6 +81,14 @@ void FieldGeneratorBase::AddPublicMemberAttributes(Writer* writer) { AddDeprecatedFlag(writer); } +std::string FieldGeneratorBase::oneof_property_name() { + return UnderscoresToCamelCase(descriptor_->containing_oneof()->name(), true); +} + +std::string FieldGeneratorBase::oneof_name() { + return UnderscoresToCamelCase(descriptor_->containing_oneof()->name(), false); +} + std::string FieldGeneratorBase::property_name() { return GetPropertyName(descriptor_); } diff --git a/src/google/protobuf/compiler/csharp/csharp_field_base.h b/src/google/protobuf/compiler/csharp/csharp_field_base.h index 311f7a6e..312da12b 100644 --- a/src/google/protobuf/compiler/csharp/csharp_field_base.h +++ b/src/google/protobuf/compiler/csharp/csharp_field_base.h @@ -71,6 +71,8 @@ class FieldGeneratorBase : public SourceGeneratorBase { void AddPublicMemberAttributes(Writer* writer); + std::string oneof_property_name(); + std::string oneof_name(); std::string property_name(); std::string name(); std::string type_name(); diff --git a/src/google/protobuf/compiler/csharp/csharp_helpers.cc b/src/google/protobuf/compiler/csharp/csharp_helpers.cc index 4580b7be..76e2c850 100644 --- a/src/google/protobuf/compiler/csharp/csharp_helpers.cc +++ b/src/google/protobuf/compiler/csharp/csharp_helpers.cc @@ -346,19 +346,31 @@ FieldGeneratorBase* CreateFieldGenerator(const FieldDescriptor* descriptor, if (descriptor->is_repeated()) { return new RepeatedMessageFieldGenerator(descriptor, fieldOrdinal); } else { - return new MessageFieldGenerator(descriptor, fieldOrdinal); + if (descriptor->containing_oneof()) { + return new MessageOneofFieldGenerator(descriptor, fieldOrdinal); + } else { + return new MessageFieldGenerator(descriptor, fieldOrdinal); + } } case FieldDescriptor::TYPE_ENUM: if (descriptor->is_repeated()) { return new RepeatedEnumFieldGenerator(descriptor, fieldOrdinal); } else { - return new EnumFieldGenerator(descriptor, fieldOrdinal); + if (descriptor->containing_oneof()) { + return new EnumOneofFieldGenerator(descriptor, fieldOrdinal); + } else { + return new EnumFieldGenerator(descriptor, fieldOrdinal); + } } default: if (descriptor->is_repeated()) { return new RepeatedPrimitiveFieldGenerator(descriptor, fieldOrdinal); } else { - return new PrimitiveFieldGenerator(descriptor, fieldOrdinal); + if (descriptor->containing_oneof()) { + return new PrimitiveOneofFieldGenerator(descriptor, fieldOrdinal); + } else { + return new PrimitiveFieldGenerator(descriptor, fieldOrdinal); + } } } } diff --git a/src/google/protobuf/compiler/csharp/csharp_message.cc b/src/google/protobuf/compiler/csharp/csharp_message.cc index 96f7c17c..22681235 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message.cc +++ b/src/google/protobuf/compiler/csharp/csharp_message.cc @@ -156,6 +156,10 @@ void MessageGenerator::GenerateStaticVariableInitializers(Writer* writer) { for (int i = 0; i < descriptor_->field_count(); i++) { writer->Write("\"$0$\", ", GetPropertyName(descriptor_->field(i))); } + for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { + writer->Write("\"$0$\", ", + UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), true)); + } writer->WriteLine("});"); } @@ -260,6 +264,31 @@ void MessageGenerator::Generate(Writer* writer) { writer->WriteLine(); } + // oneof + for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { + string name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), false); + string property_name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), true); + writer->WriteLine("private object $0$_;", name); + writer->WriteLine("public enum $0$OneofCase {", property_name); + writer->Indent(); + for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { + const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); + writer->WriteLine("$0$ = $1$,", + GetPropertyName(field), + SimpleItoa(field->number())); + } + writer->WriteLine("None = 0,"); + writer->Outdent(); + writer->WriteLine("}"); + writer->WriteLine("private $0$OneofCase $1$Case_ = $0$OneofCase.None;", + property_name, name); + writer->WriteLine("public $0$OneofCase $0$Case {", property_name); + writer->WriteLine(" get { return $0$Case_; }", name); + writer->WriteLine("}"); + writer->WriteLine(); + } + + // Fields for (int i = 0; i < descriptor_->field_count(); i++) { const FieldDescriptor* fieldDescriptor = descriptor_->field(i); @@ -310,9 +339,19 @@ void MessageGenerator::GenerateLiteRuntimeMethods(Writer* writer) { writer->Indent(); writer->WriteLine("int hash = GetType().GetHashCode();"); for (int i = 0; i < descriptor_->field_count(); i++) { - scoped_ptr<FieldGeneratorBase> generator( - CreateFieldGeneratorInternal(descriptor_->field(i))); - generator->WriteHash(writer); + const FieldDescriptor* field = descriptor_->field(i); + if (field->containing_oneof() == NULL) { + scoped_ptr<FieldGeneratorBase> generator( + CreateFieldGeneratorInternal(field)); + generator->WriteHash(writer); + } + } + for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { + string name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), false); + string property_name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), true); + writer->WriteLine("if ($0$Case_ != $1$OneofCase.None) {", name, property_name); + writer->WriteLine(" hash ^= $0$_.GetHashCode();", name); + writer->WriteLine("}"); } if (callbase) { writer->WriteLine("hash ^= base.GetHashCode();"); @@ -577,6 +616,23 @@ void MessageGenerator::GenerateBuilder(Writer* writer) { // No field comment :( generator->GenerateBuilderMembers(writer); } + + // oneof + for (int i = 0; i < descriptor_->oneof_decl_count(); i++) { + writer->WriteLine(); + string name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), false); + string property_name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), true); + writer->WriteLine("public $0$OneofCase $0$Case {", property_name); + writer->WriteLine(" get { return result.$0$Case_; }", name); + writer->WriteLine("}"); + writer->WriteLine("public Builder Clear$0$() {", property_name); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$_ = null;", name); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.None;", name, property_name); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + } + writer->Outdent(); writer->WriteLine("}"); } @@ -675,10 +731,37 @@ void MessageGenerator::GenerateCommonBuilderMethods(Writer* writer) { full_class_name()); writer->WriteLine("PrepareBuilder();"); for (int i = 0; i < descriptor_->field_count(); i++) { - scoped_ptr<FieldGeneratorBase> generator( - CreateFieldGeneratorInternal(descriptor_->field(i))); - generator->GenerateMergingCode(writer); + if (!descriptor_->field(i)->containing_oneof()) { + scoped_ptr<FieldGeneratorBase> generator( + CreateFieldGeneratorInternal(descriptor_->field(i))); + generator->GenerateMergingCode(writer); + } + } + + // Merge oneof fields + for (int i = 0; i < descriptor_->oneof_decl_count(); ++i) { + string name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), false); + string property_name = UnderscoresToCamelCase(descriptor_->oneof_decl(i)->name(), true); + writer->WriteLine("switch (other.$0$Case) {", property_name); + writer->Indent(); + for (int j = 0; j < descriptor_->oneof_decl(i)->field_count(); j++) { + const FieldDescriptor* field = descriptor_->oneof_decl(i)->field(j); + writer->WriteLine("case $0$OneofCase.$1$: {", + property_name, GetPropertyName(field)); + if (field->type() == FieldDescriptor::TYPE_GROUP || + field->type() == FieldDescriptor::TYPE_MESSAGE) { + writer->WriteLine(" Merge$0$(other.$0$);", GetPropertyName(field)); + } else { + writer->WriteLine(" Set$0$(other.$0$);", GetPropertyName(field)); + } + writer->WriteLine(" break;"); + writer->WriteLine("}"); + } + writer->WriteLine("case $0$OneofCase.None: { break; }", property_name); + writer->Outdent(); + writer->WriteLine("}"); } + // if message type has extensions if (descriptor_->extension_range_count() > 0) { writer->WriteLine(" this.MergeExtensionFields(other);"); diff --git a/src/google/protobuf/compiler/csharp/csharp_message_field.cc b/src/google/protobuf/compiler/csharp/csharp_message_field.cc index 10464c4b..b533d735 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_message_field.cc @@ -50,6 +50,7 @@ namespace csharp { MessageFieldGenerator::MessageFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal) : FieldGeneratorBase(descriptor, fieldOrdinal) { + has_property_check = "has" + property_name(); } MessageFieldGenerator::~MessageFieldGenerator() { @@ -149,7 +150,7 @@ void MessageFieldGenerator::GenerateParsingCode(Writer* writer) { } void MessageFieldGenerator::GenerateSerializationCode(Writer* writer) { - writer->WriteLine("if (has$0$) {", property_name()); + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" output.Write$0$($1$, field_names[$3$], $2$);", message_or_group(), number(), property_name(), field_ordinal()); @@ -157,7 +158,7 @@ void MessageFieldGenerator::GenerateSerializationCode(Writer* writer) { } void MessageFieldGenerator::GenerateSerializedSizeCode(Writer* writer) { - writer->WriteLine("if (has$0$) {", property_name()); + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" size += pb::CodedOutputStream.Compute$0$Size($1$, $2$);", message_or_group(), number(), property_name()); writer->WriteLine("}"); @@ -177,6 +178,119 @@ void MessageFieldGenerator::WriteToString(Writer* writer) { property_name(), name(), GetFieldName(descriptor_)); } +MessageOneofFieldGenerator::MessageOneofFieldGenerator(const FieldDescriptor* descriptor, + int fieldOrdinal) + : MessageFieldGenerator(descriptor, fieldOrdinal) { + has_property_check = oneof_name() + "Case_ == " + oneof_property_name() + + "OneofCase." + property_name(); +} + +MessageOneofFieldGenerator::~MessageOneofFieldGenerator() { + +} + +void MessageOneofFieldGenerator::GenerateMembers(Writer* writer) { + if (SupportFieldPresence(descriptor_->file())) { + AddDeprecatedFlag(writer); + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return $0$; }", has_property_check); + writer->WriteLine("}"); + } + AddDeprecatedFlag(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return $0$ ? ($1$) $2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine("}"); +} + +void MessageOneofFieldGenerator::GenerateBuilderMembers(Writer* writer) { + if (SupportFieldPresence(descriptor_->file())) { + AddDeprecatedFlag(writer); + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return result.$0$; }", has_property_check); + writer->WriteLine("}"); + } + AddDeprecatedFlag(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return result.$0$ ? ($1$) result.$2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine(" set { Set$0$(value); }", property_name()); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Set$0$($1$ value) {", property_name(), + type_name()); + AddNullCheck(writer); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine(" result.$0$_ = value;", oneof_name()); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Set$0$($1$.Builder builderForValue) {", + property_name(), type_name()); + AddNullCheck(writer, "builderForValue"); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine(" result.$0$_ = builderForValue.Build();", oneof_name()); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Merge$0$($1$ value) {", property_name(), + type_name()); + AddNullCheck(writer); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" if (result.$0$ &&", has_property_check); + writer->WriteLine(" result.$0$ != $1$) {", property_name(), default_value()); + writer->WriteLine( + " result.$0$_ = $1$.CreateBuilder(result.$2$).MergeFrom(value).BuildPartial();", + oneof_name(), type_name(), property_name()); + writer->WriteLine(" } else {"); + writer->WriteLine(" result.$0$_ = value;", oneof_name()); + writer->WriteLine(" }"); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Clear$0$() {", property_name()); + writer->WriteLine(" if (result.$0$) {", has_property_check); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.None;", + oneof_name(), oneof_property_name()); + writer->WriteLine(" result.$0$_ = null;", oneof_name()); + writer->WriteLine(" }"); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); +} + +void MessageOneofFieldGenerator::GenerateParsingCode(Writer* writer) { + writer->WriteLine("$0$.Builder subBuilder = $0$.CreateBuilder();", + type_name()); + writer->WriteLine("if (result.$0$) {", has_property_check); + writer->WriteLine(" subBuilder.MergeFrom($0$);", property_name()); + writer->WriteLine("}"); + + if (descriptor_->type() == FieldDescriptor::TYPE_GROUP) { + writer->WriteLine("input.ReadGroup($0$, subBuilder, extensionRegistry);", + number()); + } else { + writer->WriteLine("input.ReadMessage(subBuilder, extensionRegistry);"); + } + writer->WriteLine("result.$0$_ = subBuilder.BuildPartial();", oneof_name()); + writer->WriteLine("result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); +} + +void MessageOneofFieldGenerator::WriteEquals(Writer* writer) { + writer->WriteLine("if (!$0$.Equals(other.$0$)) return false;", property_name()); +} +void MessageOneofFieldGenerator::WriteToString(Writer* writer) { + writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", + descriptor_->name(), has_property_check, oneof_name()); +} + } // namespace csharp } // namespace compiler } // namespace protobuf diff --git a/src/google/protobuf/compiler/csharp/csharp_message_field.h b/src/google/protobuf/compiler/csharp/csharp_message_field.h index 48bf8be5..d455ade5 100644 --- a/src/google/protobuf/compiler/csharp/csharp_message_field.h +++ b/src/google/protobuf/compiler/csharp/csharp_message_field.h @@ -60,10 +60,28 @@ class MessageFieldGenerator : public FieldGeneratorBase { virtual void WriteEquals(Writer* writer); virtual void WriteToString(Writer* writer); + protected: + string has_property_check; + private: GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageFieldGenerator); }; +class MessageOneofFieldGenerator : public MessageFieldGenerator { + public: + MessageOneofFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal); + ~MessageOneofFieldGenerator(); + + virtual void GenerateMembers(Writer* writer); + virtual void GenerateBuilderMembers(Writer* writer); + virtual void WriteEquals(Writer* writer); + virtual void WriteToString(Writer* writer); + virtual void GenerateParsingCode(Writer* writer); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(MessageOneofFieldGenerator); +}; + } // namespace csharp } // namespace compiler } // namespace protobuf diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc index a193afda..a54edfe3 100644 --- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc +++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.cc @@ -50,6 +50,11 @@ namespace csharp { PrimitiveFieldGenerator::PrimitiveFieldGenerator( const FieldDescriptor* descriptor, int fieldOrdinal) : FieldGeneratorBase(descriptor, fieldOrdinal) { + if (SupportFieldPresence(descriptor_->file())) { + has_property_check = "has" + property_name(); + } else { + has_property_check = property_name() + " != " + default_value(); + } } PrimitiveFieldGenerator::~PrimitiveFieldGenerator() { @@ -133,11 +138,7 @@ void PrimitiveFieldGenerator::GenerateParsingCode(Writer* writer) { } void PrimitiveFieldGenerator::GenerateSerializationCode(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" output.Write$0$($1$, field_names[$3$], $2$);", capitalized_type_name(), number(), property_name(), field_ordinal()); @@ -145,22 +146,14 @@ void PrimitiveFieldGenerator::GenerateSerializationCode(Writer* writer) { } void PrimitiveFieldGenerator::GenerateSerializedSizeCode(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" size += pb::CodedOutputStream.Compute$0$Size($1$, $2$);", capitalized_type_name(), number(), property_name()); writer->WriteLine("}"); } void PrimitiveFieldGenerator::WriteHash(Writer* writer) { - if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("if (has$0$) {", property_name()); - } else { - writer->WriteLine("if ($0$ != $1$) {", property_name(), default_value()); - } + writer->WriteLine("if ($0$) {", has_property_check); writer->WriteLine(" hash ^= $0$_.GetHashCode();", name()); writer->WriteLine("}"); } @@ -175,13 +168,84 @@ void PrimitiveFieldGenerator::WriteEquals(Writer* writer) { } } void PrimitiveFieldGenerator::WriteToString(Writer* writer) { + writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", + descriptor_->name(), has_property_check, name()); +} + +PrimitiveOneofFieldGenerator::PrimitiveOneofFieldGenerator( + const FieldDescriptor* descriptor, int fieldOrdinal) + : PrimitiveFieldGenerator(descriptor, fieldOrdinal) { + has_property_check = oneof_name() + "Case_ == " + oneof_property_name() + + "OneofCase." + property_name(); +} + +PrimitiveOneofFieldGenerator::~PrimitiveOneofFieldGenerator() { +} + +void PrimitiveOneofFieldGenerator::GenerateMembers(Writer* writer) { + AddDeprecatedFlag(writer); if (SupportFieldPresence(descriptor_->file())) { - writer->WriteLine("PrintField(\"$0$\", has$1$, $2$_, writer);", - descriptor_->name(), property_name(), name()); - } else { - writer->WriteLine("PrintField(\"$0$\", $1$_, writer);", - descriptor_->name(), name()); + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return $0$; }", has_property_check); + writer->WriteLine("}"); } + AddPublicMemberAttributes(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return $0$ ? ($1$) $2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine("}"); +} + +void PrimitiveOneofFieldGenerator::GenerateBuilderMembers(Writer* writer) { + AddDeprecatedFlag(writer); + if (SupportFieldPresence(descriptor_->file())) { + writer->WriteLine("public bool Has$0$ {", property_name()); + writer->WriteLine(" get { return result.$0$; }", has_property_check); + writer->WriteLine("}"); + } + AddPublicMemberAttributes(writer); + writer->WriteLine("public $0$ $1$ {", type_name(), property_name()); + writer->WriteLine(" get { return result.$0$ ? ($1$) result.$2$_ : $3$; }", + has_property_check, type_name(), oneof_name(), default_value()); + writer->WriteLine(" set { Set$0$(value); }", property_name()); + writer->WriteLine("}"); + AddPublicMemberAttributes(writer); + writer->WriteLine("public Builder Set$0$($1$ value) {", property_name(), + type_name()); + AddNullCheck(writer); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" result.$0$_ = value;", oneof_name()); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); + AddDeprecatedFlag(writer); + writer->WriteLine("public Builder Clear$0$() {", property_name()); + writer->WriteLine(" PrepareBuilder();"); + writer->WriteLine(" if (result.$0$) {", has_property_check); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.None;", + oneof_name(), oneof_property_name()); + writer->WriteLine(" }"); + writer->WriteLine(" return this;"); + writer->WriteLine("}"); +} + +void PrimitiveOneofFieldGenerator::WriteEquals(Writer* writer) { + writer->WriteLine("if (!$0$.Equals(other.$0$)) return false;", property_name()); +} +void PrimitiveOneofFieldGenerator::WriteToString(Writer* writer) { + writer->WriteLine("PrintField(\"$0$\", $1$, $2$_, writer);", + descriptor_->name(), has_property_check, oneof_name()); +} + +void PrimitiveOneofFieldGenerator::GenerateParsingCode(Writer* writer) { + writer->WriteLine("$0$ value = $1$;", type_name(), default_value()); + writer->WriteLine("if (input.Read$0$(ref value)) {", + capitalized_type_name()); + writer->WriteLine(" result.$0$_ = value;", oneof_name()); + writer->WriteLine(" result.$0$Case_ = $1$OneofCase.$2$;", + oneof_name(), oneof_property_name(), property_name()); + writer->WriteLine("}"); } } // namespace csharp diff --git a/src/google/protobuf/compiler/csharp/csharp_primitive_field.h b/src/google/protobuf/compiler/csharp/csharp_primitive_field.h index fb27ab43..ecc6ed91 100644 --- a/src/google/protobuf/compiler/csharp/csharp_primitive_field.h +++ b/src/google/protobuf/compiler/csharp/csharp_primitive_field.h @@ -60,10 +60,28 @@ class PrimitiveFieldGenerator : public FieldGeneratorBase { virtual void WriteEquals(Writer* writer); virtual void WriteToString(Writer* writer); + protected: + string has_property_check; + private: GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PrimitiveFieldGenerator); }; +class PrimitiveOneofFieldGenerator : public PrimitiveFieldGenerator { + public: + PrimitiveOneofFieldGenerator(const FieldDescriptor* descriptor, int fieldOrdinal); + ~PrimitiveOneofFieldGenerator(); + + virtual void GenerateMembers(Writer* writer); + virtual void GenerateBuilderMembers(Writer* writer); + virtual void WriteEquals(Writer* writer); + virtual void WriteToString(Writer* writer); + virtual void GenerateParsingCode(Writer* writer); + + private: + GOOGLE_DISALLOW_EVIL_CONSTRUCTORS(PrimitiveOneofFieldGenerator); +}; + } // namespace csharp } // namespace compiler } // namespace protobuf |