diff --git a/api/cosmos/gov/v1/gov.pulsar.go b/api/cosmos/gov/v1/gov.pulsar.go index 9bce5d5090..3a1022a415 100644 --- a/api/cosmos/gov/v1/gov.pulsar.go +++ b/api/cosmos/gov/v1/gov.pulsar.go @@ -3322,6 +3322,10 @@ var ( fd_TallyResult_abstain_count protoreflect.FieldDescriptor fd_TallyResult_no_count protoreflect.FieldDescriptor fd_TallyResult_no_with_veto_count protoreflect.FieldDescriptor + fd_TallyResult_option_one_count protoreflect.FieldDescriptor + fd_TallyResult_option_two_count protoreflect.FieldDescriptor + fd_TallyResult_option_three_count protoreflect.FieldDescriptor + fd_TallyResult_option_four_count protoreflect.FieldDescriptor fd_TallyResult_spam_count protoreflect.FieldDescriptor ) @@ -3332,6 +3336,10 @@ func init() { fd_TallyResult_abstain_count = md_TallyResult.Fields().ByName("abstain_count") fd_TallyResult_no_count = md_TallyResult.Fields().ByName("no_count") fd_TallyResult_no_with_veto_count = md_TallyResult.Fields().ByName("no_with_veto_count") + fd_TallyResult_option_one_count = md_TallyResult.Fields().ByName("option_one_count") + fd_TallyResult_option_two_count = md_TallyResult.Fields().ByName("option_two_count") + fd_TallyResult_option_three_count = md_TallyResult.Fields().ByName("option_three_count") + fd_TallyResult_option_four_count = md_TallyResult.Fields().ByName("option_four_count") fd_TallyResult_spam_count = md_TallyResult.Fields().ByName("spam_count") } @@ -3424,6 +3432,30 @@ func (x *fastReflection_TallyResult) Range(f func(protoreflect.FieldDescriptor, return } } + if x.OptionOneCount != "" { + value := protoreflect.ValueOfString(x.OptionOneCount) + if !f(fd_TallyResult_option_one_count, value) { + return + } + } + if x.OptionTwoCount != "" { + value := protoreflect.ValueOfString(x.OptionTwoCount) + if !f(fd_TallyResult_option_two_count, value) { + return + } + } + if x.OptionThreeCount != "" { + value := protoreflect.ValueOfString(x.OptionThreeCount) + if !f(fd_TallyResult_option_three_count, value) { + return + } + } + if x.OptionFourCount != "" { + value := protoreflect.ValueOfString(x.OptionFourCount) + if !f(fd_TallyResult_option_four_count, value) { + return + } + } if x.SpamCount != "" { value := protoreflect.ValueOfString(x.SpamCount) if !f(fd_TallyResult_spam_count, value) { @@ -3453,6 +3485,14 @@ func (x *fastReflection_TallyResult) Has(fd protoreflect.FieldDescriptor) bool { return x.NoCount != "" case "cosmos.gov.v1.TallyResult.no_with_veto_count": return x.NoWithVetoCount != "" + case "cosmos.gov.v1.TallyResult.option_one_count": + return x.OptionOneCount != "" + case "cosmos.gov.v1.TallyResult.option_two_count": + return x.OptionTwoCount != "" + case "cosmos.gov.v1.TallyResult.option_three_count": + return x.OptionThreeCount != "" + case "cosmos.gov.v1.TallyResult.option_four_count": + return x.OptionFourCount != "" case "cosmos.gov.v1.TallyResult.spam_count": return x.SpamCount != "" default: @@ -3479,6 +3519,14 @@ func (x *fastReflection_TallyResult) Clear(fd protoreflect.FieldDescriptor) { x.NoCount = "" case "cosmos.gov.v1.TallyResult.no_with_veto_count": x.NoWithVetoCount = "" + case "cosmos.gov.v1.TallyResult.option_one_count": + x.OptionOneCount = "" + case "cosmos.gov.v1.TallyResult.option_two_count": + x.OptionTwoCount = "" + case "cosmos.gov.v1.TallyResult.option_three_count": + x.OptionThreeCount = "" + case "cosmos.gov.v1.TallyResult.option_four_count": + x.OptionFourCount = "" case "cosmos.gov.v1.TallyResult.spam_count": x.SpamCount = "" default: @@ -3509,6 +3557,18 @@ func (x *fastReflection_TallyResult) Get(descriptor protoreflect.FieldDescriptor case "cosmos.gov.v1.TallyResult.no_with_veto_count": value := x.NoWithVetoCount return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.TallyResult.option_one_count": + value := x.OptionOneCount + return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.TallyResult.option_two_count": + value := x.OptionTwoCount + return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.TallyResult.option_three_count": + value := x.OptionThreeCount + return protoreflect.ValueOfString(value) + case "cosmos.gov.v1.TallyResult.option_four_count": + value := x.OptionFourCount + return protoreflect.ValueOfString(value) case "cosmos.gov.v1.TallyResult.spam_count": value := x.SpamCount return protoreflect.ValueOfString(value) @@ -3540,6 +3600,14 @@ func (x *fastReflection_TallyResult) Set(fd protoreflect.FieldDescriptor, value x.NoCount = value.Interface().(string) case "cosmos.gov.v1.TallyResult.no_with_veto_count": x.NoWithVetoCount = value.Interface().(string) + case "cosmos.gov.v1.TallyResult.option_one_count": + x.OptionOneCount = value.Interface().(string) + case "cosmos.gov.v1.TallyResult.option_two_count": + x.OptionTwoCount = value.Interface().(string) + case "cosmos.gov.v1.TallyResult.option_three_count": + x.OptionThreeCount = value.Interface().(string) + case "cosmos.gov.v1.TallyResult.option_four_count": + x.OptionFourCount = value.Interface().(string) case "cosmos.gov.v1.TallyResult.spam_count": x.SpamCount = value.Interface().(string) default: @@ -3570,6 +3638,14 @@ func (x *fastReflection_TallyResult) Mutable(fd protoreflect.FieldDescriptor) pr panic(fmt.Errorf("field no_count of message cosmos.gov.v1.TallyResult is not mutable")) case "cosmos.gov.v1.TallyResult.no_with_veto_count": panic(fmt.Errorf("field no_with_veto_count of message cosmos.gov.v1.TallyResult is not mutable")) + case "cosmos.gov.v1.TallyResult.option_one_count": + panic(fmt.Errorf("field option_one_count of message cosmos.gov.v1.TallyResult is not mutable")) + case "cosmos.gov.v1.TallyResult.option_two_count": + panic(fmt.Errorf("field option_two_count of message cosmos.gov.v1.TallyResult is not mutable")) + case "cosmos.gov.v1.TallyResult.option_three_count": + panic(fmt.Errorf("field option_three_count of message cosmos.gov.v1.TallyResult is not mutable")) + case "cosmos.gov.v1.TallyResult.option_four_count": + panic(fmt.Errorf("field option_four_count of message cosmos.gov.v1.TallyResult is not mutable")) case "cosmos.gov.v1.TallyResult.spam_count": panic(fmt.Errorf("field spam_count of message cosmos.gov.v1.TallyResult is not mutable")) default: @@ -3593,6 +3669,14 @@ func (x *fastReflection_TallyResult) NewField(fd protoreflect.FieldDescriptor) p return protoreflect.ValueOfString("") case "cosmos.gov.v1.TallyResult.no_with_veto_count": return protoreflect.ValueOfString("") + case "cosmos.gov.v1.TallyResult.option_one_count": + return protoreflect.ValueOfString("") + case "cosmos.gov.v1.TallyResult.option_two_count": + return protoreflect.ValueOfString("") + case "cosmos.gov.v1.TallyResult.option_three_count": + return protoreflect.ValueOfString("") + case "cosmos.gov.v1.TallyResult.option_four_count": + return protoreflect.ValueOfString("") case "cosmos.gov.v1.TallyResult.spam_count": return protoreflect.ValueOfString("") default: @@ -3680,6 +3764,22 @@ func (x *fastReflection_TallyResult) ProtoMethods() *protoiface.Methods { if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) } + l = len(x.OptionOneCount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.OptionTwoCount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.OptionThreeCount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } + l = len(x.OptionFourCount) + if l > 0 { + n += 1 + l + runtime.Sov(uint64(l)) + } l = len(x.SpamCount) if l > 0 { n += 1 + l + runtime.Sov(uint64(l)) @@ -3718,6 +3818,34 @@ func (x *fastReflection_TallyResult) ProtoMethods() *protoiface.Methods { copy(dAtA[i:], x.SpamCount) i = runtime.EncodeVarint(dAtA, i, uint64(len(x.SpamCount))) i-- + dAtA[i] = 0x4a + } + if len(x.OptionFourCount) > 0 { + i -= len(x.OptionFourCount) + copy(dAtA[i:], x.OptionFourCount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OptionFourCount))) + i-- + dAtA[i] = 0x42 + } + if len(x.OptionThreeCount) > 0 { + i -= len(x.OptionThreeCount) + copy(dAtA[i:], x.OptionThreeCount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OptionThreeCount))) + i-- + dAtA[i] = 0x3a + } + if len(x.OptionTwoCount) > 0 { + i -= len(x.OptionTwoCount) + copy(dAtA[i:], x.OptionTwoCount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OptionTwoCount))) + i-- + dAtA[i] = 0x32 + } + if len(x.OptionOneCount) > 0 { + i -= len(x.OptionOneCount) + copy(dAtA[i:], x.OptionOneCount) + i = runtime.EncodeVarint(dAtA, i, uint64(len(x.OptionOneCount))) + i-- dAtA[i] = 0x2a } if len(x.NoWithVetoCount) > 0 { @@ -3926,6 +4054,134 @@ func (x *fastReflection_TallyResult) ProtoMethods() *protoiface.Methods { x.NoWithVetoCount = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OptionOneCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OptionOneCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OptionTwoCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OptionTwoCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OptionThreeCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OptionThreeCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field OptionFourCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrIntOverflow + } + if iNdEx >= l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, runtime.ErrInvalidLength + } + if postIndex > l { + return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, io.ErrUnexpectedEOF + } + x.OptionFourCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: if wireType != 2 { return protoiface.UnmarshalOutput{NoUnkeyedLiterals: input.NoUnkeyedLiterals, Flags: input.Flags}, fmt.Errorf("proto: wrong wireType = %d for field SpamCount", wireType) } @@ -9385,15 +9641,34 @@ type TallyResult struct { unknownFields protoimpl.UnknownFields // yes_count is the number of yes votes on a proposal. + // + // Deprecated: Do not use. YesCount string `protobuf:"bytes,1,opt,name=yes_count,json=yesCount,proto3" json:"yes_count,omitempty"` // option 1 // abstain_count is the number of abstain votes on a proposal. + // + // Deprecated: Do not use. AbstainCount string `protobuf:"bytes,2,opt,name=abstain_count,json=abstainCount,proto3" json:"abstain_count,omitempty"` // option 2 // no_count is the number of no votes on a proposal. + // + // Deprecated: Do not use. NoCount string `protobuf:"bytes,3,opt,name=no_count,json=noCount,proto3" json:"no_count,omitempty"` // option 3 // no_with_veto_count is the number of no with veto votes on a proposal. + // + // Deprecated: Do not use. NoWithVetoCount string `protobuf:"bytes,4,opt,name=no_with_veto_count,json=noWithVetoCount,proto3" json:"no_with_veto_count,omitempty"` // option 4 + // option_one_count corresponds to the number of votes for option one (= yes_count for non multiple choice proposals). + OptionOneCount string `protobuf:"bytes,5,opt,name=option_one_count,json=optionOneCount,proto3" json:"option_one_count,omitempty"` + // option_two_count corresponds to the number of votes for option two (= abstain_count for non multiple choice + // proposals). + OptionTwoCount string `protobuf:"bytes,6,opt,name=option_two_count,json=optionTwoCount,proto3" json:"option_two_count,omitempty"` + // option_three_count corresponds to the number of votes for option three (= no_count for non multiple choice + // proposals). + OptionThreeCount string `protobuf:"bytes,7,opt,name=option_three_count,json=optionThreeCount,proto3" json:"option_three_count,omitempty"` + // option_four_count corresponds to the number of votes for option four (= no_with_veto_count for non multiple choice + // proposals). + OptionFourCount string `protobuf:"bytes,8,opt,name=option_four_count,json=optionFourCount,proto3" json:"option_four_count,omitempty"` // spam_count is the number of spam votes on a proposal. - SpamCount string `protobuf:"bytes,5,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` + SpamCount string `protobuf:"bytes,9,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` } func (x *TallyResult) Reset() { @@ -9416,6 +9691,7 @@ func (*TallyResult) Descriptor() ([]byte, []int) { return file_cosmos_gov_v1_gov_proto_rawDescGZIP(), []int{4} } +// Deprecated: Do not use. func (x *TallyResult) GetYesCount() string { if x != nil { return x.YesCount @@ -9423,6 +9699,7 @@ func (x *TallyResult) GetYesCount() string { return "" } +// Deprecated: Do not use. func (x *TallyResult) GetAbstainCount() string { if x != nil { return x.AbstainCount @@ -9430,6 +9707,7 @@ func (x *TallyResult) GetAbstainCount() string { return "" } +// Deprecated: Do not use. func (x *TallyResult) GetNoCount() string { if x != nil { return x.NoCount @@ -9437,6 +9715,7 @@ func (x *TallyResult) GetNoCount() string { return "" } +// Deprecated: Do not use. func (x *TallyResult) GetNoWithVetoCount() string { if x != nil { return x.NoWithVetoCount @@ -9444,6 +9723,34 @@ func (x *TallyResult) GetNoWithVetoCount() string { return "" } +func (x *TallyResult) GetOptionOneCount() string { + if x != nil { + return x.OptionOneCount + } + return "" +} + +func (x *TallyResult) GetOptionTwoCount() string { + if x != nil { + return x.OptionTwoCount + } + return "" +} + +func (x *TallyResult) GetOptionThreeCount() string { + if x != nil { + return x.OptionThreeCount + } + return "" +} + +func (x *TallyResult) GetOptionFourCount() string { + if x != nil { + return x.OptionFourCount + } + return "" +} + func (x *TallyResult) GetSpamCount() string { if x != nil { return x.SpamCount @@ -10087,216 +10394,231 @@ var file_cosmos_gov_v1_gov_proto_rawDesc = []byte{ 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x75, 0x72, 0x12, 0x1f, 0x0a, 0x0b, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x73, 0x70, 0x61, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x70, 0x61, 0x6d, 0x22, 0x86, 0x02, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, - 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2b, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x33, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, - 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x29, 0x0a, 0x08, 0x6e, 0x6f, 0x5f, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x12, 0x3b, 0x0a, 0x12, 0x6e, 0x6f, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, - 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, - 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, - 0x6f, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x74, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, - 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, - 0x6e, 0x74, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6d, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, - 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, - 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, - 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, - 0x64, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xdd, 0x01, 0x0a, 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, - 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x1d, 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, - 0x1f, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, - 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x12, 0x6d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, - 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, - 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x58, 0x0a, 0x0c, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, - 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, - 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, - 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, - 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x3a, 0x02, 0x18, 0x01, - 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, - 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, - 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, - 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, - 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, - 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x3a, 0x02, 0x18, - 0x01, 0x22, 0xc1, 0x0a, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, - 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, - 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, - 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, - 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, - 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, - 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, - 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, - 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, - 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, + 0x53, 0x70, 0x61, 0x6d, 0x22, 0xfc, 0x03, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, 0x52, 0x65, + 0x73, 0x75, 0x6c, 0x74, 0x12, 0x2d, 0x0a, 0x09, 0x79, 0x65, 0x73, 0x5f, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x08, 0x79, 0x65, 0x73, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x0d, 0x61, 0x62, 0x73, 0x74, 0x61, 0x69, 0x6e, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0c, 0x61, 0x62, + 0x73, 0x74, 0x61, 0x69, 0x6e, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2b, 0x0a, 0x08, 0x6e, 0x6f, + 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x07, + 0x6e, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3d, 0x0a, 0x12, 0x6e, 0x6f, 0x5f, 0x77, 0x69, + 0x74, 0x68, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x10, 0x18, 0x01, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6e, 0x6f, 0x57, 0x69, 0x74, 0x68, 0x56, 0x65, 0x74, + 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x38, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x6f, 0x6e, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, + 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x6e, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, + 0x12, 0x38, 0x0a, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x77, 0x6f, 0x5f, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x0e, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x54, 0x77, 0x6f, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3c, 0x0a, 0x12, 0x6f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x65, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x10, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x68, + 0x72, 0x65, 0x65, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x3a, 0x0a, 0x11, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x5f, 0x66, 0x6f, 0x75, 0x72, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, - 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, - 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, - 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, - 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x69, - 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, - 0x12, 0x42, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6e, - 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, - 0x13, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, - 0x61, 0x74, 0x69, 0x6f, 0x12, 0x4a, 0x0a, 0x14, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, - 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, - 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, - 0x12, 0x57, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x76, 0x6f, - 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, - 0x1f, 0x01, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, - 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x3f, 0x0a, 0x13, 0x65, 0x78, 0x70, - 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x12, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, - 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x58, 0x0a, 0x15, 0x65, 0x78, - 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, - 0x73, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, - 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, - 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, - 0x13, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x4d, 0x69, 0x6e, 0x44, 0x65, 0x70, - 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, - 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, - 0x0a, 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, - 0x73, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, - 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, - 0x65, 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, - 0x6f, 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x12, 0x3a, 0x0a, 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x64, - 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x10, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, - 0x65, 0x63, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, - 0x74, 0x69, 0x6f, 0x12, 0x4b, 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, - 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x78, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, - 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, - 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x17, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, - 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x61, 0x78, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, - 0x12, 0x60, 0x0a, 0x1f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x61, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, - 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, - 0x69, 0x6e, 0x67, 0x52, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x73, 0x74, 0x69, 0x63, 0x41, - 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x65, 0x73, 0x12, 0x52, 0x0a, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x73, 0x74, 0x69, 0x63, - 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, - 0x6f, 0x6c, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x1b, 0x6f, 0x70, 0x74, 0x69, 0x6d, - 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x54, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2d, 0x0a, 0x0a, 0x79, 0x65, 0x73, 0x5f, 0x71, 0x75, - 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, - 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x79, 0x65, 0x73, 0x51, - 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x22, 0x96, 0x02, 0x0a, 0x12, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, + 0x49, 0x6e, 0x74, 0x52, 0x0f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x46, 0x6f, 0x75, 0x72, 0x43, + 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x2d, 0x0a, 0x0a, 0x73, 0x70, 0x61, 0x6d, 0x5f, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x49, 0x6e, 0x74, 0x52, 0x09, 0x73, 0x70, 0x61, 0x6d, 0x43, 0x6f, + 0x75, 0x6e, 0x74, 0x22, 0xb6, 0x01, 0x0a, 0x04, 0x56, 0x6f, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, + 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0a, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x49, 0x64, 0x12, 0x2e, 0x0a, + 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, + 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6f, 0x74, 0x65, 0x72, 0x12, 0x3b, 0x0a, + 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, + 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x2e, 0x57, + 0x65, 0x69, 0x67, 0x68, 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x52, 0x07, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xdd, 0x01, 0x0a, + 0x0d, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x59, + 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x01, 0x20, + 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, + 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x1d, + 0xc8, 0xde, 0x1f, 0x00, 0xea, 0xde, 0x1f, 0x15, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, + 0x73, 0x69, 0x74, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, 0x74, 0x79, 0x52, 0x0a, 0x6d, + 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x6d, 0x0a, 0x12, 0x6d, 0x61, 0x78, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x24, 0xea, 0xde, 0x1f, 0x1c, 0x6d, 0x61, 0x78, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x2c, 0x6f, 0x6d, 0x69, 0x74, 0x65, 0x6d, 0x70, + 0x74, 0x79, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x58, 0x0a, 0x0c, + 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, - 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, - 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2d, 0x0a, 0x0a, 0x79, 0x65, - 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, - 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, - 0x79, 0x65, 0x73, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, - 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, - 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, - 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, - 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x6f, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0x9e, 0x01, 0x0a, 0x0b, 0x54, 0x61, 0x6c, 0x6c, 0x79, + 0x50, 0x61, 0x72, 0x61, 0x6d, 0x73, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, + 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, + 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, + 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, + 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x3a, 0x02, 0x18, 0x01, 0x22, 0xc1, 0x0a, 0x0a, 0x06, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x45, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, + 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x0a, 0x6d, + 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x4d, 0x0a, 0x12, 0x6d, 0x61, 0x78, + 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x44, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, + 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, + 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, + 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, + 0x6f, 0x6c, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, + 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, + 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x49, 0x0a, 0x19, 0x6d, + 0x69, 0x6e, 0x5f, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, + 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, + 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x16, + 0x6d, 0x69, 0x6e, 0x49, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, + 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x42, 0x0a, 0x15, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, + 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x18, + 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x13, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, + 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x4a, 0x0a, 0x14, 0x70, 0x72, + 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x64, 0x65, + 0x73, 0x74, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x42, 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x52, 0x12, 0x70, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, + 0x65, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x17, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, + 0x74, 0x65, 0x64, 0x5f, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, + 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, + 0x74, 0x65, 0x64, 0x56, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, + 0x3f, 0x0a, 0x13, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x74, 0x68, 0x72, + 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, + 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x12, 0x65, 0x78, + 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, + 0x12, 0x58, 0x0a, 0x15, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, 0x5f, 0x6d, 0x69, + 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x0b, 0x32, + 0x19, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x62, 0x61, 0x73, 0x65, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x6f, 0x69, 0x6e, 0x42, 0x09, 0xc8, 0xde, 0x1f, 0x00, + 0xa8, 0xe7, 0xb0, 0x2a, 0x01, 0x52, 0x13, 0x65, 0x78, 0x70, 0x65, 0x64, 0x69, 0x74, 0x65, 0x64, + 0x4d, 0x69, 0x6e, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x12, 0x28, 0x0a, 0x10, 0x62, 0x75, + 0x72, 0x6e, 0x5f, 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x0d, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x51, 0x75, + 0x6f, 0x72, 0x75, 0x6d, 0x12, 0x41, 0x0a, 0x1d, 0x62, 0x75, 0x72, 0x6e, 0x5f, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x70, 0x72, + 0x65, 0x76, 0x6f, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x62, 0x75, 0x72, + 0x6e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x44, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, + 0x50, 0x72, 0x65, 0x76, 0x6f, 0x74, 0x65, 0x12, 0x24, 0x0a, 0x0e, 0x62, 0x75, 0x72, 0x6e, 0x5f, + 0x76, 0x6f, 0x74, 0x65, 0x5f, 0x76, 0x65, 0x74, 0x6f, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x0c, 0x62, 0x75, 0x72, 0x6e, 0x56, 0x6f, 0x74, 0x65, 0x56, 0x65, 0x74, 0x6f, 0x12, 0x3a, 0x0a, + 0x11, 0x6d, 0x69, 0x6e, 0x5f, 0x64, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x5f, 0x72, 0x61, 0x74, + 0x69, 0x6f, 0x18, 0x10, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0f, 0x6d, 0x69, 0x6e, 0x44, 0x65, 0x70, + 0x6f, 0x73, 0x69, 0x74, 0x52, 0x61, 0x74, 0x69, 0x6f, 0x12, 0x4b, 0x0a, 0x1a, 0x70, 0x72, 0x6f, + 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x5f, 0x63, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x5f, 0x6d, 0x61, 0x78, + 0x5f, 0x70, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, + 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x17, 0x70, + 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x4d, 0x61, 0x78, + 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x60, 0x0a, 0x1f, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, + 0x73, 0x74, 0x69, 0x63, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x5f, + 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x09, 0x42, + 0x18, 0xd2, 0xb4, 0x2d, 0x14, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x41, 0x64, 0x64, 0x72, + 0x65, 0x73, 0x73, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x52, 0x1d, 0x6f, 0x70, 0x74, 0x69, 0x6d, + 0x69, 0x73, 0x74, 0x69, 0x63, 0x41, 0x75, 0x74, 0x68, 0x6f, 0x72, 0x69, 0x7a, 0x65, 0x64, 0x41, + 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x12, 0x52, 0x0a, 0x1d, 0x6f, 0x70, 0x74, 0x69, + 0x6d, 0x69, 0x73, 0x74, 0x69, 0x63, 0x5f, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x65, 0x64, 0x5f, + 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x13, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, - 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x2a, 0xa7, - 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, - 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, - 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, - 0x49, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, - 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, - 0x50, 0x54, 0x49, 0x4d, 0x49, 0x53, 0x54, 0x49, 0x43, 0x10, 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x50, - 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, - 0x45, 0x44, 0x49, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xfa, 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, - 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, - 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, - 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, - 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x59, 0x45, 0x53, 0x10, 0x01, 0x12, 0x13, - 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x57, - 0x4f, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, - 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, - 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x4f, 0x54, 0x45, 0x5f, - 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x55, 0x52, 0x10, 0x04, 0x12, 0x1c, 0x0a, - 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, - 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x56, - 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x53, 0x50, 0x41, 0x4d, 0x10, - 0x05, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xce, 0x01, 0x0a, 0x0e, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, - 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, - 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, - 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, - 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, - 0x4f, 0x53, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, - 0x1d, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, - 0x5f, 0x56, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, + 0x1b, 0x6f, 0x70, 0x74, 0x69, 0x6d, 0x69, 0x73, 0x74, 0x69, 0x63, 0x52, 0x65, 0x6a, 0x65, 0x63, + 0x74, 0x65, 0x64, 0x54, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x2d, 0x0a, 0x0a, + 0x79, 0x65, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x14, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, + 0x52, 0x09, 0x79, 0x65, 0x73, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x22, 0x96, 0x02, 0x0a, 0x12, + 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, 0x61, 0x73, 0x65, 0x64, 0x50, 0x61, 0x72, 0x61, + 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x76, 0x6f, 0x74, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x65, 0x72, + 0x69, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x44, 0x75, 0x72, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x04, 0x98, 0xdf, 0x1f, 0x01, 0x52, 0x0c, 0x76, 0x6f, 0x74, 0x69, + 0x6e, 0x67, 0x50, 0x65, 0x72, 0x69, 0x6f, 0x64, 0x12, 0x26, 0x0a, 0x06, 0x71, 0x75, 0x6f, 0x72, + 0x75, 0x6d, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, + 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x06, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, + 0x12, 0x2d, 0x0a, 0x0a, 0x79, 0x65, 0x73, 0x5f, 0x71, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x18, 0x14, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, + 0x2e, 0x44, 0x65, 0x63, 0x52, 0x09, 0x79, 0x65, 0x73, 0x51, 0x75, 0x6f, 0x72, 0x75, 0x6d, 0x12, + 0x2c, 0x0a, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x44, + 0x65, 0x63, 0x52, 0x09, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x12, 0x35, 0x0a, + 0x0e, 0x76, 0x65, 0x74, 0x6f, 0x5f, 0x74, 0x68, 0x72, 0x65, 0x73, 0x68, 0x6f, 0x6c, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x0e, 0xd2, 0xb4, 0x2d, 0x0a, 0x63, 0x6f, 0x73, 0x6d, 0x6f, + 0x73, 0x2e, 0x44, 0x65, 0x63, 0x52, 0x0d, 0x76, 0x65, 0x74, 0x6f, 0x54, 0x68, 0x72, 0x65, 0x73, + 0x68, 0x6f, 0x6c, 0x64, 0x2a, 0xa7, 0x01, 0x0a, 0x0c, 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, + 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1d, 0x0a, 0x19, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, + 0x4c, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, + 0x45, 0x44, 0x10, 0x00, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x4e, 0x44, 0x41, 0x52, 0x44, 0x10, 0x01, + 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, 0x50, + 0x45, 0x5f, 0x4d, 0x55, 0x4c, 0x54, 0x49, 0x50, 0x4c, 0x45, 0x5f, 0x43, 0x48, 0x4f, 0x49, 0x43, + 0x45, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4d, 0x49, 0x53, 0x54, 0x49, 0x43, 0x10, + 0x03, 0x12, 0x1b, 0x0a, 0x17, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x54, 0x59, + 0x50, 0x45, 0x5f, 0x45, 0x58, 0x50, 0x45, 0x44, 0x49, 0x54, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xfa, + 0x01, 0x0a, 0x0a, 0x56, 0x6f, 0x74, 0x65, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1b, 0x0a, + 0x17, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, + 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, + 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x59, + 0x45, 0x53, 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, + 0x49, 0x4f, 0x4e, 0x5f, 0x54, 0x57, 0x4f, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x56, 0x4f, 0x54, + 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x41, 0x42, 0x53, 0x54, 0x41, 0x49, 0x4e, + 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, + 0x4e, 0x5f, 0x54, 0x48, 0x52, 0x45, 0x45, 0x10, 0x03, 0x12, 0x12, 0x0a, 0x0e, 0x56, 0x4f, 0x54, + 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x10, 0x03, 0x12, 0x14, 0x0a, + 0x10, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x4f, 0x55, + 0x52, 0x10, 0x04, 0x12, 0x1c, 0x0a, 0x18, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, + 0x4f, 0x4e, 0x5f, 0x4e, 0x4f, 0x5f, 0x57, 0x49, 0x54, 0x48, 0x5f, 0x56, 0x45, 0x54, 0x4f, 0x10, + 0x04, 0x12, 0x14, 0x0a, 0x10, 0x56, 0x4f, 0x54, 0x45, 0x5f, 0x4f, 0x50, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x53, 0x50, 0x41, 0x4d, 0x10, 0x05, 0x1a, 0x02, 0x10, 0x01, 0x2a, 0xce, 0x01, 0x0a, 0x0e, + 0x50, 0x72, 0x6f, 0x70, 0x6f, 0x73, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1f, + 0x0a, 0x1b, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x22, 0x0a, 0x1e, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x44, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x5f, 0x50, 0x45, 0x52, 0x49, 0x4f, + 0x44, 0x10, 0x01, 0x12, 0x21, 0x0a, 0x1d, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x56, 0x4f, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x50, 0x45, + 0x52, 0x49, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, + 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, + 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, - 0x54, 0x55, 0x53, 0x5f, 0x50, 0x41, 0x53, 0x53, 0x45, 0x44, 0x10, 0x03, 0x12, 0x1c, 0x0a, 0x18, - 0x50, 0x52, 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, - 0x52, 0x45, 0x4a, 0x45, 0x43, 0x54, 0x45, 0x44, 0x10, 0x04, 0x12, 0x1a, 0x0a, 0x16, 0x50, 0x52, - 0x4f, 0x50, 0x4f, 0x53, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, - 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, - 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, - 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, - 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, - 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, - 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, - 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, - 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, - 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, - 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x55, 0x53, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x05, 0x42, 0x99, 0x01, 0x0a, + 0x11, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2e, 0x67, 0x6f, 0x76, 0x2e, + 0x76, 0x31, 0x42, 0x08, 0x47, 0x6f, 0x76, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x24, + 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x73, 0x64, 0x6b, 0x2e, 0x69, 0x6f, 0x2f, 0x61, 0x70, 0x69, + 0x2f, 0x63, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x2f, 0x67, 0x6f, 0x76, 0x2f, 0x76, 0x31, 0x3b, 0x67, + 0x6f, 0x76, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x43, 0x47, 0x58, 0xaa, 0x02, 0x0d, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x2e, 0x47, 0x6f, 0x76, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x0d, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x19, 0x43, 0x6f, 0x73, + 0x6d, 0x6f, 0x73, 0x5c, 0x47, 0x6f, 0x76, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x0f, 0x43, 0x6f, 0x73, 0x6d, 0x6f, 0x73, 0x3a, + 0x3a, 0x47, 0x6f, 0x76, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( diff --git a/proto/cosmos/gov/v1/gov.proto b/proto/cosmos/gov/v1/gov.proto index a282cf880f..3d9ff64f92 100644 --- a/proto/cosmos/gov/v1/gov.proto +++ b/proto/cosmos/gov/v1/gov.proto @@ -188,15 +188,26 @@ message ProposalVoteOptions { // TallyResult defines a standard tally for a governance proposal. message TallyResult { // yes_count is the number of yes votes on a proposal. - string yes_count = 1 [(cosmos_proto.scalar) = "cosmos.Int"]; // option 1 + string yes_count = 1 [(cosmos_proto.scalar) = "cosmos.Int", deprecated = true]; // option 1 // abstain_count is the number of abstain votes on a proposal. - string abstain_count = 2 [(cosmos_proto.scalar) = "cosmos.Int"]; // option 2 + string abstain_count = 2 [(cosmos_proto.scalar) = "cosmos.Int", deprecated = true]; // option 2 // no_count is the number of no votes on a proposal. - string no_count = 3 [(cosmos_proto.scalar) = "cosmos.Int"]; // option 3 + string no_count = 3 [(cosmos_proto.scalar) = "cosmos.Int", deprecated = true]; // option 3 // no_with_veto_count is the number of no with veto votes on a proposal. - string no_with_veto_count = 4 [(cosmos_proto.scalar) = "cosmos.Int"]; // option 4 + string no_with_veto_count = 4 [(cosmos_proto.scalar) = "cosmos.Int", deprecated = true]; // option 4 + // option_one_count corresponds to the number of votes for option one (= yes_count for non multiple choice proposals). + string option_one_count = 5 [(cosmos_proto.scalar) = "cosmos.Int"]; + // option_two_count corresponds to the number of votes for option two (= abstain_count for non multiple choice + // proposals). + string option_two_count = 6 [(cosmos_proto.scalar) = "cosmos.Int"]; + // option_three_count corresponds to the number of votes for option three (= no_count for non multiple choice + // proposals). + string option_three_count = 7 [(cosmos_proto.scalar) = "cosmos.Int"]; + // option_four_count corresponds to the number of votes for option four (= no_with_veto_count for non multiple choice + // proposals). + string option_four_count = 8 [(cosmos_proto.scalar) = "cosmos.Int"]; // spam_count is the number of spam votes on a proposal. - string spam_count = 5 [(cosmos_proto.scalar) = "cosmos.Int"]; + string spam_count = 9 [(cosmos_proto.scalar) = "cosmos.Int"]; } // Vote defines a vote on a governance proposal. diff --git a/x/gov/CHANGELOG.md b/x/gov/CHANGELOG.md index 379ab90437..9c4539ce1a 100644 --- a/x/gov/CHANGELOG.md +++ b/x/gov/CHANGELOG.md @@ -36,6 +36,7 @@ Ref: https://keepachangelog.com/en/1.0.0/ ### Improvements +* [#19352](https://github.com/cosmos/cosmos-sdk/pull/19352) `TallyResult` include vote options counts. Those counts replicates the now deprecated (but not removed) yes, no, abstain and veto count fields. * [#18976](https://github.com/cosmos/cosmos-sdk/pull/18976) Log and send an event when a proposal deposit refund or burn has failed. * [#18856](https://github.com/cosmos/cosmos-sdk/pull/18856) Add `ProposalCancelMaxPeriod` parameter for modifying how long a proposal can be cancelled after it has been submitted. * [#19167](https://github.com/cosmos/cosmos-sdk/pull/19167) Add `YesQuorum` parameter specifying a minimum of yes vote in the total proposal voting power for the proposal to pass. diff --git a/x/gov/README.md b/x/gov/README.md index 2fdea894a3..9b0085dc8b 100644 --- a/x/gov/README.md +++ b/x/gov/README.md @@ -35,32 +35,32 @@ can be adapted to any Proof-Of-Stake blockchain by replacing *ATOM* with the nat staking token of the chain. * [Concepts](#concepts) - * [Proposal submission](#proposal-submission) - * [Deposit](#deposit) - * [Vote](#vote) + * [Proposal submission](#proposal-submission) + * [Deposit](#deposit) + * [Vote](#vote) * [State](#state) - * [Proposals](#proposals) - * [Parameters and base types](#parameters-and-base-types) - * [Deposit](#deposit-1) - * [ValidatorGovInfo](#validatorgovinfo) - * [Stores](#stores) - * [Proposal Processing Queue](#proposal-processing-queue) - * [Legacy Proposal](#legacy-proposal) + * [Proposals](#proposals) + * [Parameters and base types](#parameters-and-base-types) + * [Deposit](#deposit-1) + * [ValidatorGovInfo](#validatorgovinfo) + * [Stores](#stores) + * [Proposal Processing Queue](#proposal-processing-queue) + * [Legacy Proposal](#legacy-proposal) * [Messages](#messages) - * [Proposal Submission](#proposal-submission-1) - * [Deposit](#deposit-2) - * [Vote](#vote-1) + * [Proposal Submission](#proposal-submission-1) + * [Deposit](#deposit-2) + * [Vote](#vote-1) * [Events](#events) - * [EndBlocker](#endblocker) - * [Handlers](#handlers) + * [EndBlocker](#endblocker) + * [Handlers](#handlers) * [Parameters](#parameters) * [Client](#client) - * [CLI](#cli) - * [gRPC](#grpc) - * [REST](#rest) + * [CLI](#cli) + * [gRPC](#grpc) + * [REST](#rest) * [Metadata](#metadata) - * [Proposal](#proposal-3) - * [Vote](#vote-5) + * [Proposal](#proposal-3) + * [Vote](#vote-5) * [Future Improvements](#future-improvements) ## Concepts @@ -287,12 +287,12 @@ There are three parameters that define if the deposit of a proposal should be bu Since this is more of a social feature than a technical feature, we'll now get into some items that may have been useful to have in a genesis constitution: * What limitations on governance exist, if any? - * is it okay for the community to slash the wallet of a whale that they no longer feel that they want around? (viz: Juno Proposal 4 and 16) - * can governance "socially slash" a validator who is using unapproved MEV? (viz: commonwealth.im/osmosis) - * In the event of an economic emergency, what should validators do? - * Terra crash of May, 2022, saw validators choose to run a new binary with code that had not been approved by governance, because the governance token had been inflated to nothing. + * is it okay for the community to slash the wallet of a whale that they no longer feel that they want around? (viz: Juno Proposal 4 and 16) + * can governance "socially slash" a validator who is using unapproved MEV? (viz: commonwealth.im/osmosis) + * In the event of an economic emergency, what should validators do? + * Terra crash of May, 2022, saw validators choose to run a new binary with code that had not been approved by governance, because the governance token had been inflated to nothing. * What is the purpose of the chain, specifically? - * best example of this is the Cosmos hub, where different founding groups, have different interpretations of the purpose of the network. + * best example of this is the Cosmos hub, where different founding groups, have different interpretations of the purpose of the network. This genesis entry, "constitution" hasn't been designed for existing chains, who should likely just ratify a constitution using their governance system. Instead, this is for new chains. It will allow for validators to have a much clearer idea of purpose and the expecations placed on them while operating their nodes. Likewise, for community members, the constitution will give them some idea of what to expect from both the "chain team" and the validators, respectively. @@ -497,7 +497,7 @@ The `initialDeposit` must be strictly positive and conform to the accepted denom * Initialise `Proposal`'s attributes * Decrease balance of sender by `InitialDeposit` * If `MinDeposit` is reached: - * Push `proposalID` in `ProposalProcessingQueue` + * Push `proposalID` in `ProposalProcessingQueue` * Transfer `InitialDeposit` from the `Proposer` to the governance `ModuleAccount` ### Deposit @@ -521,7 +521,7 @@ https://github.com/cosmos/cosmos-sdk/blob/v0.47.0-rc1/proto/cosmos/gov/v1/tx.pro * Add `deposit` of sender in `proposal.Deposits` * Increase `proposal.TotalDeposit` by sender's `deposit` * If `MinDeposit` is reached: - * Push `proposalID` in `ProposalProcessingQueueEnd` + * Push `proposalID` in `ProposalProcessingQueueEnd` * Transfer `Deposit` from the `proposer` to the governance `ModuleAccount` ### Vote @@ -1741,7 +1741,12 @@ Example Output: "yes": "1000000", "abstain": "0", "no": "0", - "noWithVeto": "0" + "noWithVeto": "0", + "option_one_count": "1000000", + "option_two_count": "0", + "option_three_count": "0", + "option_four_count": "0", + "spam_count": "0" } } ``` diff --git a/x/gov/keeper/grpc_query_test.go b/x/gov/keeper/grpc_query_test.go index 716254646a..9ecd4f0f44 100644 --- a/x/gov/keeper/grpc_query_test.go +++ b/x/gov/keeper/grpc_query_test.go @@ -1544,11 +1544,15 @@ func (suite *KeeperTestSuite) TestGRPCQueryTallyResult() { Id: 1, Status: v1.StatusPassed, FinalTallyResult: &v1.TallyResult{ - YesCount: "4", - AbstainCount: "1", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "4", + AbstainCount: "1", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "4", + OptionTwoCount: "1", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, SubmitTime: &propTime, VotingStartTime: &propTime, @@ -1561,11 +1565,15 @@ func (suite *KeeperTestSuite) TestGRPCQueryTallyResult() { req = &v1.QueryTallyResultRequest{ProposalId: proposal.Id} expTally = &v1.TallyResult{ - YesCount: "4", - AbstainCount: "1", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "4", + AbstainCount: "1", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "4", + OptionTwoCount: "1", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", } }, true, @@ -1588,11 +1596,15 @@ func (suite *KeeperTestSuite) TestGRPCQueryTallyResult() { req = &v1.QueryTallyResultRequest{ProposalId: proposal.Id} expTally = &v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", } }, true, @@ -1615,11 +1627,15 @@ func (suite *KeeperTestSuite) TestGRPCQueryTallyResult() { req = &v1.QueryTallyResultRequest{ProposalId: proposal.Id} expTally = &v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", } }, true, diff --git a/x/gov/keeper/tally_test.go b/x/gov/keeper/tally_test.go index 6665ea60a2..6d007f5b1d 100644 --- a/x/gov/keeper/tally_test.go +++ b/x/gov/keeper/tally_test.go @@ -71,11 +71,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -86,11 +90,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -102,11 +110,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -118,11 +130,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -139,11 +155,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -161,11 +181,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -183,11 +207,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "999958", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "999958", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "999958", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -219,11 +247,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000021", - AbstainCount: "1000000", - NoCount: "999979", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000021", + AbstainCount: "1000000", + NoCount: "999979", + NoWithVetoCount: "0", + OptionOneCount: "1000021", + OptionTwoCount: "1000000", + OptionThreeCount: "999979", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -238,11 +270,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "4000000", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "4000000", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "4000000", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -260,11 +296,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "4000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "3000000", - SpamCount: "0", + YesCount: "4000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "3000000", + OptionOneCount: "4000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "3000000", + SpamCount: "0", }, }, { @@ -279,11 +319,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "2000000", - AbstainCount: "0", - NoCount: "2000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "2000000", + AbstainCount: "0", + NoCount: "2000000", + NoWithVetoCount: "0", + OptionOneCount: "2000000", + OptionTwoCount: "0", + OptionThreeCount: "2000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -301,11 +345,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "4000000", - AbstainCount: "0", - NoCount: "2000000", - NoWithVetoCount: "1000000", - SpamCount: "0", + YesCount: "4000000", + AbstainCount: "0", + NoCount: "2000000", + NoWithVetoCount: "1000000", + OptionOneCount: "4000000", + OptionTwoCount: "0", + OptionThreeCount: "2000000", + OptionFourCount: "1000000", + SpamCount: "0", }, }, { @@ -322,11 +370,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "2000000", - AbstainCount: "3000000", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "2000000", + AbstainCount: "3000000", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "2000000", + OptionTwoCount: "3000000", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -345,11 +397,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "6000000", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "6000000", }, }, { @@ -370,11 +426,15 @@ func TestTally_Standard(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "3000000", - AbstainCount: "2000000", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "3000000", + AbstainCount: "2000000", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "3000000", + OptionTwoCount: "2000000", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, } @@ -457,11 +517,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -472,11 +536,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -488,11 +556,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -504,11 +576,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -525,11 +601,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -547,11 +627,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -569,11 +653,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "999958", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "999958", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "999958", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -605,11 +693,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000021", - AbstainCount: "1000000", - NoCount: "999979", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000021", + AbstainCount: "1000000", + NoCount: "999979", + NoWithVetoCount: "0", + OptionOneCount: "1000021", + OptionTwoCount: "1000000", + OptionThreeCount: "999979", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -624,11 +716,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "4000000", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "4000000", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "4000000", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -646,11 +742,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "4000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "3000000", - SpamCount: "0", + YesCount: "4000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "3000000", + OptionOneCount: "4000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "3000000", + SpamCount: "0", }, }, { @@ -665,11 +765,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "2000000", - AbstainCount: "0", - NoCount: "2000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "2000000", + AbstainCount: "0", + NoCount: "2000000", + NoWithVetoCount: "0", + OptionOneCount: "2000000", + OptionTwoCount: "0", + OptionThreeCount: "2000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -687,11 +791,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "4000000", - AbstainCount: "0", - NoCount: "2000000", - NoWithVetoCount: "1000000", - SpamCount: "0", + YesCount: "4000000", + AbstainCount: "0", + NoCount: "2000000", + NoWithVetoCount: "1000000", + OptionOneCount: "4000000", + OptionTwoCount: "0", + OptionThreeCount: "2000000", + OptionFourCount: "1000000", + SpamCount: "0", }, }, { @@ -709,11 +817,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "5000000", - AbstainCount: "0", - NoCount: "1000000", - NoWithVetoCount: "1000000", - SpamCount: "0", + YesCount: "5000000", + AbstainCount: "0", + NoCount: "1000000", + NoWithVetoCount: "1000000", + OptionOneCount: "5000000", + OptionTwoCount: "0", + OptionThreeCount: "1000000", + OptionFourCount: "1000000", + SpamCount: "0", }, }, { @@ -732,11 +844,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "6000000", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "6000000", }, }, { @@ -757,11 +873,15 @@ func TestTally_Expedited(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "3000000", - AbstainCount: "2000000", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "3000000", + AbstainCount: "2000000", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "3000000", + OptionTwoCount: "2000000", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, } @@ -844,11 +964,15 @@ func TestTally_Optimistic(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -859,11 +983,15 @@ func TestTally_Optimistic(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -880,11 +1008,15 @@ func TestTally_Optimistic(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "6000000", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "6000000", }, }, { @@ -901,11 +1033,15 @@ func TestTally_Optimistic(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "42", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "42", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "42", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -920,11 +1056,15 @@ func TestTally_Optimistic(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "4000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "4000000", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "4000000", + OptionFourCount: "0", + SpamCount: "0", }, }, } @@ -990,7 +1130,6 @@ func TestTally_Optimistic(t *testing.T) { } } -// TODO(@julienrbrt): refactor tally result to fit all proposal types func TestTally_MultipleChoice(t *testing.T) { tests := []struct { name string @@ -1008,11 +1147,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1023,11 +1166,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1039,11 +1186,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "1000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "1000000", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "1000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1055,11 +1206,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1076,11 +1231,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1098,11 +1257,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1120,11 +1283,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "42", - AbstainCount: "0", - NoCount: "999958", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "42", + AbstainCount: "0", + NoCount: "999958", + NoWithVetoCount: "0", + OptionOneCount: "42", + OptionTwoCount: "0", + OptionThreeCount: "999958", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1156,11 +1323,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, // burn because quorum not reached expectedTally: v1.TallyResult{ - YesCount: "1000021", - AbstainCount: "1000000", - NoCount: "999979", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "1000021", + AbstainCount: "1000000", + NoCount: "999979", + NoWithVetoCount: "0", + OptionOneCount: "1000021", + OptionTwoCount: "1000000", + OptionThreeCount: "999979", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1175,11 +1346,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "0", - AbstainCount: "4000000", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "0", + AbstainCount: "4000000", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "0", + OptionTwoCount: "4000000", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1197,11 +1372,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "4000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "3000000", - SpamCount: "0", + YesCount: "4000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "3000000", + OptionOneCount: "4000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "3000000", + SpamCount: "0", }, }, { @@ -1216,11 +1395,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: true, expectedBurn: false, expectedTally: v1.TallyResult{ - YesCount: "2000000", - AbstainCount: "0", - NoCount: "2000000", - NoWithVetoCount: "0", - SpamCount: "0", + YesCount: "2000000", + AbstainCount: "0", + NoCount: "2000000", + NoWithVetoCount: "0", + OptionOneCount: "2000000", + OptionTwoCount: "0", + OptionThreeCount: "2000000", + OptionFourCount: "0", + SpamCount: "0", }, }, { @@ -1239,11 +1422,15 @@ func TestTally_MultipleChoice(t *testing.T) { expectedPass: false, expectedBurn: true, expectedTally: v1.TallyResult{ - YesCount: "1000000", - AbstainCount: "0", - NoCount: "0", - NoWithVetoCount: "0", - SpamCount: "6000000", + YesCount: "1000000", + AbstainCount: "0", + NoCount: "0", + NoWithVetoCount: "0", + OptionOneCount: "1000000", + OptionTwoCount: "0", + OptionThreeCount: "0", + OptionFourCount: "0", + SpamCount: "6000000", }, }, } diff --git a/x/gov/types/v1/gov.pb.go b/x/gov/types/v1/gov.pb.go index 09c146234f..b9ee0a367e 100644 --- a/x/gov/types/v1/gov.pb.go +++ b/x/gov/types/v1/gov.pb.go @@ -589,15 +589,26 @@ func (m *ProposalVoteOptions) GetOptionSpam() string { // TallyResult defines a standard tally for a governance proposal. type TallyResult struct { // yes_count is the number of yes votes on a proposal. - YesCount string `protobuf:"bytes,1,opt,name=yes_count,json=yesCount,proto3" json:"yes_count,omitempty"` + YesCount string `protobuf:"bytes,1,opt,name=yes_count,json=yesCount,proto3" json:"yes_count,omitempty"` // Deprecated: Do not use. // abstain_count is the number of abstain votes on a proposal. - AbstainCount string `protobuf:"bytes,2,opt,name=abstain_count,json=abstainCount,proto3" json:"abstain_count,omitempty"` + AbstainCount string `protobuf:"bytes,2,opt,name=abstain_count,json=abstainCount,proto3" json:"abstain_count,omitempty"` // Deprecated: Do not use. // no_count is the number of no votes on a proposal. - NoCount string `protobuf:"bytes,3,opt,name=no_count,json=noCount,proto3" json:"no_count,omitempty"` + NoCount string `protobuf:"bytes,3,opt,name=no_count,json=noCount,proto3" json:"no_count,omitempty"` // Deprecated: Do not use. // no_with_veto_count is the number of no with veto votes on a proposal. - NoWithVetoCount string `protobuf:"bytes,4,opt,name=no_with_veto_count,json=noWithVetoCount,proto3" json:"no_with_veto_count,omitempty"` + NoWithVetoCount string `protobuf:"bytes,4,opt,name=no_with_veto_count,json=noWithVetoCount,proto3" json:"no_with_veto_count,omitempty"` // Deprecated: Do not use. + // option_one_count corresponds to the number of votes for option one (= yes_count for non multiple choice proposals). + OptionOneCount string `protobuf:"bytes,5,opt,name=option_one_count,json=optionOneCount,proto3" json:"option_one_count,omitempty"` + // option_two_count corresponds to the number of votes for option two (= abstain_count for non multiple choice + // proposals). + OptionTwoCount string `protobuf:"bytes,6,opt,name=option_two_count,json=optionTwoCount,proto3" json:"option_two_count,omitempty"` + // option_three_count corresponds to the number of votes for option three (= no_count for non multiple choice + // proposals). + OptionThreeCount string `protobuf:"bytes,7,opt,name=option_three_count,json=optionThreeCount,proto3" json:"option_three_count,omitempty"` + // option_four_count corresponds to the number of votes for option four (= no_with_veto_count for non multiple choice + // proposals). + OptionFourCount string `protobuf:"bytes,8,opt,name=option_four_count,json=optionFourCount,proto3" json:"option_four_count,omitempty"` // spam_count is the number of spam votes on a proposal. - SpamCount string `protobuf:"bytes,5,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` + SpamCount string `protobuf:"bytes,9,opt,name=spam_count,json=spamCount,proto3" json:"spam_count,omitempty"` } func (m *TallyResult) Reset() { *m = TallyResult{} } @@ -633,6 +644,7 @@ func (m *TallyResult) XXX_DiscardUnknown() { var xxx_messageInfo_TallyResult proto.InternalMessageInfo +// Deprecated: Do not use. func (m *TallyResult) GetYesCount() string { if m != nil { return m.YesCount @@ -640,6 +652,7 @@ func (m *TallyResult) GetYesCount() string { return "" } +// Deprecated: Do not use. func (m *TallyResult) GetAbstainCount() string { if m != nil { return m.AbstainCount @@ -647,6 +660,7 @@ func (m *TallyResult) GetAbstainCount() string { return "" } +// Deprecated: Do not use. func (m *TallyResult) GetNoCount() string { if m != nil { return m.NoCount @@ -654,6 +668,7 @@ func (m *TallyResult) GetNoCount() string { return "" } +// Deprecated: Do not use. func (m *TallyResult) GetNoWithVetoCount() string { if m != nil { return m.NoWithVetoCount @@ -661,6 +676,34 @@ func (m *TallyResult) GetNoWithVetoCount() string { return "" } +func (m *TallyResult) GetOptionOneCount() string { + if m != nil { + return m.OptionOneCount + } + return "" +} + +func (m *TallyResult) GetOptionTwoCount() string { + if m != nil { + return m.OptionTwoCount + } + return "" +} + +func (m *TallyResult) GetOptionThreeCount() string { + if m != nil { + return m.OptionThreeCount + } + return "" +} + +func (m *TallyResult) GetOptionFourCount() string { + if m != nil { + return m.OptionFourCount + } + return "" +} + func (m *TallyResult) GetSpamCount() string { if m != nil { return m.SpamCount @@ -1279,120 +1322,123 @@ func init() { func init() { proto.RegisterFile("cosmos/gov/v1/gov.proto", fileDescriptor_e05cb1c0d030febb) } var fileDescriptor_e05cb1c0d030febb = []byte{ - // 1797 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4f, 0x73, 0xe3, 0x48, - 0x15, 0x8f, 0x6c, 0xc7, 0xb1, 0x9f, 0xff, 0x44, 0xe9, 0x64, 0x36, 0x4a, 0xb2, 0x71, 0x32, 0x66, - 0x6b, 0x2b, 0x0c, 0x3b, 0x36, 0xd9, 0x65, 0x38, 0xec, 0x52, 0x05, 0x76, 0xac, 0x21, 0x1a, 0x92, - 0xd8, 0xc8, 0x9a, 0x64, 0x86, 0x8b, 0x50, 0xa2, 0x1e, 0x47, 0x60, 0xa9, 0x8d, 0xd4, 0x4e, 0x62, - 0x3e, 0x00, 0xe7, 0x3d, 0x51, 0x9c, 0x28, 0x6e, 0x70, 0xe4, 0xb0, 0x45, 0x71, 0xe5, 0xb6, 0xc5, - 0x81, 0xda, 0xda, 0x13, 0x17, 0x06, 0x6a, 0xe6, 0x40, 0xd5, 0x7e, 0x04, 0x4e, 0x54, 0xb7, 0x5a, - 0x96, 0xec, 0x78, 0x27, 0xc9, 0xd4, 0x5e, 0x12, 0xe9, 0xbd, 0xdf, 0xef, 0xf5, 0xeb, 0xf7, 0xaf, - 0x5b, 0x86, 0xd5, 0x33, 0x12, 0xb8, 0x24, 0xa8, 0xf7, 0xc8, 0x45, 0xfd, 0x62, 0x97, 0xfd, 0xab, - 0x0d, 0x7c, 0x42, 0x09, 0x2a, 0x85, 0x8a, 0x1a, 0x93, 0x5c, 0xec, 0xae, 0x57, 0x04, 0xee, 0xd4, - 0x0a, 0x70, 0xfd, 0x62, 0xf7, 0x14, 0x53, 0x6b, 0xb7, 0x7e, 0x46, 0x1c, 0x2f, 0x84, 0xaf, 0xaf, - 0xf4, 0x48, 0x8f, 0xf0, 0xc7, 0x3a, 0x7b, 0x12, 0xd2, 0xad, 0x1e, 0x21, 0xbd, 0x3e, 0xae, 0xf3, - 0xb7, 0xd3, 0xe1, 0x8b, 0x3a, 0x75, 0x5c, 0x1c, 0x50, 0xcb, 0x1d, 0x08, 0xc0, 0xda, 0x34, 0xc0, - 0xf2, 0x46, 0x42, 0x55, 0x99, 0x56, 0xd9, 0x43, 0xdf, 0xa2, 0x0e, 0x89, 0x56, 0x5c, 0x0b, 0x3d, - 0x32, 0xc3, 0x45, 0x85, 0xb7, 0xa1, 0x6a, 0xc9, 0x72, 0x1d, 0x8f, 0xd4, 0xf9, 0xdf, 0x50, 0x54, - 0x25, 0x80, 0x4e, 0xb0, 0xd3, 0x3b, 0xa7, 0xd8, 0x3e, 0x26, 0x14, 0xb7, 0x07, 0xcc, 0x12, 0xda, - 0x85, 0x2c, 0xe1, 0x4f, 0x8a, 0xb4, 0x2d, 0xed, 0x94, 0x3f, 0x5c, 0xab, 0x4d, 0xec, 0xba, 0x16, - 0x43, 0x75, 0x01, 0x44, 0xef, 0x43, 0xf6, 0x92, 0x1b, 0x52, 0x52, 0xdb, 0xd2, 0x4e, 0xbe, 0x59, - 0xfe, 0xf2, 0xb3, 0x87, 0x20, 0x58, 0x2d, 0x7c, 0xa6, 0x0b, 0x6d, 0xf5, 0x0f, 0x12, 0x2c, 0xb4, - 0xf0, 0x80, 0x04, 0x0e, 0x45, 0x5b, 0x50, 0x18, 0xf8, 0x64, 0x40, 0x02, 0xab, 0x6f, 0x3a, 0x36, - 0x5f, 0x2b, 0xa3, 0x43, 0x24, 0xd2, 0x6c, 0xf4, 0x7d, 0xc8, 0xdb, 0x21, 0x96, 0xf8, 0xc2, 0xae, - 0xf2, 0xe5, 0x67, 0x0f, 0x57, 0x84, 0xdd, 0x86, 0x6d, 0xfb, 0x38, 0x08, 0xba, 0xd4, 0x77, 0xbc, - 0x9e, 0x1e, 0x43, 0xd1, 0x0f, 0x20, 0x6b, 0xb9, 0x64, 0xe8, 0x51, 0x25, 0xbd, 0x9d, 0xde, 0x29, - 0xc4, 0xfe, 0xb3, 0x34, 0xd5, 0x44, 0x9a, 0x6a, 0x7b, 0xc4, 0xf1, 0x9a, 0xf9, 0xcf, 0x5f, 0x6e, - 0xcd, 0xfd, 0xe9, 0xbf, 0x7f, 0x7e, 0x20, 0xe9, 0x82, 0x53, 0xfd, 0x7b, 0x16, 0x72, 0x1d, 0xe1, - 0x04, 0x2a, 0x43, 0x6a, 0xec, 0x5a, 0xca, 0xb1, 0xd1, 0x77, 0x21, 0xe7, 0xe2, 0x20, 0xb0, 0x7a, - 0x38, 0x50, 0x52, 0xdc, 0xf8, 0x4a, 0x2d, 0xcc, 0x48, 0x2d, 0xca, 0x48, 0xad, 0xe1, 0x8d, 0xf4, - 0x31, 0x0a, 0x3d, 0x82, 0x6c, 0x40, 0x2d, 0x3a, 0x0c, 0x94, 0x34, 0x0f, 0xe6, 0xe6, 0x54, 0x30, - 0xa3, 0xa5, 0xba, 0x1c, 0xa4, 0x0b, 0x30, 0xda, 0x07, 0xf4, 0xc2, 0xf1, 0xac, 0xbe, 0x49, 0xad, - 0x7e, 0x7f, 0x64, 0xfa, 0x38, 0x18, 0xf6, 0xa9, 0x92, 0xd9, 0x96, 0x76, 0x0a, 0x1f, 0xae, 0x4f, - 0x99, 0x30, 0x18, 0x44, 0xe7, 0x08, 0x5d, 0xe6, 0xac, 0x84, 0x04, 0x35, 0xa0, 0x10, 0x0c, 0x4f, - 0x5d, 0x87, 0x9a, 0xac, 0xcc, 0x94, 0x79, 0x61, 0x62, 0xda, 0x6b, 0x23, 0xaa, 0xc1, 0x66, 0xe6, - 0xd3, 0x7f, 0x6f, 0x49, 0x3a, 0x84, 0x24, 0x26, 0x46, 0x4f, 0x40, 0x16, 0xd1, 0x35, 0xb1, 0x67, - 0x87, 0x76, 0xb2, 0xb7, 0xb4, 0x53, 0x16, 0x4c, 0xd5, 0xb3, 0xb9, 0x2d, 0x0d, 0x4a, 0x94, 0x50, - 0xab, 0x6f, 0x0a, 0xb9, 0xb2, 0x70, 0x87, 0x1c, 0x15, 0x39, 0x35, 0x2a, 0xa0, 0x03, 0x58, 0xba, - 0x20, 0xd4, 0xf1, 0x7a, 0x66, 0x40, 0x2d, 0x5f, 0xec, 0x2f, 0x77, 0x4b, 0xbf, 0x16, 0x43, 0x6a, - 0x97, 0x31, 0xb9, 0x63, 0xfb, 0x20, 0x44, 0xf1, 0x1e, 0xf3, 0xb7, 0xb4, 0x55, 0x0a, 0x89, 0xd1, - 0x16, 0xd7, 0x59, 0x91, 0x50, 0xcb, 0xb6, 0xa8, 0xa5, 0x00, 0x2b, 0x5b, 0x7d, 0xfc, 0x8e, 0x56, - 0x60, 0x9e, 0x3a, 0xb4, 0x8f, 0x95, 0x02, 0x57, 0x84, 0x2f, 0x48, 0x81, 0x85, 0x60, 0xe8, 0xba, - 0x96, 0x3f, 0x52, 0x8a, 0x5c, 0x1e, 0xbd, 0xa2, 0xef, 0x41, 0x2e, 0xec, 0x08, 0xec, 0x2b, 0xa5, - 0x1b, 0x5a, 0x60, 0x8c, 0x44, 0xdb, 0x90, 0xc7, 0x57, 0x03, 0x6c, 0x3b, 0x14, 0xdb, 0x4a, 0x79, - 0x5b, 0xda, 0xc9, 0x35, 0x53, 0x8a, 0xa4, 0xc7, 0x42, 0xf4, 0x2d, 0x28, 0xbd, 0xb0, 0x9c, 0x3e, - 0xb6, 0x4d, 0x1f, 0x5b, 0x01, 0xf1, 0x94, 0x45, 0xbe, 0x6e, 0x31, 0x14, 0xea, 0x5c, 0x86, 0x7e, - 0x04, 0xa5, 0x71, 0x87, 0xd2, 0xd1, 0x00, 0x2b, 0x32, 0x2f, 0xe1, 0x8d, 0xaf, 0x29, 0x61, 0x63, - 0x34, 0xc0, 0x7a, 0x71, 0x90, 0x78, 0xab, 0xfe, 0x55, 0x82, 0xe5, 0x48, 0x1d, 0x8f, 0x8d, 0x00, - 0x6d, 0x02, 0x84, 0x93, 0xc3, 0x24, 0x1e, 0xe6, 0xfd, 0x95, 0xd7, 0xf3, 0xa1, 0xa4, 0xed, 0xe1, - 0x84, 0x9a, 0x5e, 0x92, 0xb0, 0xf5, 0x23, 0xb5, 0x71, 0x49, 0xd0, 0x7d, 0x28, 0x46, 0xea, 0x73, - 0x1f, 0x63, 0xde, 0x59, 0x79, 0xbd, 0x20, 0x00, 0x4c, 0xc4, 0x86, 0x8b, 0x80, 0xbc, 0x20, 0x43, - 0x9f, 0x37, 0x4e, 0x5e, 0x17, 0x46, 0x1f, 0x93, 0xa1, 0x9f, 0x00, 0x04, 0x03, 0xcb, 0xe5, 0x6d, - 0x31, 0x06, 0x74, 0x07, 0x96, 0x5b, 0xfd, 0x4d, 0x0a, 0x0a, 0xc9, 0x3e, 0xfa, 0x0e, 0xe4, 0x47, - 0x38, 0x30, 0xcf, 0xf8, 0x60, 0x91, 0xae, 0x4d, 0x39, 0xcd, 0xa3, 0x7a, 0x6e, 0x84, 0x83, 0x3d, - 0xa6, 0x47, 0x1f, 0x41, 0xc9, 0x3a, 0x0d, 0xa8, 0xe5, 0x78, 0x82, 0x90, 0x9a, 0x49, 0x28, 0x0a, - 0x50, 0x48, 0xfa, 0x36, 0xe4, 0x3c, 0x22, 0xf0, 0xe9, 0x99, 0xf8, 0x05, 0x8f, 0x84, 0xd0, 0x4f, - 0x00, 0x79, 0xc4, 0xbc, 0x74, 0xe8, 0xb9, 0x79, 0x81, 0x69, 0x44, 0xca, 0xcc, 0x24, 0x2d, 0x7a, - 0xe4, 0xc4, 0xa1, 0xe7, 0xc7, 0x98, 0x0a, 0xf2, 0x43, 0x00, 0xb6, 0x67, 0x41, 0x9a, 0x9f, 0x49, - 0xca, 0x33, 0x04, 0x87, 0x57, 0xff, 0x22, 0x41, 0x86, 0xe5, 0xee, 0xe6, 0x81, 0x5d, 0x83, 0xf9, - 0x0b, 0x42, 0xf1, 0xcd, 0xc3, 0x3a, 0x84, 0xa1, 0x4f, 0x60, 0x21, 0x0c, 0x78, 0xa0, 0x64, 0xf8, - 0x14, 0xb8, 0x3f, 0x55, 0x59, 0xd7, 0x0f, 0x27, 0x3d, 0x62, 0x4c, 0x74, 0xd9, 0xfc, 0x64, 0x97, - 0x3d, 0xc9, 0xe4, 0xd2, 0x72, 0xa6, 0xfa, 0x2f, 0x09, 0x4a, 0x62, 0x56, 0x74, 0x2c, 0xdf, 0x72, - 0x03, 0xf4, 0x1c, 0x0a, 0xae, 0xe3, 0x8d, 0x47, 0x8f, 0x74, 0xd3, 0xe8, 0xd9, 0x64, 0xa3, 0xe7, - 0xab, 0x97, 0x5b, 0xf7, 0x12, 0xac, 0x0f, 0x88, 0xeb, 0x50, 0xec, 0x0e, 0xe8, 0x48, 0x07, 0xd7, - 0xf1, 0xa2, 0x61, 0xe4, 0x02, 0x72, 0xad, 0xab, 0x08, 0x64, 0x0e, 0xb0, 0xef, 0x10, 0x9b, 0x07, - 0x82, 0xad, 0x30, 0x3d, 0x41, 0x5a, 0xe2, 0xd4, 0x6e, 0xbe, 0xf7, 0xd5, 0xcb, 0xad, 0x77, 0xaf, - 0x13, 0xe3, 0x45, 0x7e, 0xc7, 0x06, 0x8c, 0xec, 0x5a, 0x57, 0xd1, 0x4e, 0xb8, 0xfe, 0xe3, 0x94, - 0x22, 0x55, 0x9f, 0x41, 0xf1, 0x98, 0x0f, 0x1e, 0xb1, 0xbb, 0x16, 0x88, 0x41, 0x14, 0xad, 0x2e, - 0xdd, 0xb4, 0x7a, 0x86, 0x5b, 0x2f, 0x86, 0xac, 0x84, 0xe5, 0xdf, 0x4b, 0xa2, 0xf6, 0x85, 0xe5, - 0xf7, 0x21, 0xfb, 0xab, 0x21, 0xf1, 0x87, 0xee, 0x8c, 0xc2, 0xe7, 0xc7, 0x7b, 0xa8, 0x45, 0x1f, - 0x40, 0x9e, 0x75, 0x64, 0x70, 0x4e, 0xfa, 0xf6, 0xd7, 0xdc, 0x04, 0x62, 0x00, 0x7a, 0x04, 0x65, - 0x5e, 0xbc, 0x31, 0x25, 0x3d, 0x93, 0x52, 0x62, 0x28, 0x23, 0x02, 0x71, 0x07, 0xff, 0x06, 0x90, - 0x15, 0xbe, 0xa9, 0x77, 0xcc, 0x69, 0xe2, 0x38, 0x49, 0xe6, 0xef, 0xf0, 0xed, 0xf2, 0x97, 0x99, - 0x9d, 0x9f, 0xeb, 0xb9, 0x48, 0xbf, 0x45, 0x2e, 0x12, 0x71, 0xcf, 0xdc, 0x3e, 0xee, 0xf3, 0x77, - 0x8f, 0x7b, 0xf6, 0x16, 0x71, 0x47, 0x1a, 0xac, 0xb1, 0x40, 0x3b, 0x9e, 0x43, 0x9d, 0xf8, 0xfc, - 0x36, 0xb9, 0xfb, 0xca, 0xc2, 0x4c, 0x0b, 0xef, 0xb8, 0x8e, 0xa7, 0x85, 0x78, 0x11, 0x1e, 0x9d, - 0xa1, 0x51, 0x13, 0xee, 0x8d, 0x27, 0xc9, 0x99, 0xe5, 0x9d, 0xe1, 0xbe, 0x30, 0x93, 0x9b, 0x69, - 0x66, 0x39, 0x02, 0xef, 0x71, 0x6c, 0x68, 0xe3, 0x09, 0xac, 0x4c, 0xdb, 0xb0, 0x71, 0x40, 0xf9, - 0xa1, 0xfd, 0xa6, 0xd9, 0x83, 0x26, 0x8d, 0xb5, 0x70, 0x40, 0xd1, 0x09, 0xac, 0x8e, 0x8f, 0x46, - 0x73, 0x32, 0x6f, 0x70, 0xbb, 0xbc, 0xdd, 0x1b, 0xf3, 0x8f, 0x93, 0x09, 0xfc, 0x21, 0x2c, 0xc7, - 0x86, 0xe3, 0x78, 0x17, 0x66, 0x6e, 0x13, 0x8d, 0xa1, 0x71, 0xd0, 0x9f, 0x41, 0x6c, 0xd9, 0x4c, - 0xd6, 0x79, 0xf1, 0x0e, 0x75, 0x1e, 0xfb, 0x70, 0x18, 0x17, 0xfc, 0x0e, 0xc8, 0xa7, 0x43, 0xdf, - 0x63, 0xdb, 0xc5, 0xa6, 0xa8, 0x32, 0x76, 0xc3, 0xc8, 0xe9, 0x65, 0x26, 0x67, 0x23, 0xf7, 0xa7, - 0x61, 0x75, 0x35, 0x60, 0x93, 0x23, 0xc7, 0xe1, 0x1e, 0x37, 0x89, 0x8f, 0x19, 0x3b, 0xbc, 0x61, - 0xe8, 0xeb, 0x0c, 0x14, 0x1d, 0xf6, 0x51, 0x37, 0x84, 0x08, 0xf4, 0x1e, 0x94, 0xe3, 0xc5, 0x58, - 0x59, 0xf1, 0xfb, 0x46, 0x4e, 0x2f, 0x46, 0x4b, 0xb1, 0xd3, 0x09, 0x7d, 0x0c, 0x4b, 0x89, 0x2d, - 0x8a, 0x92, 0x90, 0x67, 0xc6, 0x6a, 0x31, 0x6e, 0xdd, 0xb0, 0x1c, 0x7e, 0x02, 0xeb, 0xd3, 0xe5, - 0xc0, 0xfa, 0x59, 0x64, 0x71, 0x69, 0xa6, 0x91, 0xd5, 0xc9, 0x52, 0x38, 0xb4, 0xae, 0x44, 0xda, - 0x7e, 0x0e, 0x5b, 0xec, 0x98, 0x71, 0x9d, 0x80, 0x3a, 0x67, 0xa6, 0x35, 0xa4, 0xe7, 0xc4, 0x77, - 0x7e, 0x8d, 0x6d, 0xd3, 0x0a, 0x4b, 0x09, 0x07, 0x0a, 0xda, 0x4e, 0xbf, 0xb1, 0xcc, 0x36, 0x63, - 0x03, 0x8d, 0x31, 0xbf, 0x11, 0xd1, 0x91, 0x0e, 0x09, 0x80, 0xe9, 0xe3, 0x5f, 0xe0, 0xb3, 0xc9, - 0x12, 0x59, 0x9e, 0xe9, 0xf1, 0x46, 0x4c, 0xd2, 0x05, 0x27, 0xae, 0x95, 0x87, 0x00, 0xec, 0x86, - 0x22, 0x72, 0xb9, 0x32, 0x7b, 0x0c, 0x8c, 0x70, 0x10, 0xa6, 0xb5, 0xfa, 0xdb, 0x14, 0xa0, 0xc3, - 0xf0, 0x33, 0xa5, 0x69, 0x05, 0xd8, 0xfe, 0x26, 0x4f, 0x91, 0xc4, 0xe4, 0x4a, 0xbd, 0x71, 0x72, - 0xdd, 0xcd, 0xe7, 0xc9, 0x41, 0x97, 0xbe, 0xfb, 0xa0, 0xcb, 0xdc, 0x62, 0xd0, 0x3d, 0xf8, 0xa3, - 0x04, 0xc5, 0xe4, 0x9d, 0x16, 0x6d, 0xc2, 0x5a, 0x47, 0x6f, 0x77, 0xda, 0xdd, 0xc6, 0x81, 0x69, - 0x3c, 0xef, 0xa8, 0xe6, 0xd3, 0xa3, 0x6e, 0x47, 0xdd, 0xd3, 0x1e, 0x6b, 0x6a, 0x4b, 0x9e, 0x43, - 0xeb, 0xf0, 0xce, 0xa4, 0xba, 0x6b, 0x34, 0x8e, 0x5a, 0x0d, 0xbd, 0x25, 0x4b, 0xe8, 0x3e, 0x6c, - 0x4e, 0xea, 0x0e, 0x9f, 0x1e, 0x18, 0x5a, 0xe7, 0x40, 0x35, 0xf7, 0xf6, 0xdb, 0xda, 0x9e, 0x2a, - 0xa7, 0xd0, 0xbb, 0xa0, 0x4c, 0x42, 0xda, 0x1d, 0x43, 0x3b, 0xd4, 0xba, 0x86, 0xb6, 0x27, 0xa7, - 0xd1, 0x06, 0xac, 0x4e, 0x6a, 0xd5, 0x67, 0x1d, 0xb5, 0xa5, 0x19, 0x6a, 0x4b, 0xce, 0x3c, 0xf8, - 0x9f, 0x04, 0x90, 0xf8, 0x70, 0xdf, 0x80, 0xd5, 0xe3, 0xb6, 0x11, 0x1a, 0x68, 0x1f, 0x4d, 0x79, - 0xb9, 0x0c, 0x8b, 0x49, 0x65, 0xfb, 0x48, 0x95, 0xa5, 0x69, 0xe1, 0x73, 0xb5, 0x7b, 0x5d, 0x68, - 0x9c, 0xb4, 0xe5, 0x14, 0x5a, 0x85, 0xe5, 0xa4, 0xb0, 0xd1, 0xec, 0x1a, 0x0d, 0xed, 0x48, 0x4e, - 0xa1, 0x7b, 0xb0, 0x34, 0x81, 0xde, 0xd7, 0x55, 0x55, 0x4e, 0x23, 0x04, 0xe5, 0xa4, 0xf8, 0xa8, - 0x2d, 0xa7, 0xd1, 0x0a, 0xc8, 0x49, 0xd9, 0xe3, 0xf6, 0x53, 0x5d, 0xce, 0xb0, 0xfd, 0x4f, 0x22, - 0xcd, 0x13, 0xcd, 0xd8, 0x37, 0x8f, 0x55, 0xa3, 0x2d, 0x67, 0xa6, 0x39, 0xdd, 0x4e, 0xe3, 0x50, - 0x9e, 0x5f, 0x4f, 0xc9, 0xd2, 0x83, 0x7f, 0x48, 0x50, 0x9e, 0xfc, 0x7a, 0x46, 0x5b, 0xb0, 0x31, - 0x0e, 0x56, 0xd7, 0x68, 0x18, 0x4f, 0xbb, 0x53, 0x41, 0xa8, 0x42, 0x65, 0x1a, 0xd0, 0x52, 0x3b, - 0xed, 0xae, 0x66, 0x98, 0x1d, 0x55, 0xd7, 0xda, 0xd3, 0x29, 0x13, 0x98, 0xe3, 0xb6, 0xa1, 0x1d, - 0xfd, 0x38, 0x82, 0xa4, 0x26, 0x32, 0x2e, 0x20, 0x9d, 0x46, 0xb7, 0xab, 0xb6, 0xe4, 0xf4, 0x44, - 0x3a, 0x85, 0x4e, 0x57, 0x9f, 0xa8, 0x7b, 0x3c, 0x63, 0xb3, 0x98, 0x8f, 0x1b, 0xda, 0x81, 0xda, - 0x92, 0xe7, 0x9b, 0x8f, 0x3e, 0x7f, 0x55, 0x91, 0xbe, 0x78, 0x55, 0x91, 0xfe, 0xf3, 0xaa, 0x22, - 0x7d, 0xfa, 0xba, 0x32, 0xf7, 0xc5, 0xeb, 0xca, 0xdc, 0x3f, 0x5f, 0x57, 0xe6, 0x7e, 0xb6, 0x11, - 0x16, 0x6b, 0x60, 0xff, 0xb2, 0xe6, 0x90, 0xfa, 0x15, 0xff, 0x5d, 0x8a, 0x7d, 0x90, 0x05, 0xf5, - 0x8b, 0xdd, 0xd3, 0x2c, 0xef, 0xc8, 0x8f, 0xfe, 0x1f, 0x00, 0x00, 0xff, 0xff, 0x50, 0x17, 0xf1, - 0xc9, 0xb5, 0x12, 0x00, 0x00, + // 1856 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0xcd, 0x73, 0xe3, 0x48, + 0x15, 0x1f, 0xd9, 0x8e, 0x63, 0xbf, 0x38, 0x8e, 0xa6, 0x93, 0xd9, 0x28, 0xc9, 0xe6, 0x63, 0xcc, + 0xd6, 0x56, 0x6a, 0xd8, 0xd8, 0x64, 0x61, 0x28, 0x6a, 0x59, 0x0a, 0xec, 0x58, 0x43, 0x34, 0x24, + 0xb1, 0x91, 0x35, 0xc9, 0x0c, 0x17, 0xa1, 0x44, 0x3d, 0x89, 0xc0, 0x52, 0x1b, 0xa9, 0x9d, 0xc4, + 0xfc, 0x15, 0x7b, 0xa2, 0x38, 0x51, 0xdc, 0xe0, 0xc8, 0x61, 0x8b, 0xe2, 0xca, 0x6d, 0x8b, 0x03, + 0xb5, 0xb5, 0x27, 0x2e, 0x0c, 0xd4, 0xcc, 0x81, 0xaa, 0xfd, 0x13, 0x28, 0x0e, 0x54, 0x7f, 0xc8, + 0x92, 0x1d, 0x67, 0x92, 0x6c, 0xed, 0x25, 0x91, 0xde, 0xfb, 0xfd, 0x5e, 0xbf, 0x7e, 0x5f, 0xdd, + 0x16, 0x2c, 0x9e, 0x90, 0xc8, 0x27, 0x51, 0xed, 0x94, 0x9c, 0xd7, 0xce, 0xb7, 0xd9, 0xbf, 0x6a, + 0x2f, 0x24, 0x94, 0xa0, 0x59, 0xa1, 0xa8, 0x32, 0xc9, 0xf9, 0xf6, 0xf2, 0x9a, 0xc4, 0x1d, 0x3b, + 0x11, 0xae, 0x9d, 0x6f, 0x1f, 0x63, 0xea, 0x6c, 0xd7, 0x4e, 0x88, 0x17, 0x08, 0xf8, 0xf2, 0xc2, + 0x29, 0x39, 0x25, 0xfc, 0xb1, 0xc6, 0x9e, 0xa4, 0x74, 0xfd, 0x94, 0x90, 0xd3, 0x2e, 0xae, 0xf1, + 0xb7, 0xe3, 0xfe, 0xcb, 0x1a, 0xf5, 0x7c, 0x1c, 0x51, 0xc7, 0xef, 0x49, 0xc0, 0xd2, 0x38, 0xc0, + 0x09, 0x06, 0x52, 0xb5, 0x36, 0xae, 0x72, 0xfb, 0xa1, 0x43, 0x3d, 0x12, 0xaf, 0xb8, 0x24, 0x3c, + 0xb2, 0xc5, 0xa2, 0xd2, 0x5b, 0xa1, 0xba, 0xef, 0xf8, 0x5e, 0x40, 0x6a, 0xfc, 0xaf, 0x10, 0x55, + 0x08, 0xa0, 0x23, 0xec, 0x9d, 0x9e, 0x51, 0xec, 0x1e, 0x12, 0x8a, 0x5b, 0x3d, 0x66, 0x09, 0x6d, + 0x43, 0x9e, 0xf0, 0x27, 0x4d, 0xd9, 0x50, 0x36, 0xcb, 0x1f, 0x2e, 0x55, 0x47, 0x76, 0x5d, 0x4d, + 0xa0, 0xa6, 0x04, 0xa2, 0xf7, 0x21, 0x7f, 0xc1, 0x0d, 0x69, 0x99, 0x0d, 0x65, 0xb3, 0xd8, 0x28, + 0x7f, 0xf1, 0xe9, 0x16, 0x48, 0x56, 0x13, 0x9f, 0x98, 0x52, 0x5b, 0xf9, 0xbd, 0x02, 0xd3, 0x4d, + 0xdc, 0x23, 0x91, 0x47, 0xd1, 0x3a, 0xcc, 0xf4, 0x42, 0xd2, 0x23, 0x91, 0xd3, 0xb5, 0x3d, 0x97, + 0xaf, 0x95, 0x33, 0x21, 0x16, 0x19, 0x2e, 0xfa, 0x2e, 0x14, 0x5d, 0x81, 0x25, 0xa1, 0xb4, 0xab, + 0x7d, 0xf1, 0xe9, 0xd6, 0x82, 0xb4, 0x5b, 0x77, 0xdd, 0x10, 0x47, 0x51, 0x87, 0x86, 0x5e, 0x70, + 0x6a, 0x26, 0x50, 0xf4, 0x31, 0xe4, 0x1d, 0x9f, 0xf4, 0x03, 0xaa, 0x65, 0x37, 0xb2, 0x9b, 0x33, + 0x89, 0xff, 0x2c, 0x4d, 0x55, 0x99, 0xa6, 0xea, 0x0e, 0xf1, 0x82, 0x46, 0xf1, 0xb3, 0x57, 0xeb, + 0xf7, 0xfe, 0xf8, 0x9f, 0x3f, 0x3d, 0x52, 0x4c, 0xc9, 0xa9, 0xfc, 0x2d, 0x0f, 0x85, 0xb6, 0x74, + 0x02, 0x95, 0x21, 0x33, 0x74, 0x2d, 0xe3, 0xb9, 0xe8, 0x5b, 0x50, 0xf0, 0x71, 0x14, 0x39, 0xa7, + 0x38, 0xd2, 0x32, 0xdc, 0xf8, 0x42, 0x55, 0x64, 0xa4, 0x1a, 0x67, 0xa4, 0x5a, 0x0f, 0x06, 0xe6, + 0x10, 0x85, 0x1e, 0x43, 0x3e, 0xa2, 0x0e, 0xed, 0x47, 0x5a, 0x96, 0x07, 0x73, 0x75, 0x2c, 0x98, + 0xf1, 0x52, 0x1d, 0x0e, 0x32, 0x25, 0x18, 0xed, 0x02, 0x7a, 0xe9, 0x05, 0x4e, 0xd7, 0xa6, 0x4e, + 0xb7, 0x3b, 0xb0, 0x43, 0x1c, 0xf5, 0xbb, 0x54, 0xcb, 0x6d, 0x28, 0x9b, 0x33, 0x1f, 0x2e, 0x8f, + 0x99, 0xb0, 0x18, 0xc4, 0xe4, 0x08, 0x53, 0xe5, 0xac, 0x94, 0x04, 0xd5, 0x61, 0x26, 0xea, 0x1f, + 0xfb, 0x1e, 0xb5, 0x59, 0x99, 0x69, 0x53, 0xd2, 0xc4, 0xb8, 0xd7, 0x56, 0x5c, 0x83, 0x8d, 0xdc, + 0x27, 0xff, 0x5a, 0x57, 0x4c, 0x10, 0x24, 0x26, 0x46, 0x4f, 0x41, 0x95, 0xd1, 0xb5, 0x71, 0xe0, + 0x0a, 0x3b, 0xf9, 0x5b, 0xda, 0x29, 0x4b, 0xa6, 0x1e, 0xb8, 0xdc, 0x96, 0x01, 0xb3, 0x94, 0x50, + 0xa7, 0x6b, 0x4b, 0xb9, 0x36, 0x7d, 0x87, 0x1c, 0x95, 0x38, 0x35, 0x2e, 0xa0, 0x3d, 0xb8, 0x7f, + 0x4e, 0xa8, 0x17, 0x9c, 0xda, 0x11, 0x75, 0x42, 0xb9, 0xbf, 0xc2, 0x2d, 0xfd, 0x9a, 0x13, 0xd4, + 0x0e, 0x63, 0x72, 0xc7, 0x76, 0x41, 0x8a, 0x92, 0x3d, 0x16, 0x6f, 0x69, 0x6b, 0x56, 0x10, 0xe3, + 0x2d, 0x2e, 0xb3, 0x22, 0xa1, 0x8e, 0xeb, 0x50, 0x47, 0x03, 0x56, 0xb6, 0xe6, 0xf0, 0x1d, 0x2d, + 0xc0, 0x14, 0xf5, 0x68, 0x17, 0x6b, 0x33, 0x5c, 0x21, 0x5e, 0x90, 0x06, 0xd3, 0x51, 0xdf, 0xf7, + 0x9d, 0x70, 0xa0, 0x95, 0xb8, 0x3c, 0x7e, 0x45, 0xdf, 0x81, 0x82, 0xe8, 0x08, 0x1c, 0x6a, 0xb3, + 0x37, 0xb4, 0xc0, 0x10, 0x89, 0x36, 0xa0, 0x88, 0x2f, 0x7b, 0xd8, 0xf5, 0x28, 0x76, 0xb5, 0xf2, + 0x86, 0xb2, 0x59, 0x68, 0x64, 0x34, 0xc5, 0x4c, 0x84, 0xe8, 0x1b, 0x30, 0xfb, 0xd2, 0xf1, 0xba, + 0xd8, 0xb5, 0x43, 0xec, 0x44, 0x24, 0xd0, 0xe6, 0xf8, 0xba, 0x25, 0x21, 0x34, 0xb9, 0x0c, 0xfd, + 0x08, 0x66, 0x87, 0x1d, 0x4a, 0x07, 0x3d, 0xac, 0xa9, 0xbc, 0x84, 0x57, 0xae, 0x29, 0x61, 0x6b, + 0xd0, 0xc3, 0x66, 0xa9, 0x97, 0x7a, 0xab, 0xfc, 0x45, 0x81, 0xf9, 0x58, 0x9d, 0x8c, 0x8d, 0x08, + 0xad, 0x02, 0x88, 0xc9, 0x61, 0x93, 0x00, 0xf3, 0xfe, 0x2a, 0x9a, 0x45, 0x21, 0x69, 0x05, 0x38, + 0xa5, 0xa6, 0x17, 0x44, 0xb4, 0x7e, 0xac, 0xb6, 0x2e, 0x08, 0x7a, 0x08, 0xa5, 0x58, 0x7d, 0x16, + 0x62, 0xcc, 0x3b, 0xab, 0x68, 0xce, 0x48, 0x00, 0x13, 0xb1, 0xe1, 0x22, 0x21, 0x2f, 0x49, 0x3f, + 0xe4, 0x8d, 0x53, 0x34, 0xa5, 0xd1, 0x27, 0xa4, 0x1f, 0xa6, 0x00, 0x51, 0xcf, 0xf1, 0x79, 0x5b, + 0x0c, 0x01, 0x9d, 0x9e, 0xe3, 0x57, 0xfe, 0x97, 0x85, 0x99, 0x74, 0x1f, 0x6d, 0x41, 0x71, 0x80, + 0x23, 0xfb, 0x84, 0x0f, 0x16, 0xee, 0x71, 0x43, 0x4d, 0x4d, 0x39, 0x83, 0x49, 0xcd, 0xc2, 0x00, + 0x47, 0x3b, 0x0c, 0x81, 0x1e, 0xc3, 0xac, 0x73, 0x1c, 0x51, 0xc7, 0x0b, 0x24, 0x25, 0x73, 0x0d, + 0xa5, 0x24, 0x61, 0x82, 0xf6, 0x4d, 0x28, 0x04, 0x44, 0x32, 0xb2, 0xd7, 0x30, 0xa6, 0x03, 0x22, + 0xc0, 0x3f, 0x00, 0x14, 0x10, 0xfb, 0xc2, 0xa3, 0x67, 0xf6, 0x39, 0xa6, 0x31, 0x2d, 0x77, 0x0d, + 0x6d, 0x2e, 0x20, 0x47, 0x1e, 0x3d, 0x3b, 0xc4, 0x54, 0xd2, 0xbf, 0x07, 0x6a, 0x92, 0x04, 0x49, + 0x9e, 0xba, 0x32, 0xbe, 0x8d, 0x80, 0x9a, 0xe5, 0x61, 0x6a, 0xc6, 0x99, 0xf4, 0x22, 0x5e, 0x36, + 0xff, 0x36, 0xa6, 0x75, 0x21, 0xd7, 0xfc, 0x18, 0x50, 0x3a, 0x75, 0x92, 0x3b, 0x3d, 0x91, 0xab, + 0xa6, 0x12, 0x2a, 0xd8, 0x1f, 0xc1, 0xfd, 0x54, 0x56, 0x25, 0xb9, 0x30, 0x91, 0x3c, 0x97, 0xe4, + 0x5a, 0x70, 0xb7, 0x00, 0x58, 0xa6, 0x25, 0xa9, 0x38, 0x91, 0x54, 0x64, 0x08, 0x0e, 0xaf, 0xfc, + 0x59, 0x81, 0x1c, 0xab, 0xd8, 0x9b, 0x8f, 0xa9, 0x2a, 0x4c, 0x9d, 0x13, 0x8a, 0x6f, 0x3e, 0xa2, + 0x04, 0x0c, 0x7d, 0x1f, 0xa6, 0x85, 0x6f, 0x91, 0x96, 0xe3, 0xb3, 0xef, 0xe1, 0x58, 0x3f, 0x5d, + 0x3d, 0x92, 0xcd, 0x98, 0x31, 0x32, 0x5b, 0xa6, 0x46, 0x67, 0xcb, 0xd3, 0x5c, 0x21, 0xab, 0xe6, + 0x2a, 0xff, 0x54, 0x60, 0x56, 0x4e, 0xc8, 0xb6, 0x13, 0x3a, 0x7e, 0x84, 0x5e, 0xc0, 0x8c, 0xef, + 0x05, 0xc3, 0x81, 0xab, 0xdc, 0x34, 0x70, 0x57, 0xd9, 0xc0, 0xfd, 0xf2, 0xd5, 0xfa, 0x83, 0x14, + 0xeb, 0x03, 0xe2, 0x7b, 0x14, 0xfb, 0x3d, 0x3a, 0x30, 0xc1, 0xf7, 0x82, 0x78, 0x04, 0xfb, 0x80, + 0x7c, 0xe7, 0x32, 0x06, 0xd9, 0x3d, 0x1c, 0x7a, 0xc4, 0xe5, 0x81, 0x60, 0x2b, 0x8c, 0xcf, 0xcd, + 0xa6, 0xbc, 0xab, 0x34, 0xde, 0xfb, 0xf2, 0xd5, 0xfa, 0xbb, 0x57, 0x89, 0xc9, 0x22, 0xbf, 0x65, + 0x63, 0x55, 0xf5, 0x9d, 0xcb, 0x78, 0x27, 0x5c, 0xff, 0x51, 0x46, 0x53, 0x2a, 0xcf, 0xa1, 0x74, + 0xc8, 0xc7, 0xad, 0xdc, 0x5d, 0x13, 0xe4, 0xf8, 0x8d, 0x57, 0x57, 0x6e, 0x5a, 0x3d, 0xc7, 0xad, + 0x97, 0x04, 0x2b, 0x65, 0xf9, 0x77, 0x8a, 0xec, 0x78, 0x69, 0xf9, 0x7d, 0xc8, 0xff, 0xaa, 0x4f, + 0xc2, 0xbe, 0x2f, 0xdb, 0xfd, 0xca, 0xa5, 0x46, 0x68, 0xd1, 0x07, 0x50, 0x64, 0xc5, 0x1c, 0x9d, + 0x91, 0xae, 0x7b, 0xcd, 0xfd, 0x27, 0x01, 0xa0, 0xc7, 0x50, 0xe6, 0xcd, 0x9a, 0x50, 0xb2, 0x13, + 0x29, 0xb3, 0x0c, 0x65, 0xc5, 0x20, 0xee, 0xe0, 0x5f, 0x01, 0xf2, 0xd2, 0x37, 0xfd, 0x8e, 0x39, + 0x4d, 0x1d, 0xa2, 0xe9, 0xfc, 0xed, 0x7f, 0xb5, 0xfc, 0xe5, 0x26, 0xe7, 0xe7, 0x6a, 0x2e, 0xb2, + 0x5f, 0x21, 0x17, 0xa9, 0xb8, 0xe7, 0x6e, 0x1f, 0xf7, 0xa9, 0xbb, 0xc7, 0x3d, 0x7f, 0x8b, 0xb8, + 0x23, 0x03, 0x96, 0x58, 0xa0, 0xbd, 0xc0, 0xa3, 0x5e, 0x72, 0x6b, 0xb1, 0xb9, 0xfb, 0x13, 0xe6, + 0x16, 0xb3, 0xf0, 0x8e, 0xef, 0x05, 0x86, 0xc0, 0xcb, 0xf0, 0x98, 0x0c, 0x8d, 0x1a, 0xf0, 0x60, + 0x38, 0x49, 0x4e, 0x9c, 0xe0, 0x04, 0x77, 0xa5, 0x99, 0xc2, 0x44, 0x33, 0xf3, 0x31, 0x78, 0x87, + 0x63, 0x85, 0x8d, 0xa7, 0xb0, 0x30, 0x6e, 0xc3, 0xc5, 0x51, 0x3c, 0xcf, 0xae, 0x9f, 0x3d, 0x68, + 0xd4, 0x58, 0x13, 0x47, 0x14, 0x1d, 0xc1, 0xe2, 0xf0, 0x42, 0x60, 0x8f, 0xe6, 0x0d, 0x6e, 0x97, + 0xb7, 0x07, 0x43, 0xfe, 0x61, 0x3a, 0x81, 0x3f, 0x84, 0xf9, 0xc4, 0x70, 0x12, 0xef, 0x99, 0x89, + 0xdb, 0x44, 0x43, 0x68, 0x12, 0xf4, 0xe7, 0x90, 0x58, 0xb6, 0xd3, 0x75, 0x5e, 0xba, 0x43, 0x9d, + 0x27, 0x3e, 0xec, 0x27, 0x05, 0xbf, 0x09, 0xea, 0x71, 0x3f, 0x0c, 0xd8, 0x76, 0xb1, 0x2d, 0xab, + 0x8c, 0xdd, 0xab, 0x0a, 0x66, 0x99, 0xc9, 0xd9, 0xc8, 0xfd, 0xa9, 0xa8, 0xae, 0x3a, 0xac, 0x72, + 0xe4, 0x30, 0xdc, 0xc3, 0x26, 0x09, 0x31, 0x63, 0x8b, 0x7b, 0x95, 0xb9, 0xcc, 0x40, 0xf1, 0x15, + 0x27, 0xee, 0x06, 0x81, 0x40, 0xef, 0x41, 0x39, 0x59, 0x8c, 0x95, 0x15, 0xbf, 0x65, 0x15, 0xcc, + 0x52, 0xbc, 0x14, 0x3b, 0x8b, 0xd9, 0xa1, 0x96, 0xda, 0xa2, 0x2c, 0x09, 0x75, 0x62, 0xac, 0xe6, + 0x92, 0xd6, 0x15, 0xe5, 0xf0, 0x13, 0x58, 0x1e, 0x2f, 0x07, 0xd6, 0xcf, 0x32, 0x8b, 0xf7, 0x27, + 0x1a, 0x59, 0x1c, 0x2d, 0x85, 0x7d, 0xe7, 0x52, 0xa6, 0xed, 0xe7, 0xb0, 0xce, 0x8e, 0x19, 0xdf, + 0x8b, 0xa8, 0x77, 0x62, 0x3b, 0x7d, 0x7a, 0x46, 0x42, 0xef, 0xd7, 0xd8, 0xb5, 0x1d, 0x51, 0x4a, + 0x38, 0xd2, 0xd0, 0x46, 0xf6, 0xad, 0x65, 0xb6, 0x9a, 0x18, 0xa8, 0x0f, 0xf9, 0xf5, 0x98, 0x8e, + 0x4c, 0x48, 0x01, 0xec, 0x10, 0xff, 0x02, 0x9f, 0x8c, 0x96, 0xc8, 0xfc, 0x44, 0x8f, 0x57, 0x12, + 0x92, 0x29, 0x39, 0x49, 0xad, 0x6c, 0x01, 0xb0, 0x7b, 0x99, 0xcc, 0xe5, 0xc2, 0xe4, 0x31, 0x30, + 0xc0, 0x91, 0x48, 0x6b, 0xe5, 0x37, 0x19, 0x40, 0xfb, 0xe2, 0xc7, 0x59, 0xc3, 0x89, 0xb0, 0xfb, + 0x75, 0x9e, 0x22, 0xa9, 0xc9, 0x95, 0x79, 0xeb, 0xe4, 0xba, 0x9b, 0xcf, 0xa3, 0x83, 0x2e, 0x7b, + 0xf7, 0x41, 0x97, 0xbb, 0xc5, 0xa0, 0x7b, 0xf4, 0x07, 0x05, 0x4a, 0xe9, 0x9b, 0x3c, 0x5a, 0x85, + 0xa5, 0xb6, 0xd9, 0x6a, 0xb7, 0x3a, 0xf5, 0x3d, 0xdb, 0x7a, 0xd1, 0xd6, 0xed, 0x67, 0x07, 0x9d, + 0xb6, 0xbe, 0x63, 0x3c, 0x31, 0xf4, 0xa6, 0x7a, 0x0f, 0x2d, 0xc3, 0x3b, 0xa3, 0xea, 0x8e, 0x55, + 0x3f, 0x68, 0xd6, 0xcd, 0xa6, 0xaa, 0xa0, 0x87, 0xb0, 0x3a, 0xaa, 0xdb, 0x7f, 0xb6, 0x67, 0x19, + 0xed, 0x3d, 0xdd, 0xde, 0xd9, 0x6d, 0x19, 0x3b, 0xba, 0x9a, 0x41, 0xef, 0x82, 0x36, 0x0a, 0x69, + 0xb5, 0x2d, 0x63, 0xdf, 0xe8, 0x58, 0xc6, 0x8e, 0x9a, 0x45, 0x2b, 0xb0, 0x38, 0xaa, 0xd5, 0x9f, + 0xb7, 0xf5, 0xa6, 0x61, 0xe9, 0x4d, 0x35, 0xf7, 0xe8, 0xbf, 0x0a, 0x40, 0xea, 0x73, 0xc5, 0x0a, + 0x2c, 0x1e, 0xb6, 0x2c, 0x61, 0xa0, 0x75, 0x30, 0xe6, 0xe5, 0x3c, 0xcc, 0xa5, 0x95, 0xad, 0x03, + 0x5d, 0x55, 0xc6, 0x85, 0x2f, 0xf4, 0xce, 0x55, 0xa1, 0x75, 0xd4, 0x52, 0x33, 0x68, 0x11, 0xe6, + 0xd3, 0xc2, 0x7a, 0xa3, 0x63, 0xd5, 0x8d, 0x03, 0x35, 0x83, 0x1e, 0xc0, 0xfd, 0x11, 0xf4, 0xae, + 0xa9, 0xeb, 0x6a, 0x16, 0x21, 0x28, 0xa7, 0xc5, 0x07, 0x2d, 0x35, 0x8b, 0x16, 0x40, 0x4d, 0xcb, + 0x9e, 0xb4, 0x9e, 0x99, 0x6a, 0x8e, 0xed, 0x7f, 0x14, 0x69, 0x1f, 0x19, 0xd6, 0xae, 0x7d, 0xa8, + 0x5b, 0x2d, 0x35, 0x37, 0xce, 0xe9, 0xb4, 0xeb, 0xfb, 0xea, 0xd4, 0x72, 0x46, 0x55, 0x1e, 0xfd, + 0x5d, 0x81, 0xf2, 0xe8, 0x37, 0x03, 0xb4, 0x0e, 0x2b, 0xc3, 0x60, 0x75, 0xac, 0xba, 0xf5, 0xac, + 0x33, 0x16, 0x84, 0x0a, 0xac, 0x8d, 0x03, 0x9a, 0x7a, 0xbb, 0xd5, 0x31, 0x2c, 0xbb, 0xad, 0x9b, + 0x46, 0x6b, 0x3c, 0x65, 0x12, 0x73, 0xd8, 0xb2, 0x8c, 0x83, 0x1f, 0xc7, 0x90, 0xcc, 0x48, 0xc6, + 0x25, 0xa4, 0x5d, 0xef, 0x74, 0xf4, 0xa6, 0x9a, 0x1d, 0x49, 0xa7, 0xd4, 0x99, 0xfa, 0x53, 0x7d, + 0x87, 0x67, 0x6c, 0x12, 0xf3, 0x49, 0xdd, 0xd8, 0xd3, 0x9b, 0xea, 0x54, 0xe3, 0xf1, 0x67, 0xaf, + 0xd7, 0x94, 0xcf, 0x5f, 0xaf, 0x29, 0xff, 0x7e, 0xbd, 0xa6, 0x7c, 0xf2, 0x66, 0xed, 0xde, 0xe7, + 0x6f, 0xd6, 0xee, 0xfd, 0xe3, 0xcd, 0xda, 0xbd, 0x9f, 0xad, 0x88, 0x62, 0x8d, 0xdc, 0x5f, 0x56, + 0x3d, 0x52, 0xbb, 0xe4, 0x5f, 0xe3, 0xd8, 0xcf, 0xd0, 0xa8, 0x76, 0xbe, 0x7d, 0x9c, 0xe7, 0x1d, + 0xf9, 0xed, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xdf, 0x3d, 0xf3, 0x07, 0xab, 0x13, 0x00, 0x00, } func (m *WeightedVoteOption) Marshal() (dAtA []byte, err error) { @@ -1727,6 +1773,34 @@ func (m *TallyResult) MarshalToSizedBuffer(dAtA []byte) (int, error) { copy(dAtA[i:], m.SpamCount) i = encodeVarintGov(dAtA, i, uint64(len(m.SpamCount))) i-- + dAtA[i] = 0x4a + } + if len(m.OptionFourCount) > 0 { + i -= len(m.OptionFourCount) + copy(dAtA[i:], m.OptionFourCount) + i = encodeVarintGov(dAtA, i, uint64(len(m.OptionFourCount))) + i-- + dAtA[i] = 0x42 + } + if len(m.OptionThreeCount) > 0 { + i -= len(m.OptionThreeCount) + copy(dAtA[i:], m.OptionThreeCount) + i = encodeVarintGov(dAtA, i, uint64(len(m.OptionThreeCount))) + i-- + dAtA[i] = 0x3a + } + if len(m.OptionTwoCount) > 0 { + i -= len(m.OptionTwoCount) + copy(dAtA[i:], m.OptionTwoCount) + i = encodeVarintGov(dAtA, i, uint64(len(m.OptionTwoCount))) + i-- + dAtA[i] = 0x32 + } + if len(m.OptionOneCount) > 0 { + i -= len(m.OptionOneCount) + copy(dAtA[i:], m.OptionOneCount) + i = encodeVarintGov(dAtA, i, uint64(len(m.OptionOneCount))) + i-- dAtA[i] = 0x2a } if len(m.NoWithVetoCount) > 0 { @@ -2383,6 +2457,22 @@ func (m *TallyResult) Size() (n int) { if l > 0 { n += 1 + l + sovGov(uint64(l)) } + l = len(m.OptionOneCount) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.OptionTwoCount) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.OptionThreeCount) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } + l = len(m.OptionFourCount) + if l > 0 { + n += 1 + l + sovGov(uint64(l)) + } l = len(m.SpamCount) if l > 0 { n += 1 + l + sovGov(uint64(l)) @@ -3735,6 +3825,134 @@ func (m *TallyResult) Unmarshal(dAtA []byte) error { m.NoWithVetoCount = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex case 5: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OptionOneCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionOneCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 6: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OptionTwoCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionTwoCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OptionThreeCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionThreeCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field OptionFourCount", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflowGov + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLengthGov + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLengthGov + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.OptionFourCount = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field SpamCount", wireType) } diff --git a/x/gov/types/v1/tally.go b/x/gov/types/v1/tally.go index 707496b971..d9543206f5 100644 --- a/x/gov/types/v1/tally.go +++ b/x/gov/types/v1/tally.go @@ -31,11 +31,15 @@ func NewValidatorGovInfo(address sdk.ValAddress, bondedTokens math.Int, delegato // NewTallyResult creates a new TallyResult instance func NewTallyResult(option1, option2, option3, option4, spam math.Int) TallyResult { return TallyResult{ - YesCount: option1.String(), - AbstainCount: option2.String(), - NoCount: option3.String(), - NoWithVetoCount: option4.String(), - SpamCount: spam.String(), + YesCount: option1.String(), // deprecated, kept for client backwards compatibility + AbstainCount: option2.String(), // deprecated, kept for client backwards compatibility + NoCount: option3.String(), // deprecated, kept for client backwards compatibility + NoWithVetoCount: option4.String(), // deprecated, kept for client backwards compatibility + OptionOneCount: option1.String(), + OptionTwoCount: option2.String(), + OptionThreeCount: option3.String(), + OptionFourCount: option4.String(), + SpamCount: spam.String(), } } @@ -61,5 +65,9 @@ func (tr TallyResult) Equals(comp TallyResult) bool { tr.AbstainCount == comp.AbstainCount && tr.NoCount == comp.NoCount && tr.NoWithVetoCount == comp.NoWithVetoCount && + tr.OptionOneCount == comp.OptionOneCount && + tr.OptionTwoCount == comp.OptionTwoCount && + tr.OptionThreeCount == comp.OptionThreeCount && + tr.OptionFourCount == comp.OptionFourCount && tr.SpamCount == comp.SpamCount }