From 981fefbbe9d84bf5206cf3bebca0b799c6c1e8c7 Mon Sep 17 00:00:00 2001 From: lukasIO Date: Tue, 19 Mar 2024 13:26:46 +0100 Subject: [PATCH] Add signal requests for local track updates (#651) * Add signal requests for local track updates * changeset * fix indices * fix field naming * generated protobuf * address comment * generated protobuf * Remove video features for now * generated protobuf * whitespace --------- Co-authored-by: github-actions <41898282+github-actions[bot]@users.noreply.github.com> --- .changeset/sour-geckos-push.md | 6 + livekit/livekit_models.pb.go | 242 +++++--- livekit/livekit_rtc.pb.go | 1057 +++++++++++++++++++------------- protobufs/livekit_models.proto | 10 + protobufs/livekit_rtc.proto | 17 + 5 files changed, 819 insertions(+), 513 deletions(-) create mode 100644 .changeset/sour-geckos-push.md diff --git a/.changeset/sour-geckos-push.md b/.changeset/sour-geckos-push.md new file mode 100644 index 00000000..e826ce37 --- /dev/null +++ b/.changeset/sour-geckos-push.md @@ -0,0 +1,6 @@ +--- +"github.com/livekit/protocol": patch +"@livekit/protocol": patch +--- + +Add signal requests for local track updates diff --git a/livekit/livekit_models.pb.go b/livekit/livekit_models.pb.go index fa6858eb..d3912c68 100644 --- a/livekit/livekit_models.pb.go +++ b/livekit/livekit_models.pb.go @@ -616,6 +616,64 @@ func (SubscriptionError) EnumDescriptor() ([]byte, []int) { return file_livekit_models_proto_rawDescGZIP(), []int{10} } +type AudioTrackFeature int32 + +const ( + AudioTrackFeature_TF_STEREO AudioTrackFeature = 0 + AudioTrackFeature_TF_NO_DTX AudioTrackFeature = 1 + AudioTrackFeature_TF_AUTO_GAIN_CONTROL AudioTrackFeature = 2 + AudioTrackFeature_TF_ECHO_CANCELLATION AudioTrackFeature = 3 + AudioTrackFeature_TF_NOISE_SUPPRESSION AudioTrackFeature = 4 + AudioTrackFeature_TF_ENHANCED_NOISE_CANCELLATION AudioTrackFeature = 5 +) + +// Enum value maps for AudioTrackFeature. +var ( + AudioTrackFeature_name = map[int32]string{ + 0: "TF_STEREO", + 1: "TF_NO_DTX", + 2: "TF_AUTO_GAIN_CONTROL", + 3: "TF_ECHO_CANCELLATION", + 4: "TF_NOISE_SUPPRESSION", + 5: "TF_ENHANCED_NOISE_CANCELLATION", + } + AudioTrackFeature_value = map[string]int32{ + "TF_STEREO": 0, + "TF_NO_DTX": 1, + "TF_AUTO_GAIN_CONTROL": 2, + "TF_ECHO_CANCELLATION": 3, + "TF_NOISE_SUPPRESSION": 4, + "TF_ENHANCED_NOISE_CANCELLATION": 5, + } +) + +func (x AudioTrackFeature) Enum() *AudioTrackFeature { + p := new(AudioTrackFeature) + *p = x + return p +} + +func (x AudioTrackFeature) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AudioTrackFeature) Descriptor() protoreflect.EnumDescriptor { + return file_livekit_models_proto_enumTypes[11].Descriptor() +} + +func (AudioTrackFeature) Type() protoreflect.EnumType { + return &file_livekit_models_proto_enumTypes[11] +} + +func (x AudioTrackFeature) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AudioTrackFeature.Descriptor instead. +func (AudioTrackFeature) EnumDescriptor() ([]byte, []int) { + return file_livekit_models_proto_rawDescGZIP(), []int{11} +} + type ParticipantInfo_State int32 const ( @@ -656,11 +714,11 @@ func (x ParticipantInfo_State) String() string { } func (ParticipantInfo_State) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[11].Descriptor() + return file_livekit_models_proto_enumTypes[12].Descriptor() } func (ParticipantInfo_State) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[11] + return &file_livekit_models_proto_enumTypes[12] } func (x ParticipantInfo_State) Number() protoreflect.EnumNumber { @@ -716,11 +774,11 @@ func (x ParticipantInfo_Kind) String() string { } func (ParticipantInfo_Kind) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[12].Descriptor() + return file_livekit_models_proto_enumTypes[13].Descriptor() } func (ParticipantInfo_Kind) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[12] + return &file_livekit_models_proto_enumTypes[13] } func (x ParticipantInfo_Kind) Number() protoreflect.EnumNumber { @@ -765,11 +823,11 @@ func (x Encryption_Type) String() string { } func (Encryption_Type) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[13].Descriptor() + return file_livekit_models_proto_enumTypes[14].Descriptor() } func (Encryption_Type) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[13] + return &file_livekit_models_proto_enumTypes[14] } func (x Encryption_Type) Number() protoreflect.EnumNumber { @@ -811,11 +869,11 @@ func (x DataPacket_Kind) String() string { } func (DataPacket_Kind) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[14].Descriptor() + return file_livekit_models_proto_enumTypes[15].Descriptor() } func (DataPacket_Kind) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[14] + return &file_livekit_models_proto_enumTypes[15] } func (x DataPacket_Kind) Number() protoreflect.EnumNumber { @@ -857,11 +915,11 @@ func (x ServerInfo_Edition) String() string { } func (ServerInfo_Edition) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[15].Descriptor() + return file_livekit_models_proto_enumTypes[16].Descriptor() } func (ServerInfo_Edition) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[15] + return &file_livekit_models_proto_enumTypes[16] } func (x ServerInfo_Edition) Number() protoreflect.EnumNumber { @@ -930,11 +988,11 @@ func (x ClientInfo_SDK) String() string { } func (ClientInfo_SDK) Descriptor() protoreflect.EnumDescriptor { - return file_livekit_models_proto_enumTypes[16].Descriptor() + return file_livekit_models_proto_enumTypes[17].Descriptor() } func (ClientInfo_SDK) Type() protoreflect.EnumType { - return &file_livekit_models_proto_enumTypes[16] + return &file_livekit_models_proto_enumTypes[17] } func (x ClientInfo_SDK) Number() protoreflect.EnumNumber { @@ -3744,12 +3802,23 @@ var file_livekit_models_proto_rawDesc = []byte{ 0x0a, 0x53, 0x45, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x45, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x43, 0x5f, 0x55, 0x4e, 0x53, 0x55, 0x50, 0x50, 0x4f, 0x52, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x15, 0x0a, 0x11, 0x53, 0x45, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x42, 0x46, - 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, - 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, - 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x41, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x02, 0x2a, 0xa3, + 0x01, 0x0a, 0x11, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x46, 0x65, 0x61, + 0x74, 0x75, 0x72, 0x65, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x46, 0x5f, 0x53, 0x54, 0x45, 0x52, 0x45, + 0x4f, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x54, 0x46, 0x5f, 0x4e, 0x4f, 0x5f, 0x44, 0x54, 0x58, + 0x10, 0x01, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x46, 0x5f, 0x41, 0x55, 0x54, 0x4f, 0x5f, 0x47, 0x41, + 0x49, 0x4e, 0x5f, 0x43, 0x4f, 0x4e, 0x54, 0x52, 0x4f, 0x4c, 0x10, 0x02, 0x12, 0x18, 0x0a, 0x14, + 0x54, 0x46, 0x5f, 0x45, 0x43, 0x48, 0x4f, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x12, 0x18, 0x0a, 0x14, 0x54, 0x46, 0x5f, 0x4e, 0x4f, 0x49, + 0x53, 0x45, 0x5f, 0x53, 0x55, 0x50, 0x50, 0x52, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x04, + 0x12, 0x22, 0x0a, 0x1e, 0x54, 0x46, 0x5f, 0x45, 0x4e, 0x48, 0x41, 0x4e, 0x43, 0x45, 0x44, 0x5f, + 0x4e, 0x4f, 0x49, 0x53, 0x45, 0x5f, 0x43, 0x41, 0x4e, 0x43, 0x45, 0x4c, 0x4c, 0x41, 0x54, 0x49, + 0x4f, 0x4e, 0x10, 0x05, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, + 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, + 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, + 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3764,7 +3833,7 @@ func file_livekit_models_proto_rawDescGZIP() []byte { return file_livekit_models_proto_rawDescData } -var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 17) +var file_livekit_models_proto_enumTypes = make([]protoimpl.EnumInfo, 18) var file_livekit_models_proto_msgTypes = make([]protoimpl.MessageInfo, 24) var file_livekit_models_proto_goTypes = []interface{}{ (AudioCodec)(0), // 0: livekit.AudioCodec @@ -3778,81 +3847,82 @@ var file_livekit_models_proto_goTypes = []interface{}{ (DisconnectReason)(0), // 8: livekit.DisconnectReason (ReconnectReason)(0), // 9: livekit.ReconnectReason (SubscriptionError)(0), // 10: livekit.SubscriptionError - (ParticipantInfo_State)(0), // 11: livekit.ParticipantInfo.State - (ParticipantInfo_Kind)(0), // 12: livekit.ParticipantInfo.Kind - (Encryption_Type)(0), // 13: livekit.Encryption.Type - (DataPacket_Kind)(0), // 14: livekit.DataPacket.Kind - (ServerInfo_Edition)(0), // 15: livekit.ServerInfo.Edition - (ClientInfo_SDK)(0), // 16: livekit.ClientInfo.SDK - (*Room)(nil), // 17: livekit.Room - (*Codec)(nil), // 18: livekit.Codec - (*PlayoutDelay)(nil), // 19: livekit.PlayoutDelay - (*ParticipantPermission)(nil), // 20: livekit.ParticipantPermission - (*ParticipantInfo)(nil), // 21: livekit.ParticipantInfo - (*Encryption)(nil), // 22: livekit.Encryption - (*SimulcastCodecInfo)(nil), // 23: livekit.SimulcastCodecInfo - (*TrackInfo)(nil), // 24: livekit.TrackInfo - (*VideoLayer)(nil), // 25: livekit.VideoLayer - (*DataPacket)(nil), // 26: livekit.DataPacket - (*ActiveSpeakerUpdate)(nil), // 27: livekit.ActiveSpeakerUpdate - (*SpeakerInfo)(nil), // 28: livekit.SpeakerInfo - (*UserPacket)(nil), // 29: livekit.UserPacket - (*SipDTMF)(nil), // 30: livekit.SipDTMF - (*ParticipantTracks)(nil), // 31: livekit.ParticipantTracks - (*ServerInfo)(nil), // 32: livekit.ServerInfo - (*ClientInfo)(nil), // 33: livekit.ClientInfo - (*ClientConfiguration)(nil), // 34: livekit.ClientConfiguration - (*VideoConfiguration)(nil), // 35: livekit.VideoConfiguration - (*DisabledCodecs)(nil), // 36: livekit.DisabledCodecs - (*RTPDrift)(nil), // 37: livekit.RTPDrift - (*RTPStats)(nil), // 38: livekit.RTPStats - (*TimedVersion)(nil), // 39: livekit.TimedVersion - nil, // 40: livekit.RTPStats.GapHistogramEntry - (*timestamppb.Timestamp)(nil), // 41: google.protobuf.Timestamp + (AudioTrackFeature)(0), // 11: livekit.AudioTrackFeature + (ParticipantInfo_State)(0), // 12: livekit.ParticipantInfo.State + (ParticipantInfo_Kind)(0), // 13: livekit.ParticipantInfo.Kind + (Encryption_Type)(0), // 14: livekit.Encryption.Type + (DataPacket_Kind)(0), // 15: livekit.DataPacket.Kind + (ServerInfo_Edition)(0), // 16: livekit.ServerInfo.Edition + (ClientInfo_SDK)(0), // 17: livekit.ClientInfo.SDK + (*Room)(nil), // 18: livekit.Room + (*Codec)(nil), // 19: livekit.Codec + (*PlayoutDelay)(nil), // 20: livekit.PlayoutDelay + (*ParticipantPermission)(nil), // 21: livekit.ParticipantPermission + (*ParticipantInfo)(nil), // 22: livekit.ParticipantInfo + (*Encryption)(nil), // 23: livekit.Encryption + (*SimulcastCodecInfo)(nil), // 24: livekit.SimulcastCodecInfo + (*TrackInfo)(nil), // 25: livekit.TrackInfo + (*VideoLayer)(nil), // 26: livekit.VideoLayer + (*DataPacket)(nil), // 27: livekit.DataPacket + (*ActiveSpeakerUpdate)(nil), // 28: livekit.ActiveSpeakerUpdate + (*SpeakerInfo)(nil), // 29: livekit.SpeakerInfo + (*UserPacket)(nil), // 30: livekit.UserPacket + (*SipDTMF)(nil), // 31: livekit.SipDTMF + (*ParticipantTracks)(nil), // 32: livekit.ParticipantTracks + (*ServerInfo)(nil), // 33: livekit.ServerInfo + (*ClientInfo)(nil), // 34: livekit.ClientInfo + (*ClientConfiguration)(nil), // 35: livekit.ClientConfiguration + (*VideoConfiguration)(nil), // 36: livekit.VideoConfiguration + (*DisabledCodecs)(nil), // 37: livekit.DisabledCodecs + (*RTPDrift)(nil), // 38: livekit.RTPDrift + (*RTPStats)(nil), // 39: livekit.RTPStats + (*TimedVersion)(nil), // 40: livekit.TimedVersion + nil, // 41: livekit.RTPStats.GapHistogramEntry + (*timestamppb.Timestamp)(nil), // 42: google.protobuf.Timestamp } var file_livekit_models_proto_depIdxs = []int32{ - 18, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec - 39, // 1: livekit.Room.version:type_name -> livekit.TimedVersion + 19, // 0: livekit.Room.enabled_codecs:type_name -> livekit.Codec + 40, // 1: livekit.Room.version:type_name -> livekit.TimedVersion 4, // 2: livekit.ParticipantPermission.can_publish_sources:type_name -> livekit.TrackSource - 11, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State - 24, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo - 20, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission - 12, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind - 25, // 7: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer + 12, // 3: livekit.ParticipantInfo.state:type_name -> livekit.ParticipantInfo.State + 25, // 4: livekit.ParticipantInfo.tracks:type_name -> livekit.TrackInfo + 21, // 5: livekit.ParticipantInfo.permission:type_name -> livekit.ParticipantPermission + 13, // 6: livekit.ParticipantInfo.kind:type_name -> livekit.ParticipantInfo.Kind + 26, // 7: livekit.SimulcastCodecInfo.layers:type_name -> livekit.VideoLayer 3, // 8: livekit.TrackInfo.type:type_name -> livekit.TrackType 4, // 9: livekit.TrackInfo.source:type_name -> livekit.TrackSource - 25, // 10: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer - 23, // 11: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo - 13, // 12: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type - 39, // 13: livekit.TrackInfo.version:type_name -> livekit.TimedVersion + 26, // 10: livekit.TrackInfo.layers:type_name -> livekit.VideoLayer + 24, // 11: livekit.TrackInfo.codecs:type_name -> livekit.SimulcastCodecInfo + 14, // 12: livekit.TrackInfo.encryption:type_name -> livekit.Encryption.Type + 40, // 13: livekit.TrackInfo.version:type_name -> livekit.TimedVersion 5, // 14: livekit.VideoLayer.quality:type_name -> livekit.VideoQuality - 14, // 15: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind - 29, // 16: livekit.DataPacket.user:type_name -> livekit.UserPacket - 27, // 17: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate - 30, // 18: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF - 28, // 19: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo - 15, // 20: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition - 16, // 21: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK - 35, // 22: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration - 35, // 23: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration + 15, // 15: livekit.DataPacket.kind:type_name -> livekit.DataPacket.Kind + 30, // 16: livekit.DataPacket.user:type_name -> livekit.UserPacket + 28, // 17: livekit.DataPacket.speaker:type_name -> livekit.ActiveSpeakerUpdate + 31, // 18: livekit.DataPacket.sip_dtmf:type_name -> livekit.SipDTMF + 29, // 19: livekit.ActiveSpeakerUpdate.speakers:type_name -> livekit.SpeakerInfo + 16, // 20: livekit.ServerInfo.edition:type_name -> livekit.ServerInfo.Edition + 17, // 21: livekit.ClientInfo.sdk:type_name -> livekit.ClientInfo.SDK + 36, // 22: livekit.ClientConfiguration.video:type_name -> livekit.VideoConfiguration + 36, // 23: livekit.ClientConfiguration.screen:type_name -> livekit.VideoConfiguration 7, // 24: livekit.ClientConfiguration.resume_connection:type_name -> livekit.ClientConfigSetting - 36, // 25: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs + 37, // 25: livekit.ClientConfiguration.disabled_codecs:type_name -> livekit.DisabledCodecs 7, // 26: livekit.ClientConfiguration.force_relay:type_name -> livekit.ClientConfigSetting 7, // 27: livekit.VideoConfiguration.hardware_encoder:type_name -> livekit.ClientConfigSetting - 18, // 28: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec - 18, // 29: livekit.DisabledCodecs.publish:type_name -> livekit.Codec - 41, // 30: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp - 41, // 31: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp - 41, // 32: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp - 41, // 33: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp - 40, // 34: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry - 41, // 35: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp - 41, // 36: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp - 41, // 37: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp - 41, // 38: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp - 37, // 39: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift - 37, // 40: livekit.RTPStats.report_drift:type_name -> livekit.RTPDrift - 37, // 41: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift + 19, // 28: livekit.DisabledCodecs.codecs:type_name -> livekit.Codec + 19, // 29: livekit.DisabledCodecs.publish:type_name -> livekit.Codec + 42, // 30: livekit.RTPDrift.start_time:type_name -> google.protobuf.Timestamp + 42, // 31: livekit.RTPDrift.end_time:type_name -> google.protobuf.Timestamp + 42, // 32: livekit.RTPStats.start_time:type_name -> google.protobuf.Timestamp + 42, // 33: livekit.RTPStats.end_time:type_name -> google.protobuf.Timestamp + 41, // 34: livekit.RTPStats.gap_histogram:type_name -> livekit.RTPStats.GapHistogramEntry + 42, // 35: livekit.RTPStats.last_pli:type_name -> google.protobuf.Timestamp + 42, // 36: livekit.RTPStats.last_fir:type_name -> google.protobuf.Timestamp + 42, // 37: livekit.RTPStats.last_key_frame:type_name -> google.protobuf.Timestamp + 42, // 38: livekit.RTPStats.last_layer_lock_pli:type_name -> google.protobuf.Timestamp + 38, // 39: livekit.RTPStats.packet_drift:type_name -> livekit.RTPDrift + 38, // 40: livekit.RTPStats.report_drift:type_name -> livekit.RTPDrift + 38, // 41: livekit.RTPStats.rebased_report_drift:type_name -> livekit.RTPDrift 42, // [42:42] is the sub-list for method output_type 42, // [42:42] is the sub-list for method input_type 42, // [42:42] is the sub-list for extension type_name @@ -4154,7 +4224,7 @@ func file_livekit_models_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_models_proto_rawDesc, - NumEnums: 17, + NumEnums: 18, NumMessages: 24, NumExtensions: 0, NumServices: 0, diff --git a/livekit/livekit_rtc.pb.go b/livekit/livekit_rtc.pb.go index 1475adbf..e6bda1d4 100644 --- a/livekit/livekit_rtc.pb.go +++ b/livekit/livekit_rtc.pb.go @@ -222,7 +222,7 @@ func (x LeaveRequest_Action) Number() protoreflect.EnumNumber { // Deprecated: Use LeaveRequest_Action.Descriptor instead. func (LeaveRequest_Action) EnumDescriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{14, 0} + return file_livekit_rtc_proto_rawDescGZIP(), []int{16, 0} } type SignalRequest struct { @@ -247,6 +247,8 @@ type SignalRequest struct { // *SignalRequest_Ping // *SignalRequest_UpdateMetadata // *SignalRequest_PingReq + // *SignalRequest_UpdateAudioTrack + // *SignalRequest_UpdateVideoTrack Message isSignalRequest_Message `protobuf_oneof:"message"` } @@ -394,6 +396,20 @@ func (x *SignalRequest) GetPingReq() *Ping { return nil } +func (x *SignalRequest) GetUpdateAudioTrack() *UpdateLocalAudioTrack { + if x, ok := x.GetMessage().(*SignalRequest_UpdateAudioTrack); ok { + return x.UpdateAudioTrack + } + return nil +} + +func (x *SignalRequest) GetUpdateVideoTrack() *UpdateLocalVideoTrack { + if x, ok := x.GetMessage().(*SignalRequest_UpdateVideoTrack); ok { + return x.UpdateVideoTrack + } + return nil +} + type isSignalRequest_Message interface { isSignalRequest_Message() } @@ -470,6 +486,16 @@ type SignalRequest_PingReq struct { PingReq *Ping `protobuf:"bytes,16,opt,name=ping_req,json=pingReq,proto3,oneof"` } +type SignalRequest_UpdateAudioTrack struct { + // Update local audio track settings + UpdateAudioTrack *UpdateLocalAudioTrack `protobuf:"bytes,17,opt,name=update_audio_track,json=updateAudioTrack,proto3,oneof"` +} + +type SignalRequest_UpdateVideoTrack struct { + // Update local video track settings + UpdateVideoTrack *UpdateLocalVideoTrack `protobuf:"bytes,18,opt,name=update_video_track,json=updateVideoTrack,proto3,oneof"` +} + func (*SignalRequest_Offer) isSignalRequest_Message() {} func (*SignalRequest_Answer) isSignalRequest_Message() {} @@ -500,6 +526,10 @@ func (*SignalRequest_UpdateMetadata) isSignalRequest_Message() {} func (*SignalRequest_PingReq) isSignalRequest_Message() {} +func (*SignalRequest_UpdateAudioTrack) isSignalRequest_Message() {} + +func (*SignalRequest_UpdateVideoTrack) isSignalRequest_Message() {} + type SignalResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1763,6 +1793,124 @@ func (x *UpdateTrackSettings) GetPriority() uint32 { return 0 } +type UpdateLocalAudioTrack struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TrackSid string `protobuf:"bytes,1,opt,name=track_sid,json=trackSid,proto3" json:"track_sid,omitempty"` + Features []AudioTrackFeature `protobuf:"varint,2,rep,packed,name=features,proto3,enum=livekit.AudioTrackFeature" json:"features,omitempty"` +} + +func (x *UpdateLocalAudioTrack) Reset() { + *x = UpdateLocalAudioTrack{} + if protoimpl.UnsafeEnabled { + mi := &file_livekit_rtc_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateLocalAudioTrack) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateLocalAudioTrack) ProtoMessage() {} + +func (x *UpdateLocalAudioTrack) ProtoReflect() protoreflect.Message { + mi := &file_livekit_rtc_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateLocalAudioTrack.ProtoReflect.Descriptor instead. +func (*UpdateLocalAudioTrack) Descriptor() ([]byte, []int) { + return file_livekit_rtc_proto_rawDescGZIP(), []int{14} +} + +func (x *UpdateLocalAudioTrack) GetTrackSid() string { + if x != nil { + return x.TrackSid + } + return "" +} + +func (x *UpdateLocalAudioTrack) GetFeatures() []AudioTrackFeature { + if x != nil { + return x.Features + } + return nil +} + +type UpdateLocalVideoTrack struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TrackSid string `protobuf:"bytes,1,opt,name=track_sid,json=trackSid,proto3" json:"track_sid,omitempty"` + Width uint32 `protobuf:"varint,2,opt,name=width,proto3" json:"width,omitempty"` + Height uint32 `protobuf:"varint,3,opt,name=height,proto3" json:"height,omitempty"` +} + +func (x *UpdateLocalVideoTrack) Reset() { + *x = UpdateLocalVideoTrack{} + if protoimpl.UnsafeEnabled { + mi := &file_livekit_rtc_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateLocalVideoTrack) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateLocalVideoTrack) ProtoMessage() {} + +func (x *UpdateLocalVideoTrack) ProtoReflect() protoreflect.Message { + mi := &file_livekit_rtc_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateLocalVideoTrack.ProtoReflect.Descriptor instead. +func (*UpdateLocalVideoTrack) Descriptor() ([]byte, []int) { + return file_livekit_rtc_proto_rawDescGZIP(), []int{15} +} + +func (x *UpdateLocalVideoTrack) GetTrackSid() string { + if x != nil { + return x.TrackSid + } + return "" +} + +func (x *UpdateLocalVideoTrack) GetWidth() uint32 { + if x != nil { + return x.Width + } + return 0 +} + +func (x *UpdateLocalVideoTrack) GetHeight() uint32 { + if x != nil { + return x.Height + } + return 0 +} + type LeaveRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1780,7 +1928,7 @@ type LeaveRequest struct { func (x *LeaveRequest) Reset() { *x = LeaveRequest{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[14] + mi := &file_livekit_rtc_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1793,7 +1941,7 @@ func (x *LeaveRequest) String() string { func (*LeaveRequest) ProtoMessage() {} func (x *LeaveRequest) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[14] + mi := &file_livekit_rtc_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1806,7 +1954,7 @@ func (x *LeaveRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaveRequest.ProtoReflect.Descriptor instead. func (*LeaveRequest) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{14} + return file_livekit_rtc_proto_rawDescGZIP(), []int{16} } func (x *LeaveRequest) GetCanReconnect() bool { @@ -1850,7 +1998,7 @@ type UpdateVideoLayers struct { func (x *UpdateVideoLayers) Reset() { *x = UpdateVideoLayers{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[15] + mi := &file_livekit_rtc_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1863,7 +2011,7 @@ func (x *UpdateVideoLayers) String() string { func (*UpdateVideoLayers) ProtoMessage() {} func (x *UpdateVideoLayers) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[15] + mi := &file_livekit_rtc_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1876,7 +2024,7 @@ func (x *UpdateVideoLayers) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateVideoLayers.ProtoReflect.Descriptor instead. func (*UpdateVideoLayers) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{15} + return file_livekit_rtc_proto_rawDescGZIP(), []int{17} } func (x *UpdateVideoLayers) GetTrackSid() string { @@ -1905,7 +2053,7 @@ type UpdateParticipantMetadata struct { func (x *UpdateParticipantMetadata) Reset() { *x = UpdateParticipantMetadata{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[16] + mi := &file_livekit_rtc_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1918,7 +2066,7 @@ func (x *UpdateParticipantMetadata) String() string { func (*UpdateParticipantMetadata) ProtoMessage() {} func (x *UpdateParticipantMetadata) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[16] + mi := &file_livekit_rtc_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1931,7 +2079,7 @@ func (x *UpdateParticipantMetadata) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateParticipantMetadata.ProtoReflect.Descriptor instead. func (*UpdateParticipantMetadata) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{16} + return file_livekit_rtc_proto_rawDescGZIP(), []int{18} } func (x *UpdateParticipantMetadata) GetMetadata() string { @@ -1961,7 +2109,7 @@ type ICEServer struct { func (x *ICEServer) Reset() { *x = ICEServer{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[17] + mi := &file_livekit_rtc_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1974,7 +2122,7 @@ func (x *ICEServer) String() string { func (*ICEServer) ProtoMessage() {} func (x *ICEServer) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[17] + mi := &file_livekit_rtc_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1987,7 +2135,7 @@ func (x *ICEServer) ProtoReflect() protoreflect.Message { // Deprecated: Use ICEServer.ProtoReflect.Descriptor instead. func (*ICEServer) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{17} + return file_livekit_rtc_proto_rawDescGZIP(), []int{19} } func (x *ICEServer) GetUrls() []string { @@ -2022,7 +2170,7 @@ type SpeakersChanged struct { func (x *SpeakersChanged) Reset() { *x = SpeakersChanged{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[18] + mi := &file_livekit_rtc_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2035,7 +2183,7 @@ func (x *SpeakersChanged) String() string { func (*SpeakersChanged) ProtoMessage() {} func (x *SpeakersChanged) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[18] + mi := &file_livekit_rtc_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2048,7 +2196,7 @@ func (x *SpeakersChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use SpeakersChanged.ProtoReflect.Descriptor instead. func (*SpeakersChanged) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{18} + return file_livekit_rtc_proto_rawDescGZIP(), []int{20} } func (x *SpeakersChanged) GetSpeakers() []*SpeakerInfo { @@ -2069,7 +2217,7 @@ type RoomUpdate struct { func (x *RoomUpdate) Reset() { *x = RoomUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[19] + mi := &file_livekit_rtc_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2082,7 +2230,7 @@ func (x *RoomUpdate) String() string { func (*RoomUpdate) ProtoMessage() {} func (x *RoomUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[19] + mi := &file_livekit_rtc_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2095,7 +2243,7 @@ func (x *RoomUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use RoomUpdate.ProtoReflect.Descriptor instead. func (*RoomUpdate) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{19} + return file_livekit_rtc_proto_rawDescGZIP(), []int{21} } func (x *RoomUpdate) GetRoom() *Room { @@ -2118,7 +2266,7 @@ type ConnectionQualityInfo struct { func (x *ConnectionQualityInfo) Reset() { *x = ConnectionQualityInfo{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[20] + mi := &file_livekit_rtc_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2131,7 +2279,7 @@ func (x *ConnectionQualityInfo) String() string { func (*ConnectionQualityInfo) ProtoMessage() {} func (x *ConnectionQualityInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[20] + mi := &file_livekit_rtc_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2144,7 +2292,7 @@ func (x *ConnectionQualityInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionQualityInfo.ProtoReflect.Descriptor instead. func (*ConnectionQualityInfo) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{20} + return file_livekit_rtc_proto_rawDescGZIP(), []int{22} } func (x *ConnectionQualityInfo) GetParticipantSid() string { @@ -2179,7 +2327,7 @@ type ConnectionQualityUpdate struct { func (x *ConnectionQualityUpdate) Reset() { *x = ConnectionQualityUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[21] + mi := &file_livekit_rtc_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2192,7 +2340,7 @@ func (x *ConnectionQualityUpdate) String() string { func (*ConnectionQualityUpdate) ProtoMessage() {} func (x *ConnectionQualityUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[21] + mi := &file_livekit_rtc_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2205,7 +2353,7 @@ func (x *ConnectionQualityUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionQualityUpdate.ProtoReflect.Descriptor instead. func (*ConnectionQualityUpdate) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{21} + return file_livekit_rtc_proto_rawDescGZIP(), []int{23} } func (x *ConnectionQualityUpdate) GetUpdates() []*ConnectionQualityInfo { @@ -2228,7 +2376,7 @@ type StreamStateInfo struct { func (x *StreamStateInfo) Reset() { *x = StreamStateInfo{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[22] + mi := &file_livekit_rtc_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2241,7 +2389,7 @@ func (x *StreamStateInfo) String() string { func (*StreamStateInfo) ProtoMessage() {} func (x *StreamStateInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[22] + mi := &file_livekit_rtc_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2254,7 +2402,7 @@ func (x *StreamStateInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamStateInfo.ProtoReflect.Descriptor instead. func (*StreamStateInfo) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{22} + return file_livekit_rtc_proto_rawDescGZIP(), []int{24} } func (x *StreamStateInfo) GetParticipantSid() string { @@ -2289,7 +2437,7 @@ type StreamStateUpdate struct { func (x *StreamStateUpdate) Reset() { *x = StreamStateUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[23] + mi := &file_livekit_rtc_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2302,7 +2450,7 @@ func (x *StreamStateUpdate) String() string { func (*StreamStateUpdate) ProtoMessage() {} func (x *StreamStateUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[23] + mi := &file_livekit_rtc_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2315,7 +2463,7 @@ func (x *StreamStateUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use StreamStateUpdate.ProtoReflect.Descriptor instead. func (*StreamStateUpdate) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{23} + return file_livekit_rtc_proto_rawDescGZIP(), []int{25} } func (x *StreamStateUpdate) GetStreamStates() []*StreamStateInfo { @@ -2337,7 +2485,7 @@ type SubscribedQuality struct { func (x *SubscribedQuality) Reset() { *x = SubscribedQuality{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[24] + mi := &file_livekit_rtc_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2350,7 +2498,7 @@ func (x *SubscribedQuality) String() string { func (*SubscribedQuality) ProtoMessage() {} func (x *SubscribedQuality) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[24] + mi := &file_livekit_rtc_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2363,7 +2511,7 @@ func (x *SubscribedQuality) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribedQuality.ProtoReflect.Descriptor instead. func (*SubscribedQuality) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{24} + return file_livekit_rtc_proto_rawDescGZIP(), []int{26} } func (x *SubscribedQuality) GetQuality() VideoQuality { @@ -2392,7 +2540,7 @@ type SubscribedCodec struct { func (x *SubscribedCodec) Reset() { *x = SubscribedCodec{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[25] + mi := &file_livekit_rtc_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2405,7 +2553,7 @@ func (x *SubscribedCodec) String() string { func (*SubscribedCodec) ProtoMessage() {} func (x *SubscribedCodec) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[25] + mi := &file_livekit_rtc_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2418,7 +2566,7 @@ func (x *SubscribedCodec) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribedCodec.ProtoReflect.Descriptor instead. func (*SubscribedCodec) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{25} + return file_livekit_rtc_proto_rawDescGZIP(), []int{27} } func (x *SubscribedCodec) GetCodec() string { @@ -2448,7 +2596,7 @@ type SubscribedQualityUpdate struct { func (x *SubscribedQualityUpdate) Reset() { *x = SubscribedQualityUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[26] + mi := &file_livekit_rtc_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2461,7 +2609,7 @@ func (x *SubscribedQualityUpdate) String() string { func (*SubscribedQualityUpdate) ProtoMessage() {} func (x *SubscribedQualityUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[26] + mi := &file_livekit_rtc_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2474,7 +2622,7 @@ func (x *SubscribedQualityUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscribedQualityUpdate.ProtoReflect.Descriptor instead. func (*SubscribedQualityUpdate) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{26} + return file_livekit_rtc_proto_rawDescGZIP(), []int{28} } func (x *SubscribedQualityUpdate) GetTrackSid() string { @@ -2513,7 +2661,7 @@ type TrackPermission struct { func (x *TrackPermission) Reset() { *x = TrackPermission{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[27] + mi := &file_livekit_rtc_proto_msgTypes[29] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2526,7 +2674,7 @@ func (x *TrackPermission) String() string { func (*TrackPermission) ProtoMessage() {} func (x *TrackPermission) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[27] + mi := &file_livekit_rtc_proto_msgTypes[29] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2539,7 +2687,7 @@ func (x *TrackPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackPermission.ProtoReflect.Descriptor instead. func (*TrackPermission) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{27} + return file_livekit_rtc_proto_rawDescGZIP(), []int{29} } func (x *TrackPermission) GetParticipantSid() string { @@ -2582,7 +2730,7 @@ type SubscriptionPermission struct { func (x *SubscriptionPermission) Reset() { *x = SubscriptionPermission{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[28] + mi := &file_livekit_rtc_proto_msgTypes[30] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2595,7 +2743,7 @@ func (x *SubscriptionPermission) String() string { func (*SubscriptionPermission) ProtoMessage() {} func (x *SubscriptionPermission) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[28] + mi := &file_livekit_rtc_proto_msgTypes[30] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2608,7 +2756,7 @@ func (x *SubscriptionPermission) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionPermission.ProtoReflect.Descriptor instead. func (*SubscriptionPermission) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{28} + return file_livekit_rtc_proto_rawDescGZIP(), []int{30} } func (x *SubscriptionPermission) GetAllParticipants() bool { @@ -2638,7 +2786,7 @@ type SubscriptionPermissionUpdate struct { func (x *SubscriptionPermissionUpdate) Reset() { *x = SubscriptionPermissionUpdate{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[29] + mi := &file_livekit_rtc_proto_msgTypes[31] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2651,7 +2799,7 @@ func (x *SubscriptionPermissionUpdate) String() string { func (*SubscriptionPermissionUpdate) ProtoMessage() {} func (x *SubscriptionPermissionUpdate) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[29] + mi := &file_livekit_rtc_proto_msgTypes[31] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2664,7 +2812,7 @@ func (x *SubscriptionPermissionUpdate) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionPermissionUpdate.ProtoReflect.Descriptor instead. func (*SubscriptionPermissionUpdate) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{29} + return file_livekit_rtc_proto_rawDescGZIP(), []int{31} } func (x *SubscriptionPermissionUpdate) GetParticipantSid() string { @@ -2706,7 +2854,7 @@ type SyncState struct { func (x *SyncState) Reset() { *x = SyncState{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[30] + mi := &file_livekit_rtc_proto_msgTypes[32] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2719,7 +2867,7 @@ func (x *SyncState) String() string { func (*SyncState) ProtoMessage() {} func (x *SyncState) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[30] + mi := &file_livekit_rtc_proto_msgTypes[32] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2732,7 +2880,7 @@ func (x *SyncState) ProtoReflect() protoreflect.Message { // Deprecated: Use SyncState.ProtoReflect.Descriptor instead. func (*SyncState) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{30} + return file_livekit_rtc_proto_rawDescGZIP(), []int{32} } func (x *SyncState) GetAnswer() *SessionDescription { @@ -2790,7 +2938,7 @@ type DataChannelInfo struct { func (x *DataChannelInfo) Reset() { *x = DataChannelInfo{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[31] + mi := &file_livekit_rtc_proto_msgTypes[33] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2803,7 +2951,7 @@ func (x *DataChannelInfo) String() string { func (*DataChannelInfo) ProtoMessage() {} func (x *DataChannelInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[31] + mi := &file_livekit_rtc_proto_msgTypes[33] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2816,7 +2964,7 @@ func (x *DataChannelInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use DataChannelInfo.ProtoReflect.Descriptor instead. func (*DataChannelInfo) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{31} + return file_livekit_rtc_proto_rawDescGZIP(), []int{33} } func (x *DataChannelInfo) GetLabel() string { @@ -2861,7 +3009,7 @@ type SimulateScenario struct { func (x *SimulateScenario) Reset() { *x = SimulateScenario{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[32] + mi := &file_livekit_rtc_proto_msgTypes[34] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2874,7 +3022,7 @@ func (x *SimulateScenario) String() string { func (*SimulateScenario) ProtoMessage() {} func (x *SimulateScenario) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[32] + mi := &file_livekit_rtc_proto_msgTypes[34] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2887,7 +3035,7 @@ func (x *SimulateScenario) ProtoReflect() protoreflect.Message { // Deprecated: Use SimulateScenario.ProtoReflect.Descriptor instead. func (*SimulateScenario) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{32} + return file_livekit_rtc_proto_rawDescGZIP(), []int{34} } func (m *SimulateScenario) GetScenario() isSimulateScenario_Scenario { @@ -3027,7 +3175,7 @@ type Ping struct { func (x *Ping) Reset() { *x = Ping{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[33] + mi := &file_livekit_rtc_proto_msgTypes[35] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3040,7 +3188,7 @@ func (x *Ping) String() string { func (*Ping) ProtoMessage() {} func (x *Ping) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[33] + mi := &file_livekit_rtc_proto_msgTypes[35] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3053,7 +3201,7 @@ func (x *Ping) ProtoReflect() protoreflect.Message { // Deprecated: Use Ping.ProtoReflect.Descriptor instead. func (*Ping) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{33} + return file_livekit_rtc_proto_rawDescGZIP(), []int{35} } func (x *Ping) GetTimestamp() int64 { @@ -3083,7 +3231,7 @@ type Pong struct { func (x *Pong) Reset() { *x = Pong{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[34] + mi := &file_livekit_rtc_proto_msgTypes[36] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3096,7 +3244,7 @@ func (x *Pong) String() string { func (*Pong) ProtoMessage() {} func (x *Pong) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[34] + mi := &file_livekit_rtc_proto_msgTypes[36] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3109,7 +3257,7 @@ func (x *Pong) ProtoReflect() protoreflect.Message { // Deprecated: Use Pong.ProtoReflect.Descriptor instead. func (*Pong) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{34} + return file_livekit_rtc_proto_rawDescGZIP(), []int{36} } func (x *Pong) GetLastPingTimestamp() int64 { @@ -3137,7 +3285,7 @@ type RegionSettings struct { func (x *RegionSettings) Reset() { *x = RegionSettings{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[35] + mi := &file_livekit_rtc_proto_msgTypes[37] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3150,7 +3298,7 @@ func (x *RegionSettings) String() string { func (*RegionSettings) ProtoMessage() {} func (x *RegionSettings) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[35] + mi := &file_livekit_rtc_proto_msgTypes[37] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3163,7 +3311,7 @@ func (x *RegionSettings) ProtoReflect() protoreflect.Message { // Deprecated: Use RegionSettings.ProtoReflect.Descriptor instead. func (*RegionSettings) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{35} + return file_livekit_rtc_proto_rawDescGZIP(), []int{37} } func (x *RegionSettings) GetRegions() []*RegionInfo { @@ -3186,7 +3334,7 @@ type RegionInfo struct { func (x *RegionInfo) Reset() { *x = RegionInfo{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[36] + mi := &file_livekit_rtc_proto_msgTypes[38] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3199,7 +3347,7 @@ func (x *RegionInfo) String() string { func (*RegionInfo) ProtoMessage() {} func (x *RegionInfo) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[36] + mi := &file_livekit_rtc_proto_msgTypes[38] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3212,7 +3360,7 @@ func (x *RegionInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use RegionInfo.ProtoReflect.Descriptor instead. func (*RegionInfo) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{36} + return file_livekit_rtc_proto_rawDescGZIP(), []int{38} } func (x *RegionInfo) GetRegion() string { @@ -3248,7 +3396,7 @@ type SubscriptionResponse struct { func (x *SubscriptionResponse) Reset() { *x = SubscriptionResponse{} if protoimpl.UnsafeEnabled { - mi := &file_livekit_rtc_proto_msgTypes[37] + mi := &file_livekit_rtc_proto_msgTypes[39] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -3261,7 +3409,7 @@ func (x *SubscriptionResponse) String() string { func (*SubscriptionResponse) ProtoMessage() {} func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message { - mi := &file_livekit_rtc_proto_msgTypes[37] + mi := &file_livekit_rtc_proto_msgTypes[39] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -3274,7 +3422,7 @@ func (x *SubscriptionResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriptionResponse.ProtoReflect.Descriptor instead. func (*SubscriptionResponse) Descriptor() ([]byte, []int) { - return file_livekit_rtc_proto_rawDescGZIP(), []int{37} + return file_livekit_rtc_proto_rawDescGZIP(), []int{39} } func (x *SubscriptionResponse) GetTrackSid() string { @@ -3297,7 +3445,7 @@ var file_livekit_rtc_proto_rawDesc = []byte{ 0x0a, 0x11, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x72, 0x74, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x1a, 0x14, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xfa, 0x06, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, + 0x74, 0x6f, 0x22, 0x9a, 0x08, 0x0a, 0x0d, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x33, 0x0a, 0x05, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, @@ -3352,7 +3500,17 @@ var file_livekit_rtc_proto_rawDesc = []byte{ 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x2a, 0x0a, 0x08, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x65, 0x71, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x50, 0x69, 0x6e, 0x67, 0x48, 0x00, 0x52, 0x07, 0x70, 0x69, 0x6e, - 0x67, 0x52, 0x65, 0x71, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x67, 0x52, 0x65, 0x71, 0x12, 0x4e, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x61, + 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, + 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x12, 0x4e, 0x0a, 0x12, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x18, 0x12, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, + 0x48, 0x00, 0x52, 0x10, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x42, 0x09, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x89, 0x0a, 0x0a, 0x0e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2b, 0x0a, 0x04, 0x6a, 0x6f, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, @@ -3571,225 +3729,238 @@ var file_livekit_rtc_proto_rawDesc = []byte{ 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x70, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x66, 0x70, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x84, 0x02, 0x0a, 0x0c, 0x4c, 0x65, 0x61, 0x76, 0x65, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6e, 0x5f, 0x72, - 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, - 0x63, 0x61, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x31, 0x0a, 0x06, - 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x6c, - 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, - 0x34, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, - 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x52, - 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x33, 0x0a, 0x06, 0x41, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x0d, - 0x0a, 0x09, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x02, 0x22, 0x5d, 0x0a, - 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, - 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, - 0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, - 0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x4b, 0x0a, 0x19, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x09, 0x49, 0x43, 0x45, - 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, - 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, 0x65, 0x6e, - 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, 0x65, 0x64, - 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, - 0x72, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x73, 0x70, 0x65, - 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x08, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, 0x0a, 0x52, - 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x72, 0x6f, 0x6f, - 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x22, 0x8c, 0x01, 0x0a, - 0x15, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x22, 0x6c, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, + 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x36, 0x0a, 0x08, + 0x66, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x1a, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x54, 0x72, + 0x61, 0x63, 0x6b, 0x46, 0x65, 0x61, 0x74, 0x75, 0x72, 0x65, 0x52, 0x08, 0x66, 0x65, 0x61, 0x74, + 0x75, 0x72, 0x65, 0x73, 0x22, 0x62, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4c, 0x6f, + 0x63, 0x61, 0x6c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x12, 0x1b, 0x0a, + 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x77, 0x69, 0x64, 0x74, 0x68, + 0x12, 0x16, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, + 0x52, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x22, 0x84, 0x02, 0x0a, 0x0c, 0x4c, 0x65, 0x61, + 0x76, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x61, 0x6e, + 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0c, 0x63, 0x61, 0x6e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x31, + 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, + 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, + 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x1c, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x76, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x2e, 0x41, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x06, 0x61, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x31, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x73, 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x33, 0x0a, 0x06, 0x41, 0x63, + 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x0a, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, + 0x43, 0x54, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, 0x45, 0x53, 0x55, 0x4d, 0x45, 0x10, 0x01, + 0x12, 0x0d, 0x0a, 0x09, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x02, 0x22, + 0x5d, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, + 0x64, 0x12, 0x2b, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x22, 0x4b, + 0x0a, 0x19, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1a, 0x0a, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x6d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x5b, 0x0a, 0x09, 0x49, + 0x43, 0x45, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x75, 0x72, 0x6c, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x75, 0x72, 0x6c, 0x73, 0x12, 0x1a, 0x0a, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x64, + 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x63, 0x72, + 0x65, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x61, 0x6c, 0x22, 0x43, 0x0a, 0x0f, 0x53, 0x70, 0x65, 0x61, + 0x6b, 0x65, 0x72, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x08, 0x73, + 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x49, + 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x73, 0x22, 0x2f, 0x0a, + 0x0a, 0x52, 0x6f, 0x6f, 0x6d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x04, 0x72, + 0x6f, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x6f, 0x6f, 0x6d, 0x52, 0x04, 0x72, 0x6f, 0x6f, 0x6d, 0x22, 0x8c, + 0x01, 0x0a, 0x15, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, + 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, + 0x64, 0x12, 0x34, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x07, + 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x53, 0x0a, + 0x17, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, + 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, + 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x12, - 0x34, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x07, 0x71, 0x75, - 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x73, 0x63, 0x6f, 0x72, 0x65, 0x22, 0x53, 0x0a, 0x17, 0x43, - 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, - 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x22, 0x83, 0x01, 0x0a, 0x0f, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, - 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x12, 0x1b, 0x0a, - 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x05, 0x73, 0x74, - 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x52, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, 0x0d, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x11, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, - 0x2f, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x61, 0x0a, 0x0f, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x14, 0x0a, - 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x63, 0x6f, - 0x64, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, + 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x2a, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x52, 0x0a, 0x11, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x3d, 0x0a, + 0x0d, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x5e, 0x0a, 0x11, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, + 0x79, 0x12, 0x2f, 0x0a, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x61, 0x0a, 0x0f, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, + 0x14, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, + 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x38, 0x0a, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, + 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, + 0x6c, 0x69, 0x74, 0x79, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, + 0xcc, 0x01, 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x73, + 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, - 0x74, 0x79, 0x52, 0x09, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x22, 0xcc, 0x01, - 0x0a, 0x17, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, - 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, - 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x4d, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x64, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x52, 0x13, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x10, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x22, 0xab, 0x01, 0x0a, - 0x0f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, - 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, 0x6c, 0x6c, - 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x61, - 0x6c, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, - 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x74, 0x72, - 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x8a, 0x01, 0x0a, 0x16, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x5f, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0f, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, - 0x12, 0x45, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, - 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x64, - 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, 0x18, 0x0a, - 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, - 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0xeb, 0x02, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, - 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, - 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, - 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, 0x73, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x73, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, 0x0e, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, 0x72, 0x61, - 0x63, 0x6b, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, 0x61, 0x6e, - 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, - 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, - 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, - 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x05, - 0x6f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, - 0x69, 0x64, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x73, 0x44, 0x69, 0x73, - 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x66, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x43, 0x68, 0x61, - 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, - 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2d, - 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, - 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, 0xd8, 0x03, - 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x63, 0x65, 0x6e, 0x61, 0x72, - 0x69, 0x6f, 0x12, 0x27, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, 0x73, 0x70, - 0x65, 0x61, 0x6b, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, 0x0c, 0x6e, - 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, - 0x12, 0x1e, 0x0a, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x61, 0x76, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x58, 0x0a, 0x19, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x5f, - 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, - 0x69, 0x74, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, 0x43, 0x61, - 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, - 0x33, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x62, 0x61, - 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, - 0x13, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, 0x64, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x12, 0x3f, 0x0a, 0x1b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, 0x73, - 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x64, 0x69, 0x73, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4f, 0x6e, 0x52, - 0x65, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x27, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, - 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x22, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4f, 0x6e, 0x52, 0x65, 0x73, 0x75, - 0x6d, 0x65, 0x4e, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, - 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x22, 0x36, 0x0a, 0x04, 0x50, 0x69, 0x6e, 0x67, - 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x10, - 0x0a, 0x03, 0x72, 0x74, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x72, 0x74, 0x74, - 0x22, 0x54, 0x0a, 0x04, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, 0x73, 0x74, - 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, 0x67, 0x54, - 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, - 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, - 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x65, 0x67, 0x69, - 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, 0x76, 0x65, - 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x07, - 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x52, 0x0a, 0x0a, 0x52, 0x65, 0x67, 0x69, 0x6f, - 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, - 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, - 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x61, 0x0a, 0x14, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, - 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, - 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x03, 0x65, 0x72, 0x72, 0x2a, 0x2d, - 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x0d, - 0x0a, 0x09, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, 0x0e, 0x0a, - 0x0a, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x25, 0x0a, - 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, 0x0a, 0x06, - 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, 0x55, 0x53, - 0x45, 0x44, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x11, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, - 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, - 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, - 0x4c, 0x53, 0x10, 0x02, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, 0x4c, 0x69, - 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, 0x4c, 0x69, - 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x79, 0x52, 0x13, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x51, 0x75, + 0x61, 0x6c, 0x69, 0x74, 0x69, 0x65, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x64, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x10, 0x73, 0x75, + 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x64, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x73, 0x22, 0xab, + 0x01, 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, 0x69, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x61, + 0x6c, 0x6c, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, + 0x09, 0x61, 0x6c, 0x6c, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x1d, 0x0a, 0x0a, 0x74, 0x72, + 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, + 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x73, 0x12, 0x31, 0x0a, 0x14, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, + 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x13, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x49, 0x64, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x22, 0x8a, 0x01, 0x0a, + 0x16, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x10, 0x61, 0x6c, 0x6c, 0x5f, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x0f, 0x61, 0x6c, 0x6c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x73, 0x12, 0x45, 0x0a, 0x11, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x70, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, + 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x10, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x7e, 0x0a, 0x1c, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x73, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x0e, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x53, + 0x69, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x12, + 0x18, 0x0a, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x07, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x22, 0xeb, 0x02, 0x0a, 0x09, 0x53, 0x79, + 0x6e, 0x63, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x33, 0x0a, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, + 0x74, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x06, 0x61, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x3f, 0x0a, 0x0c, + 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, + 0x0c, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x46, 0x0a, + 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x52, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x54, + 0x72, 0x61, 0x63, 0x6b, 0x73, 0x12, 0x3d, 0x0a, 0x0d, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x63, 0x68, + 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x6c, + 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x44, 0x61, 0x74, 0x61, 0x43, 0x68, 0x61, 0x6e, 0x6e, + 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x0c, 0x64, 0x61, 0x74, 0x61, 0x43, 0x68, 0x61, 0x6e, + 0x6e, 0x65, 0x6c, 0x73, 0x12, 0x31, 0x0a, 0x05, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x65, + 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x52, 0x05, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x2e, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x5f, 0x73, 0x69, 0x64, 0x73, 0x5f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x06, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x11, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x69, 0x64, 0x73, 0x44, + 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x22, 0x66, 0x0a, 0x0f, 0x44, 0x61, 0x74, 0x61, 0x43, + 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x61, + 0x62, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, + 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x69, 0x64, + 0x12, 0x2d, 0x0a, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x15, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x06, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x22, + 0xd8, 0x03, 0x0a, 0x10, 0x53, 0x69, 0x6d, 0x75, 0x6c, 0x61, 0x74, 0x65, 0x53, 0x63, 0x65, 0x6e, + 0x61, 0x72, 0x69, 0x6f, 0x12, 0x27, 0x0a, 0x0e, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x5f, + 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x48, 0x00, 0x52, 0x0d, + 0x73, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x23, 0x0a, + 0x0c, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x46, 0x61, 0x69, 0x6c, 0x75, + 0x72, 0x65, 0x12, 0x1e, 0x0a, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x61, + 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x0b, 0x73, 0x65, 0x72, 0x76, + 0x65, 0x72, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x12, 0x58, 0x0a, 0x19, 0x73, 0x77, 0x69, 0x74, 0x63, + 0x68, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1a, 0x2e, 0x6c, 0x69, 0x76, + 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, + 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x48, 0x00, 0x52, 0x17, 0x73, 0x77, 0x69, 0x74, 0x63, 0x68, + 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, + 0x6c, 0x12, 0x33, 0x0a, 0x14, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, + 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x48, + 0x00, 0x52, 0x13, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x42, 0x61, 0x6e, + 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x12, 0x3f, 0x0a, 0x1b, 0x64, 0x69, 0x73, 0x63, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, 0x72, + 0x65, 0x73, 0x75, 0x6d, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x18, 0x64, + 0x69, 0x73, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4f, + 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x12, 0x55, 0x0a, 0x27, 0x64, 0x69, 0x73, 0x63, 0x6f, + 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x6f, 0x6e, 0x5f, + 0x72, 0x65, 0x73, 0x75, 0x6d, 0x65, 0x5f, 0x6e, 0x6f, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, + 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x22, 0x64, 0x69, 0x73, 0x63, + 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x4f, 0x6e, 0x52, 0x65, + 0x73, 0x75, 0x6d, 0x65, 0x4e, 0x6f, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x73, 0x42, 0x0a, + 0x0a, 0x08, 0x73, 0x63, 0x65, 0x6e, 0x61, 0x72, 0x69, 0x6f, 0x22, 0x36, 0x0a, 0x04, 0x50, 0x69, + 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, + 0x12, 0x10, 0x0a, 0x03, 0x72, 0x74, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x72, + 0x74, 0x74, 0x22, 0x54, 0x0a, 0x04, 0x50, 0x6f, 0x6e, 0x67, 0x12, 0x2e, 0x0a, 0x13, 0x6c, 0x61, + 0x73, 0x74, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x50, 0x69, 0x6e, + 0x67, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x69, + 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x22, 0x3f, 0x0a, 0x0e, 0x52, 0x65, 0x67, 0x69, + 0x6f, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x2d, 0x0a, 0x07, 0x72, 0x65, + 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x13, 0x2e, 0x6c, 0x69, + 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x52, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x07, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x52, 0x0a, 0x0a, 0x52, 0x65, 0x67, + 0x69, 0x6f, 0x6e, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x12, + 0x10, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, + 0x6c, 0x12, 0x1a, 0x0a, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x08, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x22, 0x61, 0x0a, + 0x14, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x73, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x53, + 0x69, 0x64, 0x12, 0x2c, 0x0a, 0x03, 0x65, 0x72, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x1a, 0x2e, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2e, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x03, 0x65, 0x72, 0x72, + 0x2a, 0x2d, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, + 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x52, 0x10, 0x00, 0x12, + 0x0e, 0x0a, 0x0a, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x52, 0x10, 0x01, 0x2a, + 0x25, 0x0a, 0x0b, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x0a, + 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x50, 0x41, + 0x55, 0x53, 0x45, 0x44, 0x10, 0x01, 0x2a, 0x2e, 0x0a, 0x11, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, + 0x61, 0x74, 0x65, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x55, + 0x44, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x01, 0x12, 0x07, 0x0a, + 0x03, 0x54, 0x4c, 0x53, 0x10, 0x02, 0x42, 0x46, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0x2f, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x6c, 0x69, 0x76, 0x65, 0x6b, 0x69, 0x74, 0xaa, 0x02, 0x0d, + 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0xea, 0x02, 0x0e, + 0x4c, 0x69, 0x76, 0x65, 0x4b, 0x69, 0x74, 0x3a, 0x3a, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3805,7 +3976,7 @@ func file_livekit_rtc_proto_rawDescGZIP() []byte { } var file_livekit_rtc_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_livekit_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 38) +var file_livekit_rtc_proto_msgTypes = make([]protoimpl.MessageInfo, 40) var file_livekit_rtc_proto_goTypes = []interface{}{ (SignalTarget)(0), // 0: livekit.SignalTarget (StreamState)(0), // 1: livekit.StreamState @@ -3825,45 +3996,48 @@ var file_livekit_rtc_proto_goTypes = []interface{}{ (*ParticipantUpdate)(nil), // 15: livekit.ParticipantUpdate (*UpdateSubscription)(nil), // 16: livekit.UpdateSubscription (*UpdateTrackSettings)(nil), // 17: livekit.UpdateTrackSettings - (*LeaveRequest)(nil), // 18: livekit.LeaveRequest - (*UpdateVideoLayers)(nil), // 19: livekit.UpdateVideoLayers - (*UpdateParticipantMetadata)(nil), // 20: livekit.UpdateParticipantMetadata - (*ICEServer)(nil), // 21: livekit.ICEServer - (*SpeakersChanged)(nil), // 22: livekit.SpeakersChanged - (*RoomUpdate)(nil), // 23: livekit.RoomUpdate - (*ConnectionQualityInfo)(nil), // 24: livekit.ConnectionQualityInfo - (*ConnectionQualityUpdate)(nil), // 25: livekit.ConnectionQualityUpdate - (*StreamStateInfo)(nil), // 26: livekit.StreamStateInfo - (*StreamStateUpdate)(nil), // 27: livekit.StreamStateUpdate - (*SubscribedQuality)(nil), // 28: livekit.SubscribedQuality - (*SubscribedCodec)(nil), // 29: livekit.SubscribedCodec - (*SubscribedQualityUpdate)(nil), // 30: livekit.SubscribedQualityUpdate - (*TrackPermission)(nil), // 31: livekit.TrackPermission - (*SubscriptionPermission)(nil), // 32: livekit.SubscriptionPermission - (*SubscriptionPermissionUpdate)(nil), // 33: livekit.SubscriptionPermissionUpdate - (*SyncState)(nil), // 34: livekit.SyncState - (*DataChannelInfo)(nil), // 35: livekit.DataChannelInfo - (*SimulateScenario)(nil), // 36: livekit.SimulateScenario - (*Ping)(nil), // 37: livekit.Ping - (*Pong)(nil), // 38: livekit.Pong - (*RegionSettings)(nil), // 39: livekit.RegionSettings - (*RegionInfo)(nil), // 40: livekit.RegionInfo - (*SubscriptionResponse)(nil), // 41: livekit.SubscriptionResponse - (TrackType)(0), // 42: livekit.TrackType - (TrackSource)(0), // 43: livekit.TrackSource - (*VideoLayer)(nil), // 44: livekit.VideoLayer - (Encryption_Type)(0), // 45: livekit.Encryption.Type - (*Room)(nil), // 46: livekit.Room - (*ParticipantInfo)(nil), // 47: livekit.ParticipantInfo - (*ClientConfiguration)(nil), // 48: livekit.ClientConfiguration - (*ServerInfo)(nil), // 49: livekit.ServerInfo - (*TrackInfo)(nil), // 50: livekit.TrackInfo - (*ParticipantTracks)(nil), // 51: livekit.ParticipantTracks - (VideoQuality)(0), // 52: livekit.VideoQuality - (DisconnectReason)(0), // 53: livekit.DisconnectReason - (*SpeakerInfo)(nil), // 54: livekit.SpeakerInfo - (ConnectionQuality)(0), // 55: livekit.ConnectionQuality - (SubscriptionError)(0), // 56: livekit.SubscriptionError + (*UpdateLocalAudioTrack)(nil), // 18: livekit.UpdateLocalAudioTrack + (*UpdateLocalVideoTrack)(nil), // 19: livekit.UpdateLocalVideoTrack + (*LeaveRequest)(nil), // 20: livekit.LeaveRequest + (*UpdateVideoLayers)(nil), // 21: livekit.UpdateVideoLayers + (*UpdateParticipantMetadata)(nil), // 22: livekit.UpdateParticipantMetadata + (*ICEServer)(nil), // 23: livekit.ICEServer + (*SpeakersChanged)(nil), // 24: livekit.SpeakersChanged + (*RoomUpdate)(nil), // 25: livekit.RoomUpdate + (*ConnectionQualityInfo)(nil), // 26: livekit.ConnectionQualityInfo + (*ConnectionQualityUpdate)(nil), // 27: livekit.ConnectionQualityUpdate + (*StreamStateInfo)(nil), // 28: livekit.StreamStateInfo + (*StreamStateUpdate)(nil), // 29: livekit.StreamStateUpdate + (*SubscribedQuality)(nil), // 30: livekit.SubscribedQuality + (*SubscribedCodec)(nil), // 31: livekit.SubscribedCodec + (*SubscribedQualityUpdate)(nil), // 32: livekit.SubscribedQualityUpdate + (*TrackPermission)(nil), // 33: livekit.TrackPermission + (*SubscriptionPermission)(nil), // 34: livekit.SubscriptionPermission + (*SubscriptionPermissionUpdate)(nil), // 35: livekit.SubscriptionPermissionUpdate + (*SyncState)(nil), // 36: livekit.SyncState + (*DataChannelInfo)(nil), // 37: livekit.DataChannelInfo + (*SimulateScenario)(nil), // 38: livekit.SimulateScenario + (*Ping)(nil), // 39: livekit.Ping + (*Pong)(nil), // 40: livekit.Pong + (*RegionSettings)(nil), // 41: livekit.RegionSettings + (*RegionInfo)(nil), // 42: livekit.RegionInfo + (*SubscriptionResponse)(nil), // 43: livekit.SubscriptionResponse + (TrackType)(0), // 44: livekit.TrackType + (TrackSource)(0), // 45: livekit.TrackSource + (*VideoLayer)(nil), // 46: livekit.VideoLayer + (Encryption_Type)(0), // 47: livekit.Encryption.Type + (*Room)(nil), // 48: livekit.Room + (*ParticipantInfo)(nil), // 49: livekit.ParticipantInfo + (*ClientConfiguration)(nil), // 50: livekit.ClientConfiguration + (*ServerInfo)(nil), // 51: livekit.ServerInfo + (*TrackInfo)(nil), // 52: livekit.TrackInfo + (*ParticipantTracks)(nil), // 53: livekit.ParticipantTracks + (VideoQuality)(0), // 54: livekit.VideoQuality + (AudioTrackFeature)(0), // 55: livekit.AudioTrackFeature + (DisconnectReason)(0), // 56: livekit.DisconnectReason + (*SpeakerInfo)(nil), // 57: livekit.SpeakerInfo + (ConnectionQuality)(0), // 58: livekit.ConnectionQuality + (SubscriptionError)(0), // 59: livekit.SubscriptionError } var file_livekit_rtc_proto_depIdxs = []int32{ 14, // 0: livekit.SignalRequest.offer:type_name -> livekit.SessionDescription @@ -3873,78 +4047,81 @@ var file_livekit_rtc_proto_depIdxs = []int32{ 9, // 4: livekit.SignalRequest.mute:type_name -> livekit.MuteTrackRequest 16, // 5: livekit.SignalRequest.subscription:type_name -> livekit.UpdateSubscription 17, // 6: livekit.SignalRequest.track_setting:type_name -> livekit.UpdateTrackSettings - 18, // 7: livekit.SignalRequest.leave:type_name -> livekit.LeaveRequest - 19, // 8: livekit.SignalRequest.update_layers:type_name -> livekit.UpdateVideoLayers - 32, // 9: livekit.SignalRequest.subscription_permission:type_name -> livekit.SubscriptionPermission - 34, // 10: livekit.SignalRequest.sync_state:type_name -> livekit.SyncState - 36, // 11: livekit.SignalRequest.simulate:type_name -> livekit.SimulateScenario - 20, // 12: livekit.SignalRequest.update_metadata:type_name -> livekit.UpdateParticipantMetadata - 37, // 13: livekit.SignalRequest.ping_req:type_name -> livekit.Ping - 10, // 14: livekit.SignalResponse.join:type_name -> livekit.JoinResponse - 14, // 15: livekit.SignalResponse.answer:type_name -> livekit.SessionDescription - 14, // 16: livekit.SignalResponse.offer:type_name -> livekit.SessionDescription - 8, // 17: livekit.SignalResponse.trickle:type_name -> livekit.TrickleRequest - 15, // 18: livekit.SignalResponse.update:type_name -> livekit.ParticipantUpdate - 12, // 19: livekit.SignalResponse.track_published:type_name -> livekit.TrackPublishedResponse - 18, // 20: livekit.SignalResponse.leave:type_name -> livekit.LeaveRequest - 9, // 21: livekit.SignalResponse.mute:type_name -> livekit.MuteTrackRequest - 22, // 22: livekit.SignalResponse.speakers_changed:type_name -> livekit.SpeakersChanged - 23, // 23: livekit.SignalResponse.room_update:type_name -> livekit.RoomUpdate - 25, // 24: livekit.SignalResponse.connection_quality:type_name -> livekit.ConnectionQualityUpdate - 27, // 25: livekit.SignalResponse.stream_state_update:type_name -> livekit.StreamStateUpdate - 30, // 26: livekit.SignalResponse.subscribed_quality_update:type_name -> livekit.SubscribedQualityUpdate - 33, // 27: livekit.SignalResponse.subscription_permission_update:type_name -> livekit.SubscriptionPermissionUpdate - 13, // 28: livekit.SignalResponse.track_unpublished:type_name -> livekit.TrackUnpublishedResponse - 11, // 29: livekit.SignalResponse.reconnect:type_name -> livekit.ReconnectResponse - 38, // 30: livekit.SignalResponse.pong_resp:type_name -> livekit.Pong - 41, // 31: livekit.SignalResponse.subscription_response:type_name -> livekit.SubscriptionResponse - 42, // 32: livekit.AddTrackRequest.type:type_name -> livekit.TrackType - 43, // 33: livekit.AddTrackRequest.source:type_name -> livekit.TrackSource - 44, // 34: livekit.AddTrackRequest.layers:type_name -> livekit.VideoLayer - 6, // 35: livekit.AddTrackRequest.simulcast_codecs:type_name -> livekit.SimulcastCodec - 45, // 36: livekit.AddTrackRequest.encryption:type_name -> livekit.Encryption.Type - 0, // 37: livekit.TrickleRequest.target:type_name -> livekit.SignalTarget - 46, // 38: livekit.JoinResponse.room:type_name -> livekit.Room - 47, // 39: livekit.JoinResponse.participant:type_name -> livekit.ParticipantInfo - 47, // 40: livekit.JoinResponse.other_participants:type_name -> livekit.ParticipantInfo - 21, // 41: livekit.JoinResponse.ice_servers:type_name -> livekit.ICEServer - 48, // 42: livekit.JoinResponse.client_configuration:type_name -> livekit.ClientConfiguration - 49, // 43: livekit.JoinResponse.server_info:type_name -> livekit.ServerInfo - 21, // 44: livekit.ReconnectResponse.ice_servers:type_name -> livekit.ICEServer - 48, // 45: livekit.ReconnectResponse.client_configuration:type_name -> livekit.ClientConfiguration - 50, // 46: livekit.TrackPublishedResponse.track:type_name -> livekit.TrackInfo - 47, // 47: livekit.ParticipantUpdate.participants:type_name -> livekit.ParticipantInfo - 51, // 48: livekit.UpdateSubscription.participant_tracks:type_name -> livekit.ParticipantTracks - 52, // 49: livekit.UpdateTrackSettings.quality:type_name -> livekit.VideoQuality - 53, // 50: livekit.LeaveRequest.reason:type_name -> livekit.DisconnectReason - 3, // 51: livekit.LeaveRequest.action:type_name -> livekit.LeaveRequest.Action - 39, // 52: livekit.LeaveRequest.regions:type_name -> livekit.RegionSettings - 44, // 53: livekit.UpdateVideoLayers.layers:type_name -> livekit.VideoLayer - 54, // 54: livekit.SpeakersChanged.speakers:type_name -> livekit.SpeakerInfo - 46, // 55: livekit.RoomUpdate.room:type_name -> livekit.Room - 55, // 56: livekit.ConnectionQualityInfo.quality:type_name -> livekit.ConnectionQuality - 24, // 57: livekit.ConnectionQualityUpdate.updates:type_name -> livekit.ConnectionQualityInfo - 1, // 58: livekit.StreamStateInfo.state:type_name -> livekit.StreamState - 26, // 59: livekit.StreamStateUpdate.stream_states:type_name -> livekit.StreamStateInfo - 52, // 60: livekit.SubscribedQuality.quality:type_name -> livekit.VideoQuality - 28, // 61: livekit.SubscribedCodec.qualities:type_name -> livekit.SubscribedQuality - 28, // 62: livekit.SubscribedQualityUpdate.subscribed_qualities:type_name -> livekit.SubscribedQuality - 29, // 63: livekit.SubscribedQualityUpdate.subscribed_codecs:type_name -> livekit.SubscribedCodec - 31, // 64: livekit.SubscriptionPermission.track_permissions:type_name -> livekit.TrackPermission - 14, // 65: livekit.SyncState.answer:type_name -> livekit.SessionDescription - 16, // 66: livekit.SyncState.subscription:type_name -> livekit.UpdateSubscription - 12, // 67: livekit.SyncState.publish_tracks:type_name -> livekit.TrackPublishedResponse - 35, // 68: livekit.SyncState.data_channels:type_name -> livekit.DataChannelInfo - 14, // 69: livekit.SyncState.offer:type_name -> livekit.SessionDescription - 0, // 70: livekit.DataChannelInfo.target:type_name -> livekit.SignalTarget - 2, // 71: livekit.SimulateScenario.switch_candidate_protocol:type_name -> livekit.CandidateProtocol - 40, // 72: livekit.RegionSettings.regions:type_name -> livekit.RegionInfo - 56, // 73: livekit.SubscriptionResponse.err:type_name -> livekit.SubscriptionError - 74, // [74:74] is the sub-list for method output_type - 74, // [74:74] is the sub-list for method input_type - 74, // [74:74] is the sub-list for extension type_name - 74, // [74:74] is the sub-list for extension extendee - 0, // [0:74] is the sub-list for field type_name + 20, // 7: livekit.SignalRequest.leave:type_name -> livekit.LeaveRequest + 21, // 8: livekit.SignalRequest.update_layers:type_name -> livekit.UpdateVideoLayers + 34, // 9: livekit.SignalRequest.subscription_permission:type_name -> livekit.SubscriptionPermission + 36, // 10: livekit.SignalRequest.sync_state:type_name -> livekit.SyncState + 38, // 11: livekit.SignalRequest.simulate:type_name -> livekit.SimulateScenario + 22, // 12: livekit.SignalRequest.update_metadata:type_name -> livekit.UpdateParticipantMetadata + 39, // 13: livekit.SignalRequest.ping_req:type_name -> livekit.Ping + 18, // 14: livekit.SignalRequest.update_audio_track:type_name -> livekit.UpdateLocalAudioTrack + 19, // 15: livekit.SignalRequest.update_video_track:type_name -> livekit.UpdateLocalVideoTrack + 10, // 16: livekit.SignalResponse.join:type_name -> livekit.JoinResponse + 14, // 17: livekit.SignalResponse.answer:type_name -> livekit.SessionDescription + 14, // 18: livekit.SignalResponse.offer:type_name -> livekit.SessionDescription + 8, // 19: livekit.SignalResponse.trickle:type_name -> livekit.TrickleRequest + 15, // 20: livekit.SignalResponse.update:type_name -> livekit.ParticipantUpdate + 12, // 21: livekit.SignalResponse.track_published:type_name -> livekit.TrackPublishedResponse + 20, // 22: livekit.SignalResponse.leave:type_name -> livekit.LeaveRequest + 9, // 23: livekit.SignalResponse.mute:type_name -> livekit.MuteTrackRequest + 24, // 24: livekit.SignalResponse.speakers_changed:type_name -> livekit.SpeakersChanged + 25, // 25: livekit.SignalResponse.room_update:type_name -> livekit.RoomUpdate + 27, // 26: livekit.SignalResponse.connection_quality:type_name -> livekit.ConnectionQualityUpdate + 29, // 27: livekit.SignalResponse.stream_state_update:type_name -> livekit.StreamStateUpdate + 32, // 28: livekit.SignalResponse.subscribed_quality_update:type_name -> livekit.SubscribedQualityUpdate + 35, // 29: livekit.SignalResponse.subscription_permission_update:type_name -> livekit.SubscriptionPermissionUpdate + 13, // 30: livekit.SignalResponse.track_unpublished:type_name -> livekit.TrackUnpublishedResponse + 11, // 31: livekit.SignalResponse.reconnect:type_name -> livekit.ReconnectResponse + 40, // 32: livekit.SignalResponse.pong_resp:type_name -> livekit.Pong + 43, // 33: livekit.SignalResponse.subscription_response:type_name -> livekit.SubscriptionResponse + 44, // 34: livekit.AddTrackRequest.type:type_name -> livekit.TrackType + 45, // 35: livekit.AddTrackRequest.source:type_name -> livekit.TrackSource + 46, // 36: livekit.AddTrackRequest.layers:type_name -> livekit.VideoLayer + 6, // 37: livekit.AddTrackRequest.simulcast_codecs:type_name -> livekit.SimulcastCodec + 47, // 38: livekit.AddTrackRequest.encryption:type_name -> livekit.Encryption.Type + 0, // 39: livekit.TrickleRequest.target:type_name -> livekit.SignalTarget + 48, // 40: livekit.JoinResponse.room:type_name -> livekit.Room + 49, // 41: livekit.JoinResponse.participant:type_name -> livekit.ParticipantInfo + 49, // 42: livekit.JoinResponse.other_participants:type_name -> livekit.ParticipantInfo + 23, // 43: livekit.JoinResponse.ice_servers:type_name -> livekit.ICEServer + 50, // 44: livekit.JoinResponse.client_configuration:type_name -> livekit.ClientConfiguration + 51, // 45: livekit.JoinResponse.server_info:type_name -> livekit.ServerInfo + 23, // 46: livekit.ReconnectResponse.ice_servers:type_name -> livekit.ICEServer + 50, // 47: livekit.ReconnectResponse.client_configuration:type_name -> livekit.ClientConfiguration + 52, // 48: livekit.TrackPublishedResponse.track:type_name -> livekit.TrackInfo + 49, // 49: livekit.ParticipantUpdate.participants:type_name -> livekit.ParticipantInfo + 53, // 50: livekit.UpdateSubscription.participant_tracks:type_name -> livekit.ParticipantTracks + 54, // 51: livekit.UpdateTrackSettings.quality:type_name -> livekit.VideoQuality + 55, // 52: livekit.UpdateLocalAudioTrack.features:type_name -> livekit.AudioTrackFeature + 56, // 53: livekit.LeaveRequest.reason:type_name -> livekit.DisconnectReason + 3, // 54: livekit.LeaveRequest.action:type_name -> livekit.LeaveRequest.Action + 41, // 55: livekit.LeaveRequest.regions:type_name -> livekit.RegionSettings + 46, // 56: livekit.UpdateVideoLayers.layers:type_name -> livekit.VideoLayer + 57, // 57: livekit.SpeakersChanged.speakers:type_name -> livekit.SpeakerInfo + 48, // 58: livekit.RoomUpdate.room:type_name -> livekit.Room + 58, // 59: livekit.ConnectionQualityInfo.quality:type_name -> livekit.ConnectionQuality + 26, // 60: livekit.ConnectionQualityUpdate.updates:type_name -> livekit.ConnectionQualityInfo + 1, // 61: livekit.StreamStateInfo.state:type_name -> livekit.StreamState + 28, // 62: livekit.StreamStateUpdate.stream_states:type_name -> livekit.StreamStateInfo + 54, // 63: livekit.SubscribedQuality.quality:type_name -> livekit.VideoQuality + 30, // 64: livekit.SubscribedCodec.qualities:type_name -> livekit.SubscribedQuality + 30, // 65: livekit.SubscribedQualityUpdate.subscribed_qualities:type_name -> livekit.SubscribedQuality + 31, // 66: livekit.SubscribedQualityUpdate.subscribed_codecs:type_name -> livekit.SubscribedCodec + 33, // 67: livekit.SubscriptionPermission.track_permissions:type_name -> livekit.TrackPermission + 14, // 68: livekit.SyncState.answer:type_name -> livekit.SessionDescription + 16, // 69: livekit.SyncState.subscription:type_name -> livekit.UpdateSubscription + 12, // 70: livekit.SyncState.publish_tracks:type_name -> livekit.TrackPublishedResponse + 37, // 71: livekit.SyncState.data_channels:type_name -> livekit.DataChannelInfo + 14, // 72: livekit.SyncState.offer:type_name -> livekit.SessionDescription + 0, // 73: livekit.DataChannelInfo.target:type_name -> livekit.SignalTarget + 2, // 74: livekit.SimulateScenario.switch_candidate_protocol:type_name -> livekit.CandidateProtocol + 42, // 75: livekit.RegionSettings.regions:type_name -> livekit.RegionInfo + 59, // 76: livekit.SubscriptionResponse.err:type_name -> livekit.SubscriptionError + 77, // [77:77] is the sub-list for method output_type + 77, // [77:77] is the sub-list for method input_type + 77, // [77:77] is the sub-list for extension type_name + 77, // [77:77] is the sub-list for extension extendee + 0, // [0:77] is the sub-list for field type_name } func init() { file_livekit_rtc_proto_init() } @@ -4123,7 +4300,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeaveRequest); i { + switch v := v.(*UpdateLocalAudioTrack); i { case 0: return &v.state case 1: @@ -4135,7 +4312,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateVideoLayers); i { + switch v := v.(*UpdateLocalVideoTrack); i { case 0: return &v.state case 1: @@ -4147,7 +4324,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateParticipantMetadata); i { + switch v := v.(*LeaveRequest); i { case 0: return &v.state case 1: @@ -4159,7 +4336,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICEServer); i { + switch v := v.(*UpdateVideoLayers); i { case 0: return &v.state case 1: @@ -4171,7 +4348,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SpeakersChanged); i { + switch v := v.(*UpdateParticipantMetadata); i { case 0: return &v.state case 1: @@ -4183,7 +4360,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoomUpdate); i { + switch v := v.(*ICEServer); i { case 0: return &v.state case 1: @@ -4195,7 +4372,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionQualityInfo); i { + switch v := v.(*SpeakersChanged); i { case 0: return &v.state case 1: @@ -4207,7 +4384,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionQualityUpdate); i { + switch v := v.(*RoomUpdate); i { case 0: return &v.state case 1: @@ -4219,7 +4396,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamStateInfo); i { + switch v := v.(*ConnectionQualityInfo); i { case 0: return &v.state case 1: @@ -4231,7 +4408,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamStateUpdate); i { + switch v := v.(*ConnectionQualityUpdate); i { case 0: return &v.state case 1: @@ -4243,7 +4420,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribedQuality); i { + switch v := v.(*StreamStateInfo); i { case 0: return &v.state case 1: @@ -4255,7 +4432,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribedCodec); i { + switch v := v.(*StreamStateUpdate); i { case 0: return &v.state case 1: @@ -4267,7 +4444,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribedQualityUpdate); i { + switch v := v.(*SubscribedQuality); i { case 0: return &v.state case 1: @@ -4279,7 +4456,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackPermission); i { + switch v := v.(*SubscribedCodec); i { case 0: return &v.state case 1: @@ -4291,7 +4468,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionPermission); i { + switch v := v.(*SubscribedQualityUpdate); i { case 0: return &v.state case 1: @@ -4303,7 +4480,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[29].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriptionPermissionUpdate); i { + switch v := v.(*TrackPermission); i { case 0: return &v.state case 1: @@ -4315,7 +4492,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[30].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SyncState); i { + switch v := v.(*SubscriptionPermission); i { case 0: return &v.state case 1: @@ -4327,7 +4504,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[31].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DataChannelInfo); i { + switch v := v.(*SubscriptionPermissionUpdate); i { case 0: return &v.state case 1: @@ -4339,7 +4516,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[32].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SimulateScenario); i { + switch v := v.(*SyncState); i { case 0: return &v.state case 1: @@ -4351,7 +4528,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[33].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Ping); i { + switch v := v.(*DataChannelInfo); i { case 0: return &v.state case 1: @@ -4363,7 +4540,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[34].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Pong); i { + switch v := v.(*SimulateScenario); i { case 0: return &v.state case 1: @@ -4375,7 +4552,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[35].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegionSettings); i { + switch v := v.(*Ping); i { case 0: return &v.state case 1: @@ -4387,7 +4564,7 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[36].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RegionInfo); i { + switch v := v.(*Pong); i { case 0: return &v.state case 1: @@ -4399,6 +4576,30 @@ func file_livekit_rtc_proto_init() { } } file_livekit_rtc_proto_msgTypes[37].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegionSettings); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_livekit_rtc_proto_msgTypes[38].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*RegionInfo); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_livekit_rtc_proto_msgTypes[39].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SubscriptionResponse); i { case 0: return &v.state @@ -4427,6 +4628,8 @@ func file_livekit_rtc_proto_init() { (*SignalRequest_Ping)(nil), (*SignalRequest_UpdateMetadata)(nil), (*SignalRequest_PingReq)(nil), + (*SignalRequest_UpdateAudioTrack)(nil), + (*SignalRequest_UpdateVideoTrack)(nil), } file_livekit_rtc_proto_msgTypes[1].OneofWrappers = []interface{}{ (*SignalResponse_Join)(nil), @@ -4450,7 +4653,7 @@ func file_livekit_rtc_proto_init() { (*SignalResponse_PongResp)(nil), (*SignalResponse_SubscriptionResponse)(nil), } - file_livekit_rtc_proto_msgTypes[32].OneofWrappers = []interface{}{ + file_livekit_rtc_proto_msgTypes[34].OneofWrappers = []interface{}{ (*SimulateScenario_SpeakerUpdate)(nil), (*SimulateScenario_NodeFailure)(nil), (*SimulateScenario_Migration)(nil), @@ -4466,7 +4669,7 @@ func file_livekit_rtc_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_livekit_rtc_proto_rawDesc, NumEnums: 4, - NumMessages: 38, + NumMessages: 40, NumExtensions: 0, NumServices: 0, }, diff --git a/protobufs/livekit_models.proto b/protobufs/livekit_models.proto index f3e9e298..42f1b060 100644 --- a/protobufs/livekit_models.proto +++ b/protobufs/livekit_models.proto @@ -451,3 +451,13 @@ enum SubscriptionError { SE_CODEC_UNSUPPORTED = 1; SE_TRACK_NOTFOUND = 2; } + +enum AudioTrackFeature { + TF_STEREO = 0; + TF_NO_DTX = 1; + TF_AUTO_GAIN_CONTROL = 2; + TF_ECHO_CANCELLATION = 3; + TF_NOISE_SUPPRESSION = 4; + TF_ENHANCED_NOISE_CANCELLATION = 5; +} + diff --git a/protobufs/livekit_rtc.proto b/protobufs/livekit_rtc.proto index cb40baec..b5871c63 100644 --- a/protobufs/livekit_rtc.proto +++ b/protobufs/livekit_rtc.proto @@ -50,6 +50,10 @@ message SignalRequest { // update a participant's own metadata and/or name UpdateParticipantMetadata update_metadata = 15; Ping ping_req = 16; + // Update local audio track settings + UpdateLocalAudioTrack update_audio_track = 17; + // Update local video track settings + UpdateLocalVideoTrack update_video_track = 18; } } @@ -223,6 +227,19 @@ message UpdateTrackSettings { uint32 priority = 8; } + + +message UpdateLocalAudioTrack { + string track_sid = 1; + repeated AudioTrackFeature features = 2; +} + +message UpdateLocalVideoTrack { + string track_sid = 1; + uint32 width = 2; + uint32 height = 3; +} + message LeaveRequest { // indicates action clients should take on receiving this message enum Action {