diff --git a/stream-video-android-core/api/stream-video-android-core.api b/stream-video-android-core/api/stream-video-android-core.api index ee9fd5320a5..d40444a79ed 100644 --- a/stream-video-android-core/api/stream-video-android-core.api +++ b/stream-video-android-core/api/stream-video-android-core.api @@ -11565,36 +11565,18 @@ public final class stream/video/sfu/event/AudioLevelChanged : com/squareup/wire/ public final class stream/video/sfu/event/AudioLevelChanged$Companion { } -public final class stream/video/sfu/event/AudioMediaRequest : com/squareup/wire/Message { - public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; - public static final field Companion Lstream/video/sfu/event/AudioMediaRequest$Companion; - public fun ()V - public fun (ILokio/ByteString;)V - public synthetic fun (ILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (ILokio/ByteString;)Lstream/video/sfu/event/AudioMediaRequest; - public static synthetic fun copy$default (Lstream/video/sfu/event/AudioMediaRequest;ILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/AudioMediaRequest; - public fun equals (Ljava/lang/Object;)Z - public final fun getChannel_count ()I - public fun hashCode ()I - public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; - public synthetic fun newBuilder ()Ljava/lang/Void; - public fun toString ()Ljava/lang/String; -} - -public final class stream/video/sfu/event/AudioMediaRequest$Companion { -} - public final class stream/video/sfu/event/AudioSender : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/AudioSender$Companion; public fun ()V - public fun (Lstream/video/sfu/event/AudioMediaRequest;Lstream/video/sfu/models/Codec;Lokio/ByteString;)V - public synthetic fun (Lstream/video/sfu/event/AudioMediaRequest;Lstream/video/sfu/models/Codec;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Lstream/video/sfu/event/AudioMediaRequest;Lstream/video/sfu/models/Codec;Lokio/ByteString;)Lstream/video/sfu/event/AudioSender; - public static synthetic fun copy$default (Lstream/video/sfu/event/AudioSender;Lstream/video/sfu/event/AudioMediaRequest;Lstream/video/sfu/models/Codec;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/AudioSender; + public fun (Lstream/video/sfu/models/Codec;Lstream/video/sfu/models/TrackType;ILokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/Codec;Lstream/video/sfu/models/TrackType;ILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/Codec;Lstream/video/sfu/models/TrackType;ILokio/ByteString;)Lstream/video/sfu/event/AudioSender; + public static synthetic fun copy$default (Lstream/video/sfu/event/AudioSender;Lstream/video/sfu/models/Codec;Lstream/video/sfu/models/TrackType;ILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/AudioSender; public fun equals (Ljava/lang/Object;)Z public final fun getCodec ()Lstream/video/sfu/models/Codec; - public final fun getMedia_request ()Lstream/video/sfu/event/AudioMediaRequest; + public final fun getPublish_option_id ()I + public final fun getTrack_type ()Lstream/video/sfu/models/TrackType; public fun hashCode ()I public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; public synthetic fun newBuilder ()Ljava/lang/Void; @@ -11643,6 +11625,44 @@ public final class stream/video/sfu/event/CallGrantsUpdated : com/squareup/wire/ public final class stream/video/sfu/event/CallGrantsUpdated$Companion { } +public final class stream/video/sfu/event/ChangePublishOptions : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/event/ChangePublishOptions$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/lang/String;Lokio/ByteString;)V + public synthetic fun (Ljava/util/List;Ljava/lang/String;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/util/List;Ljava/lang/String;Lokio/ByteString;)Lstream/video/sfu/event/ChangePublishOptions; + public static synthetic fun copy$default (Lstream/video/sfu/event/ChangePublishOptions;Ljava/util/List;Ljava/lang/String;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/ChangePublishOptions; + public fun equals (Ljava/lang/Object;)Z + public final fun getPublish_options ()Ljava/util/List; + public final fun getReason ()Ljava/lang/String; + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/event/ChangePublishOptions$Companion { +} + +public final class stream/video/sfu/event/ChangePublishOptionsComplete : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/event/ChangePublishOptionsComplete$Companion; + public fun ()V + public fun (Lokio/ByteString;)V + public synthetic fun (Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lokio/ByteString;)Lstream/video/sfu/event/ChangePublishOptionsComplete; + public static synthetic fun copy$default (Lstream/video/sfu/event/ChangePublishOptionsComplete;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/ChangePublishOptionsComplete; + public fun equals (Ljava/lang/Object;)Z + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/event/ChangePublishOptionsComplete$Companion { +} + public final class stream/video/sfu/event/ChangePublishQuality : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/ChangePublishQuality$Companion; @@ -11842,14 +11862,16 @@ public final class stream/video/sfu/event/JoinRequest : com/squareup/wire/Messag public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/JoinRequest$Companion; public fun ()V - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Lokio/ByteString;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Lokio/ByteString;)Lstream/video/sfu/event/JoinRequest; - public static synthetic fun copy$default (Lstream/video/sfu/event/JoinRequest;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/JoinRequest; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Ljava/util/List;Lokio/ByteString;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Ljava/util/List;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Ljava/util/List;Lokio/ByteString;)Lstream/video/sfu/event/JoinRequest; + public static synthetic fun copy$default (Lstream/video/sfu/event/JoinRequest;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/ClientDetails;Lstream/video/sfu/event/Migration;ZLstream/video/sfu/event/ReconnectDetails;Ljava/util/List;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/JoinRequest; public fun equals (Ljava/lang/Object;)Z public final fun getClient_details ()Lstream/video/sfu/models/ClientDetails; public final fun getFast_reconnect ()Z public final fun getMigration ()Lstream/video/sfu/event/Migration; + public final fun getPreferred_publish_options ()Ljava/util/List; + public final fun getPublisher_sdp ()Ljava/lang/String; public final fun getReconnect_details ()Lstream/video/sfu/event/ReconnectDetails; public final fun getSession_id ()Ljava/lang/String; public final fun getSubscriber_sdp ()Ljava/lang/String; @@ -11867,13 +11889,14 @@ public final class stream/video/sfu/event/JoinResponse : com/squareup/wire/Messa public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/JoinResponse$Companion; public fun ()V - public fun (Lstream/video/sfu/models/CallState;ZILokio/ByteString;)V - public synthetic fun (Lstream/video/sfu/models/CallState;ZILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Lstream/video/sfu/models/CallState;ZILokio/ByteString;)Lstream/video/sfu/event/JoinResponse; - public static synthetic fun copy$default (Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/models/CallState;ZILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/JoinResponse; + public fun (Lstream/video/sfu/models/CallState;ZILjava/util/List;Lokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/CallState;ZILjava/util/List;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/CallState;ZILjava/util/List;Lokio/ByteString;)Lstream/video/sfu/event/JoinResponse; + public static synthetic fun copy$default (Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/models/CallState;ZILjava/util/List;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/JoinResponse; public fun equals (Ljava/lang/Object;)Z public final fun getCall_state ()Lstream/video/sfu/models/CallState; public final fun getFast_reconnect_deadline_seconds ()I + public final fun getPublish_options ()Ljava/util/List; public final fun getReconnected ()Z public fun hashCode ()I public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; @@ -12069,14 +12092,15 @@ public final class stream/video/sfu/event/SfuEvent : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/SfuEvent$Companion; public fun ()V - public fun (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lokio/ByteString;)V - public synthetic fun (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lokio/ByteString;)Lstream/video/sfu/event/SfuEvent; - public static synthetic fun copy$default (Lstream/video/sfu/event/SfuEvent;Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/SfuEvent; + public fun (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lstream/video/sfu/event/ChangePublishOptions;Lokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lstream/video/sfu/event/ChangePublishOptions;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lstream/video/sfu/event/ChangePublishOptions;Lokio/ByteString;)Lstream/video/sfu/event/SfuEvent; + public static synthetic fun copy$default (Lstream/video/sfu/event/SfuEvent;Lstream/video/sfu/event/SubscriberOffer;Lstream/video/sfu/event/PublisherAnswer;Lstream/video/sfu/event/ConnectionQualityChanged;Lstream/video/sfu/event/AudioLevelChanged;Lstream/video/sfu/models/ICETrickle;Lstream/video/sfu/event/ChangePublishQuality;Lstream/video/sfu/event/ParticipantJoined;Lstream/video/sfu/event/ParticipantLeft;Lstream/video/sfu/event/DominantSpeakerChanged;Lstream/video/sfu/event/JoinResponse;Lstream/video/sfu/event/HealthCheckResponse;Lstream/video/sfu/event/TrackPublished;Lstream/video/sfu/event/TrackUnpublished;Lstream/video/sfu/event/Error;Lstream/video/sfu/event/CallGrantsUpdated;Lstream/video/sfu/event/GoAway;Lstream/video/sfu/event/ICERestart;Lstream/video/sfu/event/PinsChanged;Lstream/video/sfu/event/CallEnded;Lstream/video/sfu/event/ParticipantUpdated;Lstream/video/sfu/event/ParticipantMigrationComplete;Lstream/video/sfu/event/ChangePublishOptions;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/SfuEvent; public fun equals (Ljava/lang/Object;)Z public final fun getAudio_level_changed ()Lstream/video/sfu/event/AudioLevelChanged; public final fun getCall_ended ()Lstream/video/sfu/event/CallEnded; public final fun getCall_grants_updated ()Lstream/video/sfu/event/CallGrantsUpdated; + public final fun getChange_publish_options ()Lstream/video/sfu/event/ChangePublishOptions; public final fun getChange_publish_quality ()Lstream/video/sfu/event/ChangePublishQuality; public final fun getConnection_quality_changed ()Lstream/video/sfu/event/ConnectionQualityChanged; public final fun getDominant_speaker_changed ()Lstream/video/sfu/event/DominantSpeakerChanged; @@ -12194,17 +12218,17 @@ public final class stream/video/sfu/event/VideoLayerSetting : com/squareup/wire/ public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/event/VideoLayerSetting$Companion; public fun ()V - public fun (Ljava/lang/String;ZIFLstream/video/sfu/event/VideoLayerSetting$Priority;Lstream/video/sfu/models/Codec;ILokio/ByteString;)V - public synthetic fun (Ljava/lang/String;ZIFLstream/video/sfu/event/VideoLayerSetting$Priority;Lstream/video/sfu/models/Codec;ILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Ljava/lang/String;ZIFLstream/video/sfu/event/VideoLayerSetting$Priority;Lstream/video/sfu/models/Codec;ILokio/ByteString;)Lstream/video/sfu/event/VideoLayerSetting; - public static synthetic fun copy$default (Lstream/video/sfu/event/VideoLayerSetting;Ljava/lang/String;ZIFLstream/video/sfu/event/VideoLayerSetting$Priority;Lstream/video/sfu/models/Codec;ILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/VideoLayerSetting; + public fun (Ljava/lang/String;ZIFLstream/video/sfu/models/Codec;ILjava/lang/String;Lokio/ByteString;)V + public synthetic fun (Ljava/lang/String;ZIFLstream/video/sfu/models/Codec;ILjava/lang/String;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/lang/String;ZIFLstream/video/sfu/models/Codec;ILjava/lang/String;Lokio/ByteString;)Lstream/video/sfu/event/VideoLayerSetting; + public static synthetic fun copy$default (Lstream/video/sfu/event/VideoLayerSetting;Ljava/lang/String;ZIFLstream/video/sfu/models/Codec;ILjava/lang/String;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/VideoLayerSetting; public fun equals (Ljava/lang/Object;)Z public final fun getActive ()Z public final fun getCodec ()Lstream/video/sfu/models/Codec; public final fun getMax_bitrate ()I public final fun getMax_framerate ()I public final fun getName ()Ljava/lang/String; - public final fun getPriority ()Lstream/video/sfu/event/VideoLayerSetting$Priority; + public final fun getScalability_mode ()Ljava/lang/String; public final fun getScale_resolution_down_by ()F public fun hashCode ()I public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; @@ -12215,64 +12239,107 @@ public final class stream/video/sfu/event/VideoLayerSetting : com/squareup/wire/ public final class stream/video/sfu/event/VideoLayerSetting$Companion { } -public final class stream/video/sfu/event/VideoLayerSetting$Priority : java/lang/Enum, com/squareup/wire/WireEnum { +public final class stream/video/sfu/event/VideoSender : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; - public static final field Companion Lstream/video/sfu/event/VideoLayerSetting$Priority$Companion; - public static final field PRIORITY_HIGH_UNSPECIFIED Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static final field PRIORITY_LOW Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static final field PRIORITY_MEDIUM Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static final field PRIORITY_VERY_LOW Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static final fun fromValue (I)Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static fun getEntries ()Lkotlin/enums/EnumEntries; - public fun getValue ()I - public static fun valueOf (Ljava/lang/String;)Lstream/video/sfu/event/VideoLayerSetting$Priority; - public static fun values ()[Lstream/video/sfu/event/VideoLayerSetting$Priority; + public static final field Companion Lstream/video/sfu/event/VideoSender$Companion; + public fun ()V + public fun (Lstream/video/sfu/models/Codec;Ljava/util/List;Lstream/video/sfu/models/TrackType;ILokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/Codec;Ljava/util/List;Lstream/video/sfu/models/TrackType;ILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/Codec;Ljava/util/List;Lstream/video/sfu/models/TrackType;ILokio/ByteString;)Lstream/video/sfu/event/VideoSender; + public static synthetic fun copy$default (Lstream/video/sfu/event/VideoSender;Lstream/video/sfu/models/Codec;Ljava/util/List;Lstream/video/sfu/models/TrackType;ILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/VideoSender; + public fun equals (Ljava/lang/Object;)Z + public final fun getCodec ()Lstream/video/sfu/models/Codec; + public final fun getLayers ()Ljava/util/List; + public final fun getPublish_option_id ()I + public final fun getTrack_type ()Lstream/video/sfu/models/TrackType; + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; } -public final class stream/video/sfu/event/VideoLayerSetting$Priority$Companion { - public final fun fromValue (I)Lstream/video/sfu/event/VideoLayerSetting$Priority; +public final class stream/video/sfu/event/VideoSender$Companion { } -public final class stream/video/sfu/event/VideoMediaRequest : com/squareup/wire/Message { +public final class stream/video/sfu/models/AndroidState : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; - public static final field Companion Lstream/video/sfu/event/VideoMediaRequest$Companion; + public static final field Companion Lstream/video/sfu/models/AndroidState$Companion; public fun ()V - public fun (IIILokio/ByteString;)V - public synthetic fun (IIILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (IIILokio/ByteString;)Lstream/video/sfu/event/VideoMediaRequest; - public static synthetic fun copy$default (Lstream/video/sfu/event/VideoMediaRequest;IIILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/VideoMediaRequest; + public fun (Lstream/video/sfu/models/AndroidThermalState;ZLokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/AndroidThermalState;ZLokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/AndroidThermalState;ZLokio/ByteString;)Lstream/video/sfu/models/AndroidState; + public static synthetic fun copy$default (Lstream/video/sfu/models/AndroidState;Lstream/video/sfu/models/AndroidThermalState;ZLokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/AndroidState; public fun equals (Ljava/lang/Object;)Z - public final fun getIdeal_frame_rate ()I - public final fun getIdeal_height ()I - public final fun getIdeal_width ()I + public final fun getThermal_state ()Lstream/video/sfu/models/AndroidThermalState; public fun hashCode ()I + public final fun is_power_saver_mode ()Z public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; public synthetic fun newBuilder ()Ljava/lang/Void; public fun toString ()Ljava/lang/String; } -public final class stream/video/sfu/event/VideoMediaRequest$Companion { +public final class stream/video/sfu/models/AndroidState$Companion { } -public final class stream/video/sfu/event/VideoSender : com/squareup/wire/Message { +public final class stream/video/sfu/models/AndroidThermalState : java/lang/Enum, com/squareup/wire/WireEnum { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; - public static final field Companion Lstream/video/sfu/event/VideoSender$Companion; + public static final field ANDROID_THERMAL_STATE_CRITICAL Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_EMERGENCY Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_LIGHT Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_MODERATE Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_NONE Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_SEVERE Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_SHUTDOWN Lstream/video/sfu/models/AndroidThermalState; + public static final field ANDROID_THERMAL_STATE_UNSPECIFIED Lstream/video/sfu/models/AndroidThermalState; + public static final field Companion Lstream/video/sfu/models/AndroidThermalState$Companion; + public static final fun fromValue (I)Lstream/video/sfu/models/AndroidThermalState; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public fun getValue ()I + public static fun valueOf (Ljava/lang/String;)Lstream/video/sfu/models/AndroidThermalState; + public static fun values ()[Lstream/video/sfu/models/AndroidThermalState; +} + +public final class stream/video/sfu/models/AndroidThermalState$Companion { + public final fun fromValue (I)Lstream/video/sfu/models/AndroidThermalState; +} + +public final class stream/video/sfu/models/AppleState : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/models/AppleState$Companion; public fun ()V - public fun (Lstream/video/sfu/event/VideoMediaRequest;Lstream/video/sfu/models/Codec;Ljava/util/List;Lokio/ByteString;)V - public synthetic fun (Lstream/video/sfu/event/VideoMediaRequest;Lstream/video/sfu/models/Codec;Ljava/util/List;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Lstream/video/sfu/event/VideoMediaRequest;Lstream/video/sfu/models/Codec;Ljava/util/List;Lokio/ByteString;)Lstream/video/sfu/event/VideoSender; - public static synthetic fun copy$default (Lstream/video/sfu/event/VideoSender;Lstream/video/sfu/event/VideoMediaRequest;Lstream/video/sfu/models/Codec;Ljava/util/List;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/event/VideoSender; + public fun (Lstream/video/sfu/models/AppleThermalState;ZLokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/AppleThermalState;ZLokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/AppleThermalState;ZLokio/ByteString;)Lstream/video/sfu/models/AppleState; + public static synthetic fun copy$default (Lstream/video/sfu/models/AppleState;Lstream/video/sfu/models/AppleThermalState;ZLokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/AppleState; public fun equals (Ljava/lang/Object;)Z - public final fun getCodec ()Lstream/video/sfu/models/Codec; - public final fun getLayers ()Ljava/util/List; - public final fun getMedia_request ()Lstream/video/sfu/event/VideoMediaRequest; + public final fun getThermal_state ()Lstream/video/sfu/models/AppleThermalState; public fun hashCode ()I + public final fun is_low_power_mode_enabled ()Z public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; public synthetic fun newBuilder ()Ljava/lang/Void; public fun toString ()Ljava/lang/String; } -public final class stream/video/sfu/event/VideoSender$Companion { +public final class stream/video/sfu/models/AppleState$Companion { +} + +public final class stream/video/sfu/models/AppleThermalState : java/lang/Enum, com/squareup/wire/WireEnum { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field APPLE_THERMAL_STATE_CRITICAL Lstream/video/sfu/models/AppleThermalState; + public static final field APPLE_THERMAL_STATE_FAIR Lstream/video/sfu/models/AppleThermalState; + public static final field APPLE_THERMAL_STATE_NOMINAL Lstream/video/sfu/models/AppleThermalState; + public static final field APPLE_THERMAL_STATE_SERIOUS Lstream/video/sfu/models/AppleThermalState; + public static final field APPLE_THERMAL_STATE_UNSPECIFIED Lstream/video/sfu/models/AppleThermalState; + public static final field Companion Lstream/video/sfu/models/AppleThermalState$Companion; + public static final fun fromValue (I)Lstream/video/sfu/models/AppleThermalState; + public static fun getEntries ()Lkotlin/enums/EnumEntries; + public fun getValue ()I + public static fun valueOf (Ljava/lang/String;)Lstream/video/sfu/models/AppleThermalState; + public static fun values ()[Lstream/video/sfu/models/AppleThermalState; +} + +public final class stream/video/sfu/models/AppleThermalState$Companion { + public final fun fromValue (I)Lstream/video/sfu/models/AppleThermalState; } public final class stream/video/sfu/models/Browser : com/squareup/wire/Message { @@ -12408,15 +12475,14 @@ public final class stream/video/sfu/models/Codec : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/models/Codec$Companion; public fun ()V - public fun (ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/List;Lokio/ByteString;)V - public synthetic fun (ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/List;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/List;Lokio/ByteString;)Lstream/video/sfu/models/Codec; - public static synthetic fun copy$default (Lstream/video/sfu/models/Codec;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/util/List;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/Codec; + public fun (ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Lokio/ByteString;)V + public synthetic fun (ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Lokio/ByteString;)Lstream/video/sfu/models/Codec; + public static synthetic fun copy$default (Lstream/video/sfu/models/Codec;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/Codec; public fun equals (Ljava/lang/Object;)Z public final fun getClock_rate ()I public final fun getEncoding_parameters ()Ljava/lang/String; - public final fun getFeedbacks ()Ljava/util/List; - public final fun getFmtp_line ()Ljava/lang/String; + public final fun getFmtp ()Ljava/lang/String; public final fun getName ()Ljava/lang/String; public final fun getPayload_type ()I public fun hashCode ()I @@ -12559,6 +12625,27 @@ public final class stream/video/sfu/models/ICETrickle : com/squareup/wire/Messag public final class stream/video/sfu/models/ICETrickle$Companion { } +public final class stream/video/sfu/models/InputDevices : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/models/InputDevices$Companion; + public fun ()V + public fun (Ljava/util/List;Ljava/lang/String;ZLokio/ByteString;)V + public synthetic fun (Ljava/util/List;Ljava/lang/String;ZLokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/util/List;Ljava/lang/String;ZLokio/ByteString;)Lstream/video/sfu/models/InputDevices; + public static synthetic fun copy$default (Lstream/video/sfu/models/InputDevices;Ljava/util/List;Ljava/lang/String;ZLokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/InputDevices; + public fun equals (Ljava/lang/Object;)Z + public final fun getAvailable_devices ()Ljava/util/List; + public final fun getCurrent_device ()Ljava/lang/String; + public fun hashCode ()I + public final fun is_permitted ()Z + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/models/InputDevices$Companion { +} + public final class stream/video/sfu/models/OS : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/models/OS$Companion; @@ -12667,6 +12754,32 @@ public final class stream/video/sfu/models/Pin : com/squareup/wire/Message { public final class stream/video/sfu/models/Pin$Companion { } +public final class stream/video/sfu/models/PublishOption : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/models/PublishOption$Companion; + public fun ()V + public fun (Lstream/video/sfu/models/TrackType;Lstream/video/sfu/models/Codec;IIIILstream/video/sfu/models/VideoDimension;ILokio/ByteString;)V + public synthetic fun (Lstream/video/sfu/models/TrackType;Lstream/video/sfu/models/Codec;IIIILstream/video/sfu/models/VideoDimension;ILokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Lstream/video/sfu/models/TrackType;Lstream/video/sfu/models/Codec;IIIILstream/video/sfu/models/VideoDimension;ILokio/ByteString;)Lstream/video/sfu/models/PublishOption; + public static synthetic fun copy$default (Lstream/video/sfu/models/PublishOption;Lstream/video/sfu/models/TrackType;Lstream/video/sfu/models/Codec;IIIILstream/video/sfu/models/VideoDimension;ILokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/PublishOption; + public fun equals (Ljava/lang/Object;)Z + public final fun getBitrate ()I + public final fun getCodec ()Lstream/video/sfu/models/Codec; + public final fun getFps ()I + public final fun getId ()I + public final fun getMax_spatial_layers ()I + public final fun getMax_temporal_layers ()I + public final fun getTrack_type ()Lstream/video/sfu/models/TrackType; + public final fun getVideo_dimension ()Lstream/video/sfu/models/VideoDimension; + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/models/PublishOption$Companion { +} + public final class stream/video/sfu/models/Sdk : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/models/Sdk$Companion; @@ -12737,14 +12850,15 @@ public final class stream/video/sfu/models/TrackInfo : com/squareup/wire/Message public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/models/TrackInfo$Companion; public fun ()V - public fun (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZLokio/ByteString;)V - public synthetic fun (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZLokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZLokio/ByteString;)Lstream/video/sfu/models/TrackInfo; - public static synthetic fun copy$default (Lstream/video/sfu/models/TrackInfo;Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZLokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/TrackInfo; + public fun (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZZLokio/ByteString;)V + public synthetic fun (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZZLokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZZLokio/ByteString;)Lstream/video/sfu/models/TrackInfo; + public static synthetic fun copy$default (Lstream/video/sfu/models/TrackInfo;Ljava/lang/String;Lstream/video/sfu/models/TrackType;Ljava/util/List;Ljava/lang/String;ZZZZLokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/models/TrackInfo; public fun equals (Ljava/lang/Object;)Z public final fun getDtx ()Z public final fun getLayers ()Ljava/util/List; public final fun getMid ()Ljava/lang/String; + public final fun getMuted ()Z public final fun getRed ()Z public final fun getStereo ()Z public final fun getTrack_id ()Ljava/lang/String; @@ -12952,6 +13066,26 @@ public final class stream/video/sfu/signal/ICETrickleResponse : com/squareup/wir public final class stream/video/sfu/signal/ICETrickleResponse$Companion { } +public final class stream/video/sfu/signal/Reconnection : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/signal/Reconnection$Companion; + public fun ()V + public fun (FLstream/video/sfu/models/WebsocketReconnectStrategy;Lokio/ByteString;)V + public synthetic fun (FLstream/video/sfu/models/WebsocketReconnectStrategy;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (FLstream/video/sfu/models/WebsocketReconnectStrategy;Lokio/ByteString;)Lstream/video/sfu/signal/Reconnection; + public static synthetic fun copy$default (Lstream/video/sfu/signal/Reconnection;FLstream/video/sfu/models/WebsocketReconnectStrategy;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/signal/Reconnection; + public fun equals (Ljava/lang/Object;)Z + public final fun getStrategy ()Lstream/video/sfu/models/WebsocketReconnectStrategy; + public final fun getTime_seconds ()F + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/signal/Reconnection$Companion { +} + public final class stream/video/sfu/signal/SendAnswerRequest : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/signal/SendAnswerRequest$Companion; @@ -12996,16 +13130,21 @@ public final class stream/video/sfu/signal/SendStatsRequest : com/squareup/wire/ public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/signal/SendStatsRequest$Companion; public fun ()V - public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lokio/ByteString;)V - public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V - public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lokio/ByteString;)Lstream/video/sfu/signal/SendStatsRequest; - public static synthetic fun copy$default (Lstream/video/sfu/signal/SendStatsRequest;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/signal/SendStatsRequest; + public fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/AndroidState;Lstream/video/sfu/models/AppleState;Lstream/video/sfu/signal/Telemetry;Lokio/ByteString;)V + public synthetic fun (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/AndroidState;Lstream/video/sfu/models/AppleState;Lstream/video/sfu/signal/Telemetry;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/AndroidState;Lstream/video/sfu/models/AppleState;Lstream/video/sfu/signal/Telemetry;Lokio/ByteString;)Lstream/video/sfu/signal/SendStatsRequest; + public static synthetic fun copy$default (Lstream/video/sfu/signal/SendStatsRequest;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/InputDevices;Lstream/video/sfu/models/AndroidState;Lstream/video/sfu/models/AppleState;Lstream/video/sfu/signal/Telemetry;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/signal/SendStatsRequest; public fun equals (Ljava/lang/Object;)Z + public final fun getAndroid ()Lstream/video/sfu/models/AndroidState; + public final fun getApple ()Lstream/video/sfu/models/AppleState; + public final fun getAudio_devices ()Lstream/video/sfu/models/InputDevices; public final fun getPublisher_stats ()Ljava/lang/String; public final fun getSdk ()Ljava/lang/String; public final fun getSdk_version ()Ljava/lang/String; public final fun getSession_id ()Ljava/lang/String; public final fun getSubscriber_stats ()Ljava/lang/String; + public final fun getTelemetry ()Lstream/video/sfu/signal/Telemetry; + public final fun getVideo_devices ()Lstream/video/sfu/models/InputDevices; public final fun getWebrtc_version ()Ljava/lang/String; public fun hashCode ()I public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; @@ -13154,6 +13293,26 @@ public final class stream/video/sfu/signal/StopNoiseCancellationResponse : com/s public final class stream/video/sfu/signal/StopNoiseCancellationResponse$Companion { } +public final class stream/video/sfu/signal/Telemetry : com/squareup/wire/Message { + public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; + public static final field Companion Lstream/video/sfu/signal/Telemetry$Companion; + public fun ()V + public fun (Ljava/lang/Float;Lstream/video/sfu/signal/Reconnection;Lokio/ByteString;)V + public synthetic fun (Ljava/lang/Float;Lstream/video/sfu/signal/Reconnection;Lokio/ByteString;ILkotlin/jvm/internal/DefaultConstructorMarker;)V + public final fun copy (Ljava/lang/Float;Lstream/video/sfu/signal/Reconnection;Lokio/ByteString;)Lstream/video/sfu/signal/Telemetry; + public static synthetic fun copy$default (Lstream/video/sfu/signal/Telemetry;Ljava/lang/Float;Lstream/video/sfu/signal/Reconnection;Lokio/ByteString;ILjava/lang/Object;)Lstream/video/sfu/signal/Telemetry; + public fun equals (Ljava/lang/Object;)Z + public final fun getConnection_time_seconds ()Ljava/lang/Float; + public final fun getReconnection ()Lstream/video/sfu/signal/Reconnection; + public fun hashCode ()I + public synthetic fun newBuilder ()Lcom/squareup/wire/Message$Builder; + public synthetic fun newBuilder ()Ljava/lang/Void; + public fun toString ()Ljava/lang/String; +} + +public final class stream/video/sfu/signal/Telemetry$Companion { +} + public final class stream/video/sfu/signal/TrackMuteState : com/squareup/wire/Message { public static final field ADAPTER Lcom/squareup/wire/ProtoAdapter; public static final field Companion Lstream/video/sfu/signal/TrackMuteState$Companion; diff --git a/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt b/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt index b4054e616ca..1a07f13a932 100644 --- a/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt +++ b/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/Call.kt @@ -16,8 +16,10 @@ package io.getstream.video.android.core +import android.content.Context.POWER_SERVICE import android.content.Intent import android.graphics.Bitmap +import android.os.PowerManager import androidx.annotation.VisibleForTesting import androidx.compose.runtime.Stable import io.getstream.log.taggedLogger @@ -44,6 +46,7 @@ import io.getstream.video.android.core.model.VideoTrack import io.getstream.video.android.core.model.toIceServer import io.getstream.video.android.core.utils.RampValueUpAndDownHelper import io.getstream.video.android.core.utils.safeCall +import io.getstream.video.android.core.utils.safeCallWithDefault import io.getstream.video.android.core.utils.toQueriedMembers import io.getstream.video.android.model.User import io.getstream.webrtc.android.ui.VideoTextureViewRenderer @@ -130,6 +133,7 @@ public class Call( private val logger by taggedLogger("Call:$type:$id") private val supervisorJob = SupervisorJob() private var callStatsReportingJob: Job? = null + private var powerManager: PowerManager? = null private val scope = CoroutineScope(clientImpl.scope.coroutineContext + supervisorJob) @@ -266,6 +270,9 @@ public class Call( audioLevelOutputHelper.rampToValue(it) } } + powerManager = safeCallWithDefault(null) { + clientImpl.context.getSystemService(POWER_SERVICE) as? PowerManager + } } /** Basic crud operations */ @@ -465,6 +472,7 @@ public class Call( sfuWsUrl = sfuWsUrl, sfuToken = sfuToken, remoteIceServers = iceServers, + powerManager = powerManager, ) } @@ -643,6 +651,7 @@ public class Call( session.prepareRejoin() this.session = RtcSession( clientImpl, + powerManager, this, sessionId, clientImpl.apiKey, @@ -694,6 +703,7 @@ public class Call( session.prepareRejoin() val newSession = RtcSession( clientImpl, + powerManager, this, sessionId, clientImpl.apiKey, diff --git a/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/RtcSession.kt b/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/RtcSession.kt index 5fa52e275d5..637a1dd6669 100644 --- a/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/RtcSession.kt +++ b/stream-video-android-core/src/main/kotlin/io/getstream/video/android/core/call/RtcSession.kt @@ -17,6 +17,14 @@ package io.getstream.video.android.core.call import android.os.Build +import android.os.PowerManager +import android.os.PowerManager.THERMAL_STATUS_CRITICAL +import android.os.PowerManager.THERMAL_STATUS_EMERGENCY +import android.os.PowerManager.THERMAL_STATUS_LIGHT +import android.os.PowerManager.THERMAL_STATUS_MODERATE +import android.os.PowerManager.THERMAL_STATUS_NONE +import android.os.PowerManager.THERMAL_STATUS_SEVERE +import android.os.PowerManager.THERMAL_STATUS_SHUTDOWN import androidx.annotation.VisibleForTesting import androidx.lifecycle.Lifecycle import io.getstream.log.taggedLogger @@ -68,6 +76,7 @@ import io.getstream.video.android.core.utils.buildMediaConstraints import io.getstream.video.android.core.utils.buildRemoteIceServers import io.getstream.video.android.core.utils.mangleSdpUtil import io.getstream.video.android.core.utils.mapState +import io.getstream.video.android.core.utils.safeCallWithDefault import io.getstream.video.android.core.utils.stringify import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Job @@ -110,6 +119,8 @@ import stream.video.sfu.event.JoinRequest import stream.video.sfu.event.LeaveCallRequest import stream.video.sfu.event.ReconnectDetails import stream.video.sfu.event.SfuRequest +import stream.video.sfu.models.AndroidState +import stream.video.sfu.models.AndroidThermalState import stream.video.sfu.models.ClientDetails import stream.video.sfu.models.Device import stream.video.sfu.models.ICETrickle @@ -184,6 +195,7 @@ data class TrackDimensions( */ public class RtcSession internal constructor( client: StreamVideo, + private val powerManager: PowerManager?, private val call: Call, private val sessionId: String, private val apiKey: String, @@ -1628,6 +1640,26 @@ public class RtcSession internal constructor( internal suspend fun sendCallStats(report: CallStatsReport) { val result = wrapAPICall { + val androidThermalState = + safeCallWithDefault(AndroidThermalState.ANDROID_THERMAL_STATE_UNSPECIFIED) { + val thermalState = powerManager?.currentThermalStatus + logger.d { "[sendCallStats] #thermals state: $thermalState" } + when (thermalState) { + THERMAL_STATUS_NONE -> AndroidThermalState.ANDROID_THERMAL_STATE_NONE + THERMAL_STATUS_LIGHT -> AndroidThermalState.ANDROID_THERMAL_STATE_LIGHT + THERMAL_STATUS_MODERATE -> AndroidThermalState.ANDROID_THERMAL_STATE_MODERATE + THERMAL_STATUS_SEVERE -> AndroidThermalState.ANDROID_THERMAL_STATE_SEVERE + THERMAL_STATUS_CRITICAL -> AndroidThermalState.ANDROID_THERMAL_STATE_CRITICAL + THERMAL_STATUS_EMERGENCY -> AndroidThermalState.ANDROID_THERMAL_STATE_EMERGENCY + THERMAL_STATUS_SHUTDOWN -> AndroidThermalState.ANDROID_THERMAL_STATE_SHUTDOWN + else -> AndroidThermalState.ANDROID_THERMAL_STATE_UNSPECIFIED + } + } + val powerSaving = safeCallWithDefault(false) { + val powerSaveMode = powerManager?.isPowerSaveMode + logger.d { "[sendCallStats] #powerSaveMode state: $powerSaveMode" } + powerSaveMode ?: false + } sfuConnectionModule.api.sendStats( sendStatsRequest = SendStatsRequest( session_id = sessionId, @@ -1636,6 +1668,10 @@ public class RtcSession internal constructor( webrtc_version = BuildConfig.STREAM_WEBRTC_VERSION, publisher_stats = report.toJson(StreamPeerType.PUBLISHER), subscriber_stats = report.toJson(StreamPeerType.SUBSCRIBER), + android = AndroidState( + thermal_state = androidThermalState, + is_power_saver_mode = powerSaving, + ), ), ) } diff --git a/stream-video-android-core/src/main/proto/video/sfu/event/events.pb.go b/stream-video-android-core/src/main/proto/video/sfu/event/events.pb.go index b9c14620f35..12da946bbcf 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/event/events.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/event/events.pb.go @@ -22,58 +22,6 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -type VideoLayerSetting_Priority int32 - -const ( - VideoLayerSetting_PRIORITY_HIGH_UNSPECIFIED VideoLayerSetting_Priority = 0 - VideoLayerSetting_PRIORITY_LOW VideoLayerSetting_Priority = 1 - VideoLayerSetting_PRIORITY_MEDIUM VideoLayerSetting_Priority = 2 - VideoLayerSetting_PRIORITY_VERY_LOW VideoLayerSetting_Priority = 3 -) - -// Enum value maps for VideoLayerSetting_Priority. -var ( - VideoLayerSetting_Priority_name = map[int32]string{ - 0: "PRIORITY_HIGH_UNSPECIFIED", - 1: "PRIORITY_LOW", - 2: "PRIORITY_MEDIUM", - 3: "PRIORITY_VERY_LOW", - } - VideoLayerSetting_Priority_value = map[string]int32{ - "PRIORITY_HIGH_UNSPECIFIED": 0, - "PRIORITY_LOW": 1, - "PRIORITY_MEDIUM": 2, - "PRIORITY_VERY_LOW": 3, - } -) - -func (x VideoLayerSetting_Priority) Enum() *VideoLayerSetting_Priority { - p := new(VideoLayerSetting_Priority) - *p = x - return p -} - -func (x VideoLayerSetting_Priority) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (VideoLayerSetting_Priority) Descriptor() protoreflect.EnumDescriptor { - return file_video_sfu_event_events_proto_enumTypes[0].Descriptor() -} - -func (VideoLayerSetting_Priority) Type() protoreflect.EnumType { - return &file_video_sfu_event_events_proto_enumTypes[0] -} - -func (x VideoLayerSetting_Priority) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use VideoLayerSetting_Priority.Descriptor instead. -func (VideoLayerSetting_Priority) EnumDescriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{29, 0} -} - // SFUEvent is a message that is sent from the SFU to the client. type SfuEvent struct { state protoimpl.MessageState @@ -103,6 +51,7 @@ type SfuEvent struct { // *SfuEvent_CallEnded // *SfuEvent_ParticipantUpdated // *SfuEvent_ParticipantMigrationComplete + // *SfuEvent_ChangePublishOptions EventPayload isSfuEvent_EventPayload `protobuf_oneof:"event_payload"` } @@ -292,6 +241,13 @@ func (x *SfuEvent) GetParticipantMigrationComplete() *ParticipantMigrationComple return nil } +func (x *SfuEvent) GetChangePublishOptions() *ChangePublishOptions { + if x, ok := x.GetEventPayload().(*SfuEvent_ChangePublishOptions); ok { + return x.ChangePublishOptions + } + return nil +} + type isSfuEvent_EventPayload interface { isSfuEvent_EventPayload() } @@ -423,6 +379,11 @@ type SfuEvent_ParticipantMigrationComplete struct { ParticipantMigrationComplete *ParticipantMigrationComplete `protobuf:"bytes,25,opt,name=participant_migration_complete,json=participantMigrationComplete,proto3,oneof"` } +type SfuEvent_ChangePublishOptions struct { + // ChangePublishOptions is sent to signal the change in publish options such as a new codec or simulcast layers + ChangePublishOptions *ChangePublishOptions `protobuf:"bytes,27,opt,name=change_publish_options,json=changePublishOptions,proto3,oneof"` +} + func (*SfuEvent_SubscriberOffer) isSfuEvent_EventPayload() {} func (*SfuEvent_PublisherAnswer) isSfuEvent_EventPayload() {} @@ -465,6 +426,101 @@ func (*SfuEvent_ParticipantUpdated) isSfuEvent_EventPayload() {} func (*SfuEvent_ParticipantMigrationComplete) isSfuEvent_EventPayload() {} +func (*SfuEvent_ChangePublishOptions) isSfuEvent_EventPayload() {} + +type ChangePublishOptions struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + PublishOptions []*models.PublishOption `protobuf:"bytes,1,rep,name=publish_options,json=publishOptions,proto3" json:"publish_options,omitempty"` + Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` +} + +func (x *ChangePublishOptions) Reset() { + *x = ChangePublishOptions{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_event_events_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangePublishOptions) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangePublishOptions) ProtoMessage() {} + +func (x *ChangePublishOptions) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_event_events_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangePublishOptions.ProtoReflect.Descriptor instead. +func (*ChangePublishOptions) Descriptor() ([]byte, []int) { + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{1} +} + +func (x *ChangePublishOptions) GetPublishOptions() []*models.PublishOption { + if x != nil { + return x.PublishOptions + } + return nil +} + +func (x *ChangePublishOptions) GetReason() string { + if x != nil { + return x.Reason + } + return "" +} + +type ChangePublishOptionsComplete struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ChangePublishOptionsComplete) Reset() { + *x = ChangePublishOptionsComplete{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_event_events_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ChangePublishOptionsComplete) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ChangePublishOptionsComplete) ProtoMessage() {} + +func (x *ChangePublishOptionsComplete) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_event_events_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ChangePublishOptionsComplete.ProtoReflect.Descriptor instead. +func (*ChangePublishOptionsComplete) Descriptor() ([]byte, []int) { + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{2} +} + type ParticipantMigrationComplete struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -474,7 +530,7 @@ type ParticipantMigrationComplete struct { func (x *ParticipantMigrationComplete) Reset() { *x = ParticipantMigrationComplete{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[1] + mi := &file_video_sfu_event_events_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -487,7 +543,7 @@ func (x *ParticipantMigrationComplete) String() string { func (*ParticipantMigrationComplete) ProtoMessage() {} func (x *ParticipantMigrationComplete) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[1] + mi := &file_video_sfu_event_events_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -500,7 +556,7 @@ func (x *ParticipantMigrationComplete) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantMigrationComplete.ProtoReflect.Descriptor instead. func (*ParticipantMigrationComplete) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{1} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{3} } type PinsChanged struct { @@ -516,7 +572,7 @@ type PinsChanged struct { func (x *PinsChanged) Reset() { *x = PinsChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[2] + mi := &file_video_sfu_event_events_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -529,7 +585,7 @@ func (x *PinsChanged) String() string { func (*PinsChanged) ProtoMessage() {} func (x *PinsChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[2] + mi := &file_video_sfu_event_events_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -542,7 +598,7 @@ func (x *PinsChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use PinsChanged.ProtoReflect.Descriptor instead. func (*PinsChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{2} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{4} } func (x *PinsChanged) GetPins() []*models.Pin { @@ -565,7 +621,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[3] + mi := &file_video_sfu_event_events_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -578,7 +634,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[3] + mi := &file_video_sfu_event_events_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -591,7 +647,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{3} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{5} } func (x *Error) GetError() *models.Error { @@ -620,7 +676,7 @@ type ICETrickle struct { func (x *ICETrickle) Reset() { *x = ICETrickle{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[4] + mi := &file_video_sfu_event_events_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -633,7 +689,7 @@ func (x *ICETrickle) String() string { func (*ICETrickle) ProtoMessage() {} func (x *ICETrickle) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[4] + mi := &file_video_sfu_event_events_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -646,7 +702,7 @@ func (x *ICETrickle) ProtoReflect() protoreflect.Message { // Deprecated: Use ICETrickle.ProtoReflect.Descriptor instead. func (*ICETrickle) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{4} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{6} } func (x *ICETrickle) GetPeerType() models.PeerType { @@ -674,7 +730,7 @@ type ICERestart struct { func (x *ICERestart) Reset() { *x = ICERestart{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[5] + mi := &file_video_sfu_event_events_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -687,7 +743,7 @@ func (x *ICERestart) String() string { func (*ICERestart) ProtoMessage() {} func (x *ICERestart) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[5] + mi := &file_video_sfu_event_events_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -700,7 +756,7 @@ func (x *ICERestart) ProtoReflect() protoreflect.Message { // Deprecated: Use ICERestart.ProtoReflect.Descriptor instead. func (*ICERestart) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{5} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{7} } func (x *ICERestart) GetPeerType() models.PeerType { @@ -727,7 +783,7 @@ type SfuRequest struct { func (x *SfuRequest) Reset() { *x = SfuRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[6] + mi := &file_video_sfu_event_events_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -740,7 +796,7 @@ func (x *SfuRequest) String() string { func (*SfuRequest) ProtoMessage() {} func (x *SfuRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[6] + mi := &file_video_sfu_event_events_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -753,7 +809,7 @@ func (x *SfuRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SfuRequest.ProtoReflect.Descriptor instead. func (*SfuRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{6} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{8} } func (m *SfuRequest) GetRequestPayload() isSfuRequest_RequestPayload { @@ -818,7 +874,7 @@ type LeaveCallRequest struct { func (x *LeaveCallRequest) Reset() { *x = LeaveCallRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[7] + mi := &file_video_sfu_event_events_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -831,7 +887,7 @@ func (x *LeaveCallRequest) String() string { func (*LeaveCallRequest) ProtoMessage() {} func (x *LeaveCallRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[7] + mi := &file_video_sfu_event_events_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -844,7 +900,7 @@ func (x *LeaveCallRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use LeaveCallRequest.ProtoReflect.Descriptor instead. func (*LeaveCallRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{7} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{9} } func (x *LeaveCallRequest) GetSessionId() string { @@ -870,7 +926,7 @@ type HealthCheckRequest struct { func (x *HealthCheckRequest) Reset() { *x = HealthCheckRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[8] + mi := &file_video_sfu_event_events_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -883,7 +939,7 @@ func (x *HealthCheckRequest) String() string { func (*HealthCheckRequest) ProtoMessage() {} func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[8] + mi := &file_video_sfu_event_events_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -896,7 +952,7 @@ func (x *HealthCheckRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckRequest.ProtoReflect.Descriptor instead. func (*HealthCheckRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{8} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{10} } type HealthCheckResponse struct { @@ -910,7 +966,7 @@ type HealthCheckResponse struct { func (x *HealthCheckResponse) Reset() { *x = HealthCheckResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[9] + mi := &file_video_sfu_event_events_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -923,7 +979,7 @@ func (x *HealthCheckResponse) String() string { func (*HealthCheckResponse) ProtoMessage() {} func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[9] + mi := &file_video_sfu_event_events_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -936,7 +992,7 @@ func (x *HealthCheckResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use HealthCheckResponse.ProtoReflect.Descriptor instead. func (*HealthCheckResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{9} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{11} } func (x *HealthCheckResponse) GetParticipantCount() *models.ParticipantCount { @@ -965,7 +1021,7 @@ type TrackPublished struct { func (x *TrackPublished) Reset() { *x = TrackPublished{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[10] + mi := &file_video_sfu_event_events_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -978,7 +1034,7 @@ func (x *TrackPublished) String() string { func (*TrackPublished) ProtoMessage() {} func (x *TrackPublished) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[10] + mi := &file_video_sfu_event_events_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -991,7 +1047,7 @@ func (x *TrackPublished) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackPublished.ProtoReflect.Descriptor instead. func (*TrackPublished) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{10} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{12} } func (x *TrackPublished) GetUserId() string { @@ -1042,7 +1098,7 @@ type TrackUnpublished struct { func (x *TrackUnpublished) Reset() { *x = TrackUnpublished{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[11] + mi := &file_video_sfu_event_events_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1055,7 +1111,7 @@ func (x *TrackUnpublished) String() string { func (*TrackUnpublished) ProtoMessage() {} func (x *TrackUnpublished) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[11] + mi := &file_video_sfu_event_events_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1068,7 +1124,7 @@ func (x *TrackUnpublished) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackUnpublished.ProtoReflect.Descriptor instead. func (*TrackUnpublished) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{11} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{13} } func (x *TrackUnpublished) GetUserId() string { @@ -1115,6 +1171,7 @@ type JoinRequest struct { SessionId string `protobuf:"bytes,2,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` // dumb SDP that allow us to extract subscriber's decode codecs SubscriberSdp string `protobuf:"bytes,3,opt,name=subscriber_sdp,json=subscriberSdp,proto3" json:"subscriber_sdp,omitempty"` + PublisherSdp string `protobuf:"bytes,8,opt,name=publisher_sdp,json=publisherSdp,proto3" json:"publisher_sdp,omitempty"` ClientDetails *models.ClientDetails `protobuf:"bytes,4,opt,name=client_details,json=clientDetails,proto3" json:"client_details,omitempty"` // Deprecated: use ReconnectDetails instead // @@ -1131,14 +1188,15 @@ type JoinRequest struct { // proceeding further. // // Deprecated: Do not use. - FastReconnect bool `protobuf:"varint,6,opt,name=fast_reconnect,json=fastReconnect,proto3" json:"fast_reconnect,omitempty"` - ReconnectDetails *ReconnectDetails `protobuf:"bytes,7,opt,name=reconnect_details,json=reconnectDetails,proto3" json:"reconnect_details,omitempty"` + FastReconnect bool `protobuf:"varint,6,opt,name=fast_reconnect,json=fastReconnect,proto3" json:"fast_reconnect,omitempty"` + ReconnectDetails *ReconnectDetails `protobuf:"bytes,7,opt,name=reconnect_details,json=reconnectDetails,proto3" json:"reconnect_details,omitempty"` + PreferredPublishOptions []*models.PublishOption `protobuf:"bytes,9,rep,name=preferred_publish_options,json=preferredPublishOptions,proto3" json:"preferred_publish_options,omitempty"` } func (x *JoinRequest) Reset() { *x = JoinRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[12] + mi := &file_video_sfu_event_events_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1151,7 +1209,7 @@ func (x *JoinRequest) String() string { func (*JoinRequest) ProtoMessage() {} func (x *JoinRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[12] + mi := &file_video_sfu_event_events_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1164,7 +1222,7 @@ func (x *JoinRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinRequest.ProtoReflect.Descriptor instead. func (*JoinRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{12} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{14} } func (x *JoinRequest) GetToken() string { @@ -1188,6 +1246,13 @@ func (x *JoinRequest) GetSubscriberSdp() string { return "" } +func (x *JoinRequest) GetPublisherSdp() string { + if x != nil { + return x.PublisherSdp + } + return "" +} + func (x *JoinRequest) GetClientDetails() *models.ClientDetails { if x != nil { return x.ClientDetails @@ -1218,6 +1283,13 @@ func (x *JoinRequest) GetReconnectDetails() *ReconnectDetails { return nil } +func (x *JoinRequest) GetPreferredPublishOptions() []*models.PublishOption { + if x != nil { + return x.PreferredPublishOptions + } + return nil +} + type ReconnectDetails struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1235,7 +1307,7 @@ type ReconnectDetails struct { func (x *ReconnectDetails) Reset() { *x = ReconnectDetails{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[13] + mi := &file_video_sfu_event_events_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1248,7 +1320,7 @@ func (x *ReconnectDetails) String() string { func (*ReconnectDetails) ProtoMessage() {} func (x *ReconnectDetails) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[13] + mi := &file_video_sfu_event_events_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1261,7 +1333,7 @@ func (x *ReconnectDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use ReconnectDetails.ProtoReflect.Descriptor instead. func (*ReconnectDetails) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{13} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{15} } func (x *ReconnectDetails) GetStrategy() models.WebsocketReconnectStrategy { @@ -1319,7 +1391,7 @@ type Migration struct { func (x *Migration) Reset() { *x = Migration{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[14] + mi := &file_video_sfu_event_events_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1332,7 +1404,7 @@ func (x *Migration) String() string { func (*Migration) ProtoMessage() {} func (x *Migration) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[14] + mi := &file_video_sfu_event_events_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1345,7 +1417,7 @@ func (x *Migration) ProtoReflect() protoreflect.Message { // Deprecated: Use Migration.ProtoReflect.Descriptor instead. func (*Migration) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{14} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{16} } func (x *Migration) GetFromSfuId() string { @@ -1374,15 +1446,16 @@ type JoinResponse struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - CallState *models.CallState `protobuf:"bytes,1,opt,name=call_state,json=callState,proto3" json:"call_state,omitempty"` - Reconnected bool `protobuf:"varint,2,opt,name=reconnected,proto3" json:"reconnected,omitempty"` - FastReconnectDeadlineSeconds int32 `protobuf:"varint,3,opt,name=fast_reconnect_deadline_seconds,json=fastReconnectDeadlineSeconds,proto3" json:"fast_reconnect_deadline_seconds,omitempty"` + CallState *models.CallState `protobuf:"bytes,1,opt,name=call_state,json=callState,proto3" json:"call_state,omitempty"` + Reconnected bool `protobuf:"varint,2,opt,name=reconnected,proto3" json:"reconnected,omitempty"` + FastReconnectDeadlineSeconds int32 `protobuf:"varint,3,opt,name=fast_reconnect_deadline_seconds,json=fastReconnectDeadlineSeconds,proto3" json:"fast_reconnect_deadline_seconds,omitempty"` + PublishOptions []*models.PublishOption `protobuf:"bytes,4,rep,name=publish_options,json=publishOptions,proto3" json:"publish_options,omitempty"` } func (x *JoinResponse) Reset() { *x = JoinResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[15] + mi := &file_video_sfu_event_events_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1395,7 +1468,7 @@ func (x *JoinResponse) String() string { func (*JoinResponse) ProtoMessage() {} func (x *JoinResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[15] + mi := &file_video_sfu_event_events_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1408,7 +1481,7 @@ func (x *JoinResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use JoinResponse.ProtoReflect.Descriptor instead. func (*JoinResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{15} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{17} } func (x *JoinResponse) GetCallState() *models.CallState { @@ -1432,6 +1505,13 @@ func (x *JoinResponse) GetFastReconnectDeadlineSeconds() int32 { return 0 } +func (x *JoinResponse) GetPublishOptions() []*models.PublishOption { + if x != nil { + return x.PublishOptions + } + return nil +} + // ParticipantJoined is fired when a user joins a call type ParticipantJoined struct { state protoimpl.MessageState @@ -1445,7 +1525,7 @@ type ParticipantJoined struct { func (x *ParticipantJoined) Reset() { *x = ParticipantJoined{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[16] + mi := &file_video_sfu_event_events_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1458,7 +1538,7 @@ func (x *ParticipantJoined) String() string { func (*ParticipantJoined) ProtoMessage() {} func (x *ParticipantJoined) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[16] + mi := &file_video_sfu_event_events_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1471,7 +1551,7 @@ func (x *ParticipantJoined) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantJoined.ProtoReflect.Descriptor instead. func (*ParticipantJoined) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{16} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{18} } func (x *ParticipantJoined) GetCallCid() string { @@ -1501,7 +1581,7 @@ type ParticipantLeft struct { func (x *ParticipantLeft) Reset() { *x = ParticipantLeft{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[17] + mi := &file_video_sfu_event_events_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1514,7 +1594,7 @@ func (x *ParticipantLeft) String() string { func (*ParticipantLeft) ProtoMessage() {} func (x *ParticipantLeft) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[17] + mi := &file_video_sfu_event_events_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1527,7 +1607,7 @@ func (x *ParticipantLeft) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantLeft.ProtoReflect.Descriptor instead. func (*ParticipantLeft) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{17} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{19} } func (x *ParticipantLeft) GetCallCid() string { @@ -1557,7 +1637,7 @@ type ParticipantUpdated struct { func (x *ParticipantUpdated) Reset() { *x = ParticipantUpdated{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[18] + mi := &file_video_sfu_event_events_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1570,7 +1650,7 @@ func (x *ParticipantUpdated) String() string { func (*ParticipantUpdated) ProtoMessage() {} func (x *ParticipantUpdated) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[18] + mi := &file_video_sfu_event_events_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1583,7 +1663,7 @@ func (x *ParticipantUpdated) ProtoReflect() protoreflect.Message { // Deprecated: Use ParticipantUpdated.ProtoReflect.Descriptor instead. func (*ParticipantUpdated) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{18} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{20} } func (x *ParticipantUpdated) GetCallCid() string { @@ -1613,7 +1693,7 @@ type SubscriberOffer struct { func (x *SubscriberOffer) Reset() { *x = SubscriberOffer{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[19] + mi := &file_video_sfu_event_events_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1626,7 +1706,7 @@ func (x *SubscriberOffer) String() string { func (*SubscriberOffer) ProtoMessage() {} func (x *SubscriberOffer) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[19] + mi := &file_video_sfu_event_events_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1639,7 +1719,7 @@ func (x *SubscriberOffer) ProtoReflect() protoreflect.Message { // Deprecated: Use SubscriberOffer.ProtoReflect.Descriptor instead. func (*SubscriberOffer) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{19} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{21} } func (x *SubscriberOffer) GetIceRestart() bool { @@ -1667,7 +1747,7 @@ type PublisherAnswer struct { func (x *PublisherAnswer) Reset() { *x = PublisherAnswer{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[20] + mi := &file_video_sfu_event_events_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1680,7 +1760,7 @@ func (x *PublisherAnswer) String() string { func (*PublisherAnswer) ProtoMessage() {} func (x *PublisherAnswer) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[20] + mi := &file_video_sfu_event_events_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1693,7 +1773,7 @@ func (x *PublisherAnswer) ProtoReflect() protoreflect.Message { // Deprecated: Use PublisherAnswer.ProtoReflect.Descriptor instead. func (*PublisherAnswer) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{20} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{22} } func (x *PublisherAnswer) GetSdp() string { @@ -1716,7 +1796,7 @@ type ConnectionQualityChanged struct { func (x *ConnectionQualityChanged) Reset() { *x = ConnectionQualityChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[21] + mi := &file_video_sfu_event_events_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1729,7 +1809,7 @@ func (x *ConnectionQualityChanged) String() string { func (*ConnectionQualityChanged) ProtoMessage() {} func (x *ConnectionQualityChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[21] + mi := &file_video_sfu_event_events_proto_msgTypes[23] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1742,7 +1822,7 @@ func (x *ConnectionQualityChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionQualityChanged.ProtoReflect.Descriptor instead. func (*ConnectionQualityChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{21} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{23} } func (x *ConnectionQualityChanged) GetConnectionQualityUpdates() []*ConnectionQualityInfo { @@ -1765,7 +1845,7 @@ type ConnectionQualityInfo struct { func (x *ConnectionQualityInfo) Reset() { *x = ConnectionQualityInfo{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[22] + mi := &file_video_sfu_event_events_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1778,7 +1858,7 @@ func (x *ConnectionQualityInfo) String() string { func (*ConnectionQualityInfo) ProtoMessage() {} func (x *ConnectionQualityInfo) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[22] + mi := &file_video_sfu_event_events_proto_msgTypes[24] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1791,7 +1871,7 @@ func (x *ConnectionQualityInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use ConnectionQualityInfo.ProtoReflect.Descriptor instead. func (*ConnectionQualityInfo) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{22} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{24} } func (x *ConnectionQualityInfo) GetUserId() string { @@ -1828,7 +1908,7 @@ type DominantSpeakerChanged struct { func (x *DominantSpeakerChanged) Reset() { *x = DominantSpeakerChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[23] + mi := &file_video_sfu_event_events_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1841,7 +1921,7 @@ func (x *DominantSpeakerChanged) String() string { func (*DominantSpeakerChanged) ProtoMessage() {} func (x *DominantSpeakerChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[23] + mi := &file_video_sfu_event_events_proto_msgTypes[25] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1854,7 +1934,7 @@ func (x *DominantSpeakerChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use DominantSpeakerChanged.ProtoReflect.Descriptor instead. func (*DominantSpeakerChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{23} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{25} } func (x *DominantSpeakerChanged) GetUserId() string { @@ -1886,7 +1966,7 @@ type AudioLevel struct { func (x *AudioLevel) Reset() { *x = AudioLevel{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[24] + mi := &file_video_sfu_event_events_proto_msgTypes[26] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1899,7 +1979,7 @@ func (x *AudioLevel) String() string { func (*AudioLevel) ProtoMessage() {} func (x *AudioLevel) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[24] + mi := &file_video_sfu_event_events_proto_msgTypes[26] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1912,7 +1992,7 @@ func (x *AudioLevel) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioLevel.ProtoReflect.Descriptor instead. func (*AudioLevel) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{24} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{26} } func (x *AudioLevel) GetUserId() string { @@ -1955,7 +2035,7 @@ type AudioLevelChanged struct { func (x *AudioLevelChanged) Reset() { *x = AudioLevelChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[25] + mi := &file_video_sfu_event_events_proto_msgTypes[27] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1968,7 +2048,7 @@ func (x *AudioLevelChanged) String() string { func (*AudioLevelChanged) ProtoMessage() {} func (x *AudioLevelChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[25] + mi := &file_video_sfu_event_events_proto_msgTypes[27] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1981,7 +2061,7 @@ func (x *AudioLevelChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioLevelChanged.ProtoReflect.Descriptor instead. func (*AudioLevelChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{25} + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{27} } func (x *AudioLevelChanged) GetAudioLevels() []*AudioLevel { @@ -1991,66 +2071,20 @@ func (x *AudioLevelChanged) GetAudioLevels() []*AudioLevel { return nil } -type AudioMediaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ChannelCount int32 `protobuf:"varint,1,opt,name=channel_count,json=channelCount,proto3" json:"channel_count,omitempty"` -} - -func (x *AudioMediaRequest) Reset() { - *x = AudioMediaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[26] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AudioMediaRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AudioMediaRequest) ProtoMessage() {} - -func (x *AudioMediaRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[26] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use AudioMediaRequest.ProtoReflect.Descriptor instead. -func (*AudioMediaRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{26} -} - -func (x *AudioMediaRequest) GetChannelCount() int32 { - if x != nil { - return x.ChannelCount - } - return 0 -} - type AudioSender struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MediaRequest *AudioMediaRequest `protobuf:"bytes,1,opt,name=media_request,json=mediaRequest,proto3" json:"media_request,omitempty"` - Codec *models.Codec `protobuf:"bytes,2,opt,name=codec,proto3" json:"codec,omitempty"` + Codec *models.Codec `protobuf:"bytes,2,opt,name=codec,proto3" json:"codec,omitempty"` + TrackType models.TrackType `protobuf:"varint,3,opt,name=track_type,json=trackType,proto3,enum=stream.video.sfu.models.TrackType" json:"track_type,omitempty"` + PublishOptionId int32 `protobuf:"varint,4,opt,name=publish_option_id,json=publishOptionId,proto3" json:"publish_option_id,omitempty"` } func (x *AudioSender) Reset() { *x = AudioSender{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[27] + mi := &file_video_sfu_event_events_proto_msgTypes[28] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -2063,7 +2097,7 @@ func (x *AudioSender) String() string { func (*AudioSender) ProtoMessage() {} func (x *AudioSender) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[27] + mi := &file_video_sfu_event_events_proto_msgTypes[28] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -2076,14 +2110,7 @@ func (x *AudioSender) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioSender.ProtoReflect.Descriptor instead. func (*AudioSender) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{27} -} - -func (x *AudioSender) GetMediaRequest() *AudioMediaRequest { - if x != nil { - return x.MediaRequest - } - return nil + return file_video_sfu_event_events_proto_rawDescGZIP(), []int{28} } func (x *AudioSender) GetCodec() *models.Codec { @@ -2093,65 +2120,16 @@ func (x *AudioSender) GetCodec() *models.Codec { return nil } -type VideoMediaRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IdealHeight int32 `protobuf:"varint,1,opt,name=ideal_height,json=idealHeight,proto3" json:"ideal_height,omitempty"` - IdealWidth int32 `protobuf:"varint,2,opt,name=ideal_width,json=idealWidth,proto3" json:"ideal_width,omitempty"` - IdealFrameRate int32 `protobuf:"varint,3,opt,name=ideal_frame_rate,json=idealFrameRate,proto3" json:"ideal_frame_rate,omitempty"` -} - -func (x *VideoMediaRequest) Reset() { - *x = VideoMediaRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_event_events_proto_msgTypes[28] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VideoMediaRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VideoMediaRequest) ProtoMessage() {} - -func (x *VideoMediaRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_event_events_proto_msgTypes[28] - if protoimpl.UnsafeEnabled && x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use VideoMediaRequest.ProtoReflect.Descriptor instead. -func (*VideoMediaRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_event_events_proto_rawDescGZIP(), []int{28} -} - -func (x *VideoMediaRequest) GetIdealHeight() int32 { - if x != nil { - return x.IdealHeight - } - return 0 -} - -func (x *VideoMediaRequest) GetIdealWidth() int32 { +func (x *AudioSender) GetTrackType() models.TrackType { if x != nil { - return x.IdealWidth + return x.TrackType } - return 0 + return models.TrackType(0) } -func (x *VideoMediaRequest) GetIdealFrameRate() int32 { +func (x *AudioSender) GetPublishOptionId() int32 { if x != nil { - return x.IdealFrameRate + return x.PublishOptionId } return 0 } @@ -2164,13 +2142,13 @@ type VideoLayerSetting struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"` - MaxBitrate int32 `protobuf:"varint,3,opt,name=max_bitrate,json=maxBitrate,proto3" json:"max_bitrate,omitempty"` - ScaleResolutionDownBy float32 `protobuf:"fixed32,4,opt,name=scale_resolution_down_by,json=scaleResolutionDownBy,proto3" json:"scale_resolution_down_by,omitempty"` - Priority VideoLayerSetting_Priority `protobuf:"varint,5,opt,name=priority,proto3,enum=stream.video.sfu.event.VideoLayerSetting_Priority" json:"priority,omitempty"` - Codec *models.Codec `protobuf:"bytes,6,opt,name=codec,proto3" json:"codec,omitempty"` - MaxFramerate uint32 `protobuf:"varint,7,opt,name=max_framerate,json=maxFramerate,proto3" json:"max_framerate,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Active bool `protobuf:"varint,2,opt,name=active,proto3" json:"active,omitempty"` + MaxBitrate int32 `protobuf:"varint,3,opt,name=max_bitrate,json=maxBitrate,proto3" json:"max_bitrate,omitempty"` + ScaleResolutionDownBy float32 `protobuf:"fixed32,4,opt,name=scale_resolution_down_by,json=scaleResolutionDownBy,proto3" json:"scale_resolution_down_by,omitempty"` + Codec *models.Codec `protobuf:"bytes,6,opt,name=codec,proto3" json:"codec,omitempty"` + MaxFramerate uint32 `protobuf:"varint,7,opt,name=max_framerate,json=maxFramerate,proto3" json:"max_framerate,omitempty"` + ScalabilityMode string `protobuf:"bytes,8,opt,name=scalability_mode,json=scalabilityMode,proto3" json:"scalability_mode,omitempty"` } func (x *VideoLayerSetting) Reset() { @@ -2233,13 +2211,6 @@ func (x *VideoLayerSetting) GetScaleResolutionDownBy() float32 { return 0 } -func (x *VideoLayerSetting) GetPriority() VideoLayerSetting_Priority { - if x != nil { - return x.Priority - } - return VideoLayerSetting_PRIORITY_HIGH_UNSPECIFIED -} - func (x *VideoLayerSetting) GetCodec() *models.Codec { if x != nil { return x.Codec @@ -2254,14 +2225,22 @@ func (x *VideoLayerSetting) GetMaxFramerate() uint32 { return 0 } +func (x *VideoLayerSetting) GetScalabilityMode() string { + if x != nil { + return x.ScalabilityMode + } + return "" +} + type VideoSender struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - MediaRequest *VideoMediaRequest `protobuf:"bytes,1,opt,name=media_request,json=mediaRequest,proto3" json:"media_request,omitempty"` - Codec *models.Codec `protobuf:"bytes,2,opt,name=codec,proto3" json:"codec,omitempty"` - Layers []*VideoLayerSetting `protobuf:"bytes,3,rep,name=layers,proto3" json:"layers,omitempty"` + Codec *models.Codec `protobuf:"bytes,2,opt,name=codec,proto3" json:"codec,omitempty"` + Layers []*VideoLayerSetting `protobuf:"bytes,3,rep,name=layers,proto3" json:"layers,omitempty"` + TrackType models.TrackType `protobuf:"varint,4,opt,name=track_type,json=trackType,proto3,enum=stream.video.sfu.models.TrackType" json:"track_type,omitempty"` + PublishOptionId int32 `protobuf:"varint,5,opt,name=publish_option_id,json=publishOptionId,proto3" json:"publish_option_id,omitempty"` } func (x *VideoSender) Reset() { @@ -2296,13 +2275,6 @@ func (*VideoSender) Descriptor() ([]byte, []int) { return file_video_sfu_event_events_proto_rawDescGZIP(), []int{30} } -func (x *VideoSender) GetMediaRequest() *VideoMediaRequest { - if x != nil { - return x.MediaRequest - } - return nil -} - func (x *VideoSender) GetCodec() *models.Codec { if x != nil { return x.Codec @@ -2317,6 +2289,20 @@ func (x *VideoSender) GetLayers() []*VideoLayerSetting { return nil } +func (x *VideoSender) GetTrackType() models.TrackType { + if x != nil { + return x.TrackType + } + return models.TrackType(0) +} + +func (x *VideoSender) GetPublishOptionId() int32 { + if x != nil { + return x.PublishOptionId + } + return 0 +} + // sent to users when they need to change the quality of their video type ChangePublishQuality struct { state protoimpl.MessageState @@ -2552,7 +2538,7 @@ var file_video_sfu_event_events_proto_rawDesc = []byte{ 0x75, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, 0x75, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x70, 0x63, 0x2f, 0x73, 0x69, 0x67, 0x6e, - 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbf, 0x0e, 0x0a, 0x08, 0x53, 0x66, 0x75, + 0x61, 0x6c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xa5, 0x0f, 0x0a, 0x08, 0x53, 0x66, 0x75, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x12, 0x54, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x6f, 0x66, 0x66, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, @@ -2667,122 +2653,147 @@ var file_video_sfu_event_events_proto_rawDesc = []byte{ 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x48, 0x00, 0x52, 0x1c, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x61, - 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x3f, 0x0a, 0x0b, 0x50, 0x69, - 0x6e, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x70, 0x69, 0x6e, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x52, 0x04, 0x70, 0x69, 0x6e, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x05, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, - 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x62, 0x0a, 0x12, 0x72, - 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, - 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, - 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x11, 0x72, 0x65, - 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, - 0x71, 0x0a, 0x0a, 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x12, 0x3e, 0x0a, - 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, - 0x0d, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, - 0x74, 0x65, 0x22, 0x4c, 0x0a, 0x0a, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, - 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x22, 0xa3, 0x02, 0x0a, 0x0a, 0x53, 0x66, 0x75, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x48, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4a, - 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6a, 0x6f, - 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x5e, 0x0a, 0x14, 0x68, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, - 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, - 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x58, 0x0a, 0x12, 0x6c, 0x65, 0x61, - 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, - 0x65, 0x61, 0x76, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, - 0x00, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, - 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x49, 0x0a, 0x10, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, - 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, - 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x64, 0x0a, 0x16, 0x63, 0x68, 0x61, + 0x6e, 0x67, 0x65, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x18, 0x1b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, + 0x6e, 0x74, 0x2e, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x48, 0x00, 0x52, 0x14, 0x63, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, + 0x0f, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, + 0x22, 0x7f, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6d, 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, - 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, - 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x43, - 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8, 0x01, 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x63, 0x6b, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, - 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, - 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x6e, 0x22, 0x1e, 0x0a, 0x1c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x22, 0x1e, 0x0a, 0x1c, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, + 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6d, 0x70, 0x6c, 0x65, 0x74, + 0x65, 0x22, 0x3f, 0x0a, 0x0b, 0x50, 0x69, 0x6e, 0x73, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, + 0x12, 0x30, 0x0a, 0x04, 0x70, 0x69, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, + 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x69, 0x6e, 0x52, 0x04, 0x70, 0x69, + 0x6e, 0x73, 0x22, 0xa1, 0x01, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x34, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x12, 0x62, 0x0a, 0x12, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, + 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x22, 0x8f, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, + 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, + 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, + 0x65, 0x67, 0x79, 0x52, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x71, 0x0a, 0x0a, 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, + 0x63, 0x6b, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, + 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x69, 0x63, 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x64, + 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x65, + 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x22, 0x4c, 0x0a, 0x0a, 0x49, 0x43, 0x45, + 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, + 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, + 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, + 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa3, 0x02, 0x0a, 0x0a, 0x53, 0x66, 0x75, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x48, 0x0a, 0x0c, 0x6a, 0x6f, 0x69, 0x6e, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, - 0x54, 0x72, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x48, 0x00, 0x52, 0x0b, 0x6a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x5e, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, + 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2a, + 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, + 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, + 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x68, 0x65, + 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x58, 0x0a, 0x12, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x5f, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x72, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x10, 0x6c, 0x65, 0x61, 0x76, 0x65, 0x43, + 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x42, 0x11, 0x0a, 0x0f, 0x72, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x5f, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x49, 0x0a, + 0x10, 0x4c, 0x65, 0x61, 0x76, 0x65, 0x43, 0x61, 0x6c, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x14, 0x0a, 0x12, 0x48, 0x65, 0x61, 0x6c, + 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x6d, + 0x0a, 0x13, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x11, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, + 0x70, 0x61, 0x6e, 0x74, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, - 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, - 0x61, 0x6e, 0x74, 0x22, 0xff, 0x02, 0x0a, 0x0b, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, + 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x52, 0x10, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0xc8, 0x01, + 0x0a, 0x0e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, + 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x64, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x53, 0x64, 0x70, 0x12, - 0x4d, 0x0a, 0x0e, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, + 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, + 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x8f, 0x02, 0x0a, 0x10, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x64, 0x12, 0x17, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, + 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, + 0x05, 0x63, 0x61, 0x75, 0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2d, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x05, 0x63, 0x61, 0x75, + 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, - 0x0d, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x43, - 0x0a, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0d, 0x66, 0x61, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x55, - 0x0a, 0x11, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, - 0x69, 0x6c, 0x73, 0x52, 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x88, 0x03, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, + 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, + 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x88, 0x04, 0x0a, 0x0b, 0x4a, + 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x74, 0x6f, + 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x74, 0x6f, 0x6b, 0x65, 0x6e, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x25, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x64, + 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, + 0x62, 0x65, 0x72, 0x53, 0x64, 0x70, 0x12, 0x23, 0x0a, 0x0d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x65, 0x72, 0x5f, 0x73, 0x64, 0x70, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x53, 0x64, 0x70, 0x12, 0x4d, 0x0a, 0x0e, 0x63, + 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0d, 0x63, 0x6c, 0x69, + 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x09, 0x6d, 0x69, + 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, + 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x4d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x6d, 0x69, 0x67, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, + 0x29, 0x0a, 0x0e, 0x66, 0x61, 0x73, 0x74, 0x5f, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, + 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0d, 0x66, 0x61, 0x73, + 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x12, 0x55, 0x0a, 0x11, 0x72, 0x65, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x5f, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, + 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x52, + 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, + 0x10, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x12, 0x62, 0x0a, 0x19, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x09, + 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x17, 0x70, 0x72, + 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x88, 0x03, 0x0a, 0x10, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x4f, 0x0a, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x33, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, @@ -2820,7 +2831,7 @@ var file_video_sfu_event_events_proto_rawDesc = []byte{ 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xba, 0x01, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x52, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x8b, 0x02, 0x0a, 0x0c, 0x4a, 0x6f, 0x69, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, @@ -2832,171 +2843,159 @@ var file_video_sfu_event_events_proto_rawDesc = []byte{ 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x1c, 0x66, 0x61, 0x73, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x44, 0x65, 0x61, 0x64, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x73, 0x22, 0x76, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, - 0x6e, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, + 0x6e, 0x64, 0x73, 0x12, 0x4f, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x76, 0x0a, 0x11, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x4a, 0x6f, 0x69, 0x6e, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6c, + 0x6c, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x6c, + 0x6c, 0x43, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, + 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, + 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x0f, + 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4c, 0x65, 0x66, 0x74, 0x12, + 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, + 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, + 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, + 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, + 0x6e, 0x74, 0x22, 0x77, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, + 0x74, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, - 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x74, 0x0a, 0x0f, 0x50, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x4c, 0x65, 0x66, 0x74, 0x12, 0x19, - 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x5f, 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x43, 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, - 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, + 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x0f, 0x53, + 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x1f, + 0x0a, 0x0b, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, + 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, + 0x70, 0x22, 0x23, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x03, 0x73, 0x64, 0x70, 0x22, 0x87, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, + 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x64, 0x12, 0x6b, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, + 0x6e, 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, + 0x74, 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, + 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, + 0x22, 0xaa, 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, 0x17, 0x0a, 0x07, 0x75, 0x73, + 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, + 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, + 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x49, 0x64, 0x12, 0x59, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, + 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, - 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x22, 0x77, 0x0a, 0x12, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x63, 0x61, 0x6c, 0x6c, 0x5f, - 0x63, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x61, 0x6c, 0x6c, 0x43, - 0x69, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x50, 0x0a, + 0x16, 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, + 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, + 0x7b, 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, + 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, + 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, + 0x73, 0x5f, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, + 0x52, 0x0a, 0x69, 0x73, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0x5a, 0x0a, 0x11, + 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, + 0x64, 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0b, 0x61, 0x75, 0x64, + 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x22, 0xb2, 0x01, 0x0a, 0x0b, 0x41, 0x75, 0x64, + 0x69, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, + 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x50, 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x52, 0x0b, 0x70, - 0x61, 0x72, 0x74, 0x69, 0x63, 0x69, 0x70, 0x61, 0x6e, 0x74, 0x22, 0x44, 0x0a, 0x0f, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4f, 0x66, 0x66, 0x65, 0x72, 0x12, 0x1f, 0x0a, - 0x0b, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0a, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, - 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x70, - 0x22, 0x23, 0x0a, 0x0f, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x41, 0x6e, 0x73, - 0x77, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x73, 0x64, 0x70, 0x22, 0x87, 0x01, 0x0a, 0x18, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x43, 0x68, 0x61, 0x6e, 0x67, - 0x65, 0x64, 0x12, 0x6b, 0x0a, 0x1a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, - 0x5f, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, - 0x79, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x18, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x22, - 0xaa, 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, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, - 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, - 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x59, 0x0a, 0x12, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, - 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, - 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x11, 0x63, 0x6f, 0x6e, 0x6e, 0x65, - 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x50, 0x0a, 0x16, - 0x44, 0x6f, 0x6d, 0x69, 0x6e, 0x61, 0x6e, 0x74, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x65, 0x72, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, - 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x7b, - 0x0a, 0x0a, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x17, 0x0a, 0x07, - 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, - 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, - 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x02, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, - 0x5f, 0x73, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x0a, 0x69, 0x73, 0x53, 0x70, 0x65, 0x61, 0x6b, 0x69, 0x6e, 0x67, 0x22, 0x5a, 0x0a, 0x11, 0x41, - 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, - 0x12, 0x45, 0x0a, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, - 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x52, 0x0b, 0x61, 0x75, 0x64, 0x69, - 0x6f, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x73, 0x22, 0x38, 0x0a, 0x11, 0x41, 0x75, 0x64, 0x69, 0x6f, - 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x23, 0x0a, 0x0d, - 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0c, 0x63, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x75, 0x6e, - 0x74, 0x22, 0x93, 0x01, 0x0a, 0x0b, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x12, 0x4e, 0x0a, 0x0d, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, - 0x74, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x52, 0x0c, 0x6d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, - 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x22, 0x81, 0x01, 0x0a, 0x11, 0x56, 0x69, 0x64, 0x65, - 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x21, 0x0a, - 0x0c, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x48, 0x65, 0x69, 0x67, 0x68, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x57, 0x69, 0x64, 0x74, - 0x68, 0x12, 0x28, 0x0a, 0x10, 0x69, 0x64, 0x65, 0x61, 0x6c, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, - 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x69, 0x64, 0x65, - 0x61, 0x6c, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x52, 0x61, 0x74, 0x65, 0x22, 0xad, 0x03, 0x0a, 0x11, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, - 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x42, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x12, 0x37, - 0x0a, 0x18, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x02, - 0x52, 0x15, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, 0x69, 0x6f, - 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x79, 0x12, 0x4e, 0x0a, 0x08, 0x70, 0x72, 0x69, 0x6f, 0x72, - 0x69, 0x74, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x32, 0x2e, 0x73, 0x74, 0x72, 0x65, - 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, - 0x6e, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x52, 0x08, 0x70, - 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x23, 0x0a, - 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, 0x18, 0x07, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, 0x72, 0x61, - 0x74, 0x65, 0x22, 0x67, 0x0a, 0x08, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x1d, - 0x0a, 0x19, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x5f, - 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x10, 0x0a, - 0x0c, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x01, 0x12, - 0x13, 0x0a, 0x0f, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x45, 0x44, 0x49, - 0x55, 0x4d, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x50, 0x52, 0x49, 0x4f, 0x52, 0x49, 0x54, 0x59, - 0x5f, 0x56, 0x45, 0x52, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x10, 0x03, 0x22, 0xd6, 0x01, 0x0a, 0x0b, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, 0x4e, 0x0a, 0x0d, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, - 0x6f, 0x4d, 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x52, 0x0c, 0x6d, - 0x65, 0x64, 0x69, 0x61, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x63, - 0x6f, 0x64, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, - 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, - 0x63, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, - 0x4c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x06, 0x6c, 0x61, - 0x79, 0x65, 0x72, 0x73, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x50, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x48, 0x0a, - 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x41, 0x75, - 0x64, 0x69, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x61, 0x75, 0x64, 0x69, 0x6f, - 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, - 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x65, 0x6e, - 0x64, 0x65, 0x72, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, - 0x73, 0x22, 0x79, 0x0a, 0x11, 0x43, 0x61, 0x6c, 0x6c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, + 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x41, + 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, + 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x9f, 0x02, + 0x0a, 0x11, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, + 0x69, 0x6e, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, + 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x12, + 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, 0x62, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, + 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x6d, 0x61, 0x78, 0x42, 0x69, 0x74, 0x72, 0x61, 0x74, 0x65, + 0x12, 0x37, 0x0a, 0x18, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x6c, 0x75, + 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x5f, 0x62, 0x79, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x02, 0x52, 0x15, 0x73, 0x63, 0x61, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x6f, 0x6c, 0x75, 0x74, + 0x69, 0x6f, 0x6e, 0x44, 0x6f, 0x77, 0x6e, 0x42, 0x79, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, + 0x65, 0x63, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, + 0x23, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x66, 0x72, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x74, 0x65, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x46, 0x72, 0x61, 0x6d, 0x65, + 0x72, 0x61, 0x74, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x69, 0x6c, + 0x69, 0x74, 0x79, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x73, 0x63, 0x61, 0x6c, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x22, + 0xf5, 0x01, 0x0a, 0x0b, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x12, + 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x6c, 0x6c, 0x47, 0x72, 0x61, - 0x6e, 0x74, 0x73, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, 0x72, 0x61, 0x6e, - 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, 0x47, 0x0a, 0x06, - 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2e, 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x09, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x64, - 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x6c, - 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, 0x06, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x64, 0x42, 0x0b, 0x53, 0x66, 0x75, 0x45, 0x76, 0x65, 0x6e, 0x74, - 0x73, 0x56, 0x31, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x69, - 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, 0x75, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0xaa, 0x02, 0x1a, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x66, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x52, 0x05, + 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x41, 0x0a, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, + 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, + 0x69, 0x64, 0x65, 0x6f, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, + 0x52, 0x06, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x12, 0x41, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, + 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x11, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xaa, 0x01, 0x0a, 0x14, 0x43, 0x68, 0x61, 0x6e, + 0x67, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, + 0x12, 0x48, 0x0a, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x61, 0x75, + 0x64, 0x69, 0x6f, 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x12, 0x48, 0x0a, 0x0d, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x5f, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, + 0x53, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x53, 0x65, 0x6e, + 0x64, 0x65, 0x72, 0x73, 0x22, 0x79, 0x0a, 0x11, 0x43, 0x61, 0x6c, 0x6c, 0x47, 0x72, 0x61, 0x6e, + 0x74, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x4a, 0x0a, 0x0e, 0x63, 0x75, 0x72, + 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x67, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x61, 0x6c, 0x6c, + 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x52, 0x0d, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x47, + 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x22, + 0x47, 0x0a, 0x06, 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x12, 0x3d, 0x0a, 0x06, 0x72, 0x65, 0x61, + 0x73, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2e, 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x4d, 0x0a, 0x09, 0x43, 0x61, 0x6c, 0x6c, + 0x45, 0x6e, 0x64, 0x65, 0x64, 0x12, 0x40, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x28, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, + 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x52, + 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x42, 0x64, 0x42, 0x0b, 0x53, 0x66, 0x75, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x73, 0x56, 0x31, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, + 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, 0x75, 0x2f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0xaa, 0x02, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x76, 0x31, 0x2e, 0x53, 0x66, 0x75, 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -3011,46 +3010,45 @@ func file_video_sfu_event_events_proto_rawDescGZIP() []byte { return file_video_sfu_event_events_proto_rawDescData } -var file_video_sfu_event_events_proto_enumTypes = make([]protoimpl.EnumInfo, 1) var file_video_sfu_event_events_proto_msgTypes = make([]protoimpl.MessageInfo, 35) var file_video_sfu_event_events_proto_goTypes = []interface{}{ - (VideoLayerSetting_Priority)(0), // 0: stream.video.sfu.event.VideoLayerSetting.Priority - (*SfuEvent)(nil), // 1: stream.video.sfu.event.SfuEvent - (*ParticipantMigrationComplete)(nil), // 2: stream.video.sfu.event.ParticipantMigrationComplete - (*PinsChanged)(nil), // 3: stream.video.sfu.event.PinsChanged - (*Error)(nil), // 4: stream.video.sfu.event.Error - (*ICETrickle)(nil), // 5: stream.video.sfu.event.ICETrickle - (*ICERestart)(nil), // 6: stream.video.sfu.event.ICERestart - (*SfuRequest)(nil), // 7: stream.video.sfu.event.SfuRequest - (*LeaveCallRequest)(nil), // 8: stream.video.sfu.event.LeaveCallRequest - (*HealthCheckRequest)(nil), // 9: stream.video.sfu.event.HealthCheckRequest - (*HealthCheckResponse)(nil), // 10: stream.video.sfu.event.HealthCheckResponse - (*TrackPublished)(nil), // 11: stream.video.sfu.event.TrackPublished - (*TrackUnpublished)(nil), // 12: stream.video.sfu.event.TrackUnpublished - (*JoinRequest)(nil), // 13: stream.video.sfu.event.JoinRequest - (*ReconnectDetails)(nil), // 14: stream.video.sfu.event.ReconnectDetails - (*Migration)(nil), // 15: stream.video.sfu.event.Migration - (*JoinResponse)(nil), // 16: stream.video.sfu.event.JoinResponse - (*ParticipantJoined)(nil), // 17: stream.video.sfu.event.ParticipantJoined - (*ParticipantLeft)(nil), // 18: stream.video.sfu.event.ParticipantLeft - (*ParticipantUpdated)(nil), // 19: stream.video.sfu.event.ParticipantUpdated - (*SubscriberOffer)(nil), // 20: stream.video.sfu.event.SubscriberOffer - (*PublisherAnswer)(nil), // 21: stream.video.sfu.event.PublisherAnswer - (*ConnectionQualityChanged)(nil), // 22: stream.video.sfu.event.ConnectionQualityChanged - (*ConnectionQualityInfo)(nil), // 23: stream.video.sfu.event.ConnectionQualityInfo - (*DominantSpeakerChanged)(nil), // 24: stream.video.sfu.event.DominantSpeakerChanged - (*AudioLevel)(nil), // 25: stream.video.sfu.event.AudioLevel - (*AudioLevelChanged)(nil), // 26: stream.video.sfu.event.AudioLevelChanged - (*AudioMediaRequest)(nil), // 27: stream.video.sfu.event.AudioMediaRequest + (*SfuEvent)(nil), // 0: stream.video.sfu.event.SfuEvent + (*ChangePublishOptions)(nil), // 1: stream.video.sfu.event.ChangePublishOptions + (*ChangePublishOptionsComplete)(nil), // 2: stream.video.sfu.event.ChangePublishOptionsComplete + (*ParticipantMigrationComplete)(nil), // 3: stream.video.sfu.event.ParticipantMigrationComplete + (*PinsChanged)(nil), // 4: stream.video.sfu.event.PinsChanged + (*Error)(nil), // 5: stream.video.sfu.event.Error + (*ICETrickle)(nil), // 6: stream.video.sfu.event.ICETrickle + (*ICERestart)(nil), // 7: stream.video.sfu.event.ICERestart + (*SfuRequest)(nil), // 8: stream.video.sfu.event.SfuRequest + (*LeaveCallRequest)(nil), // 9: stream.video.sfu.event.LeaveCallRequest + (*HealthCheckRequest)(nil), // 10: stream.video.sfu.event.HealthCheckRequest + (*HealthCheckResponse)(nil), // 11: stream.video.sfu.event.HealthCheckResponse + (*TrackPublished)(nil), // 12: stream.video.sfu.event.TrackPublished + (*TrackUnpublished)(nil), // 13: stream.video.sfu.event.TrackUnpublished + (*JoinRequest)(nil), // 14: stream.video.sfu.event.JoinRequest + (*ReconnectDetails)(nil), // 15: stream.video.sfu.event.ReconnectDetails + (*Migration)(nil), // 16: stream.video.sfu.event.Migration + (*JoinResponse)(nil), // 17: stream.video.sfu.event.JoinResponse + (*ParticipantJoined)(nil), // 18: stream.video.sfu.event.ParticipantJoined + (*ParticipantLeft)(nil), // 19: stream.video.sfu.event.ParticipantLeft + (*ParticipantUpdated)(nil), // 20: stream.video.sfu.event.ParticipantUpdated + (*SubscriberOffer)(nil), // 21: stream.video.sfu.event.SubscriberOffer + (*PublisherAnswer)(nil), // 22: stream.video.sfu.event.PublisherAnswer + (*ConnectionQualityChanged)(nil), // 23: stream.video.sfu.event.ConnectionQualityChanged + (*ConnectionQualityInfo)(nil), // 24: stream.video.sfu.event.ConnectionQualityInfo + (*DominantSpeakerChanged)(nil), // 25: stream.video.sfu.event.DominantSpeakerChanged + (*AudioLevel)(nil), // 26: stream.video.sfu.event.AudioLevel + (*AudioLevelChanged)(nil), // 27: stream.video.sfu.event.AudioLevelChanged (*AudioSender)(nil), // 28: stream.video.sfu.event.AudioSender - (*VideoMediaRequest)(nil), // 29: stream.video.sfu.event.VideoMediaRequest - (*VideoLayerSetting)(nil), // 30: stream.video.sfu.event.VideoLayerSetting - (*VideoSender)(nil), // 31: stream.video.sfu.event.VideoSender - (*ChangePublishQuality)(nil), // 32: stream.video.sfu.event.ChangePublishQuality - (*CallGrantsUpdated)(nil), // 33: stream.video.sfu.event.CallGrantsUpdated - (*GoAway)(nil), // 34: stream.video.sfu.event.GoAway - (*CallEnded)(nil), // 35: stream.video.sfu.event.CallEnded - (*models.ICETrickle)(nil), // 36: stream.video.sfu.models.ICETrickle + (*VideoLayerSetting)(nil), // 29: stream.video.sfu.event.VideoLayerSetting + (*VideoSender)(nil), // 30: stream.video.sfu.event.VideoSender + (*ChangePublishQuality)(nil), // 31: stream.video.sfu.event.ChangePublishQuality + (*CallGrantsUpdated)(nil), // 32: stream.video.sfu.event.CallGrantsUpdated + (*GoAway)(nil), // 33: stream.video.sfu.event.GoAway + (*CallEnded)(nil), // 34: stream.video.sfu.event.CallEnded + (*models.ICETrickle)(nil), // 35: stream.video.sfu.models.ICETrickle + (*models.PublishOption)(nil), // 36: stream.video.sfu.models.PublishOption (*models.Pin)(nil), // 37: stream.video.sfu.models.Pin (*models.Error)(nil), // 38: stream.video.sfu.models.Error (models.WebsocketReconnectStrategy)(0), // 39: stream.video.sfu.models.WebsocketReconnectStrategy @@ -3070,73 +3068,76 @@ var file_video_sfu_event_events_proto_goTypes = []interface{}{ (models.CallEndedReason)(0), // 53: stream.video.sfu.models.CallEndedReason } var file_video_sfu_event_events_proto_depIdxs = []int32{ - 20, // 0: stream.video.sfu.event.SfuEvent.subscriber_offer:type_name -> stream.video.sfu.event.SubscriberOffer - 21, // 1: stream.video.sfu.event.SfuEvent.publisher_answer:type_name -> stream.video.sfu.event.PublisherAnswer - 22, // 2: stream.video.sfu.event.SfuEvent.connection_quality_changed:type_name -> stream.video.sfu.event.ConnectionQualityChanged - 26, // 3: stream.video.sfu.event.SfuEvent.audio_level_changed:type_name -> stream.video.sfu.event.AudioLevelChanged - 36, // 4: stream.video.sfu.event.SfuEvent.ice_trickle:type_name -> stream.video.sfu.models.ICETrickle - 32, // 5: stream.video.sfu.event.SfuEvent.change_publish_quality:type_name -> stream.video.sfu.event.ChangePublishQuality - 17, // 6: stream.video.sfu.event.SfuEvent.participant_joined:type_name -> stream.video.sfu.event.ParticipantJoined - 18, // 7: stream.video.sfu.event.SfuEvent.participant_left:type_name -> stream.video.sfu.event.ParticipantLeft - 24, // 8: stream.video.sfu.event.SfuEvent.dominant_speaker_changed:type_name -> stream.video.sfu.event.DominantSpeakerChanged - 16, // 9: stream.video.sfu.event.SfuEvent.join_response:type_name -> stream.video.sfu.event.JoinResponse - 10, // 10: stream.video.sfu.event.SfuEvent.health_check_response:type_name -> stream.video.sfu.event.HealthCheckResponse - 11, // 11: stream.video.sfu.event.SfuEvent.track_published:type_name -> stream.video.sfu.event.TrackPublished - 12, // 12: stream.video.sfu.event.SfuEvent.track_unpublished:type_name -> stream.video.sfu.event.TrackUnpublished - 4, // 13: stream.video.sfu.event.SfuEvent.error:type_name -> stream.video.sfu.event.Error - 33, // 14: stream.video.sfu.event.SfuEvent.call_grants_updated:type_name -> stream.video.sfu.event.CallGrantsUpdated - 34, // 15: stream.video.sfu.event.SfuEvent.go_away:type_name -> stream.video.sfu.event.GoAway - 6, // 16: stream.video.sfu.event.SfuEvent.ice_restart:type_name -> stream.video.sfu.event.ICERestart - 3, // 17: stream.video.sfu.event.SfuEvent.pins_updated:type_name -> stream.video.sfu.event.PinsChanged - 35, // 18: stream.video.sfu.event.SfuEvent.call_ended:type_name -> stream.video.sfu.event.CallEnded - 19, // 19: stream.video.sfu.event.SfuEvent.participant_updated:type_name -> stream.video.sfu.event.ParticipantUpdated - 2, // 20: stream.video.sfu.event.SfuEvent.participant_migration_complete:type_name -> stream.video.sfu.event.ParticipantMigrationComplete - 37, // 21: stream.video.sfu.event.PinsChanged.pins:type_name -> stream.video.sfu.models.Pin - 38, // 22: stream.video.sfu.event.Error.error:type_name -> stream.video.sfu.models.Error - 39, // 23: stream.video.sfu.event.Error.reconnect_strategy:type_name -> stream.video.sfu.models.WebsocketReconnectStrategy - 40, // 24: stream.video.sfu.event.ICETrickle.peer_type:type_name -> stream.video.sfu.models.PeerType - 40, // 25: stream.video.sfu.event.ICERestart.peer_type:type_name -> stream.video.sfu.models.PeerType - 13, // 26: stream.video.sfu.event.SfuRequest.join_request:type_name -> stream.video.sfu.event.JoinRequest - 9, // 27: stream.video.sfu.event.SfuRequest.health_check_request:type_name -> stream.video.sfu.event.HealthCheckRequest - 8, // 28: stream.video.sfu.event.SfuRequest.leave_call_request:type_name -> stream.video.sfu.event.LeaveCallRequest - 41, // 29: stream.video.sfu.event.HealthCheckResponse.participant_count:type_name -> stream.video.sfu.models.ParticipantCount - 42, // 30: stream.video.sfu.event.TrackPublished.type:type_name -> stream.video.sfu.models.TrackType - 43, // 31: stream.video.sfu.event.TrackPublished.participant:type_name -> stream.video.sfu.models.Participant - 42, // 32: stream.video.sfu.event.TrackUnpublished.type:type_name -> stream.video.sfu.models.TrackType - 44, // 33: stream.video.sfu.event.TrackUnpublished.cause:type_name -> stream.video.sfu.models.TrackUnpublishReason - 43, // 34: stream.video.sfu.event.TrackUnpublished.participant:type_name -> stream.video.sfu.models.Participant - 45, // 35: stream.video.sfu.event.JoinRequest.client_details:type_name -> stream.video.sfu.models.ClientDetails - 15, // 36: stream.video.sfu.event.JoinRequest.migration:type_name -> stream.video.sfu.event.Migration - 14, // 37: stream.video.sfu.event.JoinRequest.reconnect_details:type_name -> stream.video.sfu.event.ReconnectDetails - 39, // 38: stream.video.sfu.event.ReconnectDetails.strategy:type_name -> stream.video.sfu.models.WebsocketReconnectStrategy - 46, // 39: stream.video.sfu.event.ReconnectDetails.announced_tracks:type_name -> stream.video.sfu.models.TrackInfo - 47, // 40: stream.video.sfu.event.ReconnectDetails.subscriptions:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails - 46, // 41: stream.video.sfu.event.Migration.announced_tracks:type_name -> stream.video.sfu.models.TrackInfo - 47, // 42: stream.video.sfu.event.Migration.subscriptions:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails - 48, // 43: stream.video.sfu.event.JoinResponse.call_state:type_name -> stream.video.sfu.models.CallState - 43, // 44: stream.video.sfu.event.ParticipantJoined.participant:type_name -> stream.video.sfu.models.Participant - 43, // 45: stream.video.sfu.event.ParticipantLeft.participant:type_name -> stream.video.sfu.models.Participant - 43, // 46: stream.video.sfu.event.ParticipantUpdated.participant:type_name -> stream.video.sfu.models.Participant - 23, // 47: stream.video.sfu.event.ConnectionQualityChanged.connection_quality_updates:type_name -> stream.video.sfu.event.ConnectionQualityInfo - 49, // 48: stream.video.sfu.event.ConnectionQualityInfo.connection_quality:type_name -> stream.video.sfu.models.ConnectionQuality - 25, // 49: stream.video.sfu.event.AudioLevelChanged.audio_levels:type_name -> stream.video.sfu.event.AudioLevel - 27, // 50: stream.video.sfu.event.AudioSender.media_request:type_name -> stream.video.sfu.event.AudioMediaRequest - 50, // 51: stream.video.sfu.event.AudioSender.codec:type_name -> stream.video.sfu.models.Codec - 0, // 52: stream.video.sfu.event.VideoLayerSetting.priority:type_name -> stream.video.sfu.event.VideoLayerSetting.Priority - 50, // 53: stream.video.sfu.event.VideoLayerSetting.codec:type_name -> stream.video.sfu.models.Codec - 29, // 54: stream.video.sfu.event.VideoSender.media_request:type_name -> stream.video.sfu.event.VideoMediaRequest - 50, // 55: stream.video.sfu.event.VideoSender.codec:type_name -> stream.video.sfu.models.Codec - 30, // 56: stream.video.sfu.event.VideoSender.layers:type_name -> stream.video.sfu.event.VideoLayerSetting - 28, // 57: stream.video.sfu.event.ChangePublishQuality.audio_senders:type_name -> stream.video.sfu.event.AudioSender - 31, // 58: stream.video.sfu.event.ChangePublishQuality.video_senders:type_name -> stream.video.sfu.event.VideoSender - 51, // 59: stream.video.sfu.event.CallGrantsUpdated.current_grants:type_name -> stream.video.sfu.models.CallGrants - 52, // 60: stream.video.sfu.event.GoAway.reason:type_name -> stream.video.sfu.models.GoAwayReason - 53, // 61: stream.video.sfu.event.CallEnded.reason:type_name -> stream.video.sfu.models.CallEndedReason - 62, // [62:62] is the sub-list for method output_type - 62, // [62:62] is the sub-list for method input_type - 62, // [62:62] is the sub-list for extension type_name - 62, // [62:62] is the sub-list for extension extendee - 0, // [0:62] is the sub-list for field type_name + 21, // 0: stream.video.sfu.event.SfuEvent.subscriber_offer:type_name -> stream.video.sfu.event.SubscriberOffer + 22, // 1: stream.video.sfu.event.SfuEvent.publisher_answer:type_name -> stream.video.sfu.event.PublisherAnswer + 23, // 2: stream.video.sfu.event.SfuEvent.connection_quality_changed:type_name -> stream.video.sfu.event.ConnectionQualityChanged + 27, // 3: stream.video.sfu.event.SfuEvent.audio_level_changed:type_name -> stream.video.sfu.event.AudioLevelChanged + 35, // 4: stream.video.sfu.event.SfuEvent.ice_trickle:type_name -> stream.video.sfu.models.ICETrickle + 31, // 5: stream.video.sfu.event.SfuEvent.change_publish_quality:type_name -> stream.video.sfu.event.ChangePublishQuality + 18, // 6: stream.video.sfu.event.SfuEvent.participant_joined:type_name -> stream.video.sfu.event.ParticipantJoined + 19, // 7: stream.video.sfu.event.SfuEvent.participant_left:type_name -> stream.video.sfu.event.ParticipantLeft + 25, // 8: stream.video.sfu.event.SfuEvent.dominant_speaker_changed:type_name -> stream.video.sfu.event.DominantSpeakerChanged + 17, // 9: stream.video.sfu.event.SfuEvent.join_response:type_name -> stream.video.sfu.event.JoinResponse + 11, // 10: stream.video.sfu.event.SfuEvent.health_check_response:type_name -> stream.video.sfu.event.HealthCheckResponse + 12, // 11: stream.video.sfu.event.SfuEvent.track_published:type_name -> stream.video.sfu.event.TrackPublished + 13, // 12: stream.video.sfu.event.SfuEvent.track_unpublished:type_name -> stream.video.sfu.event.TrackUnpublished + 5, // 13: stream.video.sfu.event.SfuEvent.error:type_name -> stream.video.sfu.event.Error + 32, // 14: stream.video.sfu.event.SfuEvent.call_grants_updated:type_name -> stream.video.sfu.event.CallGrantsUpdated + 33, // 15: stream.video.sfu.event.SfuEvent.go_away:type_name -> stream.video.sfu.event.GoAway + 7, // 16: stream.video.sfu.event.SfuEvent.ice_restart:type_name -> stream.video.sfu.event.ICERestart + 4, // 17: stream.video.sfu.event.SfuEvent.pins_updated:type_name -> stream.video.sfu.event.PinsChanged + 34, // 18: stream.video.sfu.event.SfuEvent.call_ended:type_name -> stream.video.sfu.event.CallEnded + 20, // 19: stream.video.sfu.event.SfuEvent.participant_updated:type_name -> stream.video.sfu.event.ParticipantUpdated + 3, // 20: stream.video.sfu.event.SfuEvent.participant_migration_complete:type_name -> stream.video.sfu.event.ParticipantMigrationComplete + 1, // 21: stream.video.sfu.event.SfuEvent.change_publish_options:type_name -> stream.video.sfu.event.ChangePublishOptions + 36, // 22: stream.video.sfu.event.ChangePublishOptions.publish_options:type_name -> stream.video.sfu.models.PublishOption + 37, // 23: stream.video.sfu.event.PinsChanged.pins:type_name -> stream.video.sfu.models.Pin + 38, // 24: stream.video.sfu.event.Error.error:type_name -> stream.video.sfu.models.Error + 39, // 25: stream.video.sfu.event.Error.reconnect_strategy:type_name -> stream.video.sfu.models.WebsocketReconnectStrategy + 40, // 26: stream.video.sfu.event.ICETrickle.peer_type:type_name -> stream.video.sfu.models.PeerType + 40, // 27: stream.video.sfu.event.ICERestart.peer_type:type_name -> stream.video.sfu.models.PeerType + 14, // 28: stream.video.sfu.event.SfuRequest.join_request:type_name -> stream.video.sfu.event.JoinRequest + 10, // 29: stream.video.sfu.event.SfuRequest.health_check_request:type_name -> stream.video.sfu.event.HealthCheckRequest + 9, // 30: stream.video.sfu.event.SfuRequest.leave_call_request:type_name -> stream.video.sfu.event.LeaveCallRequest + 41, // 31: stream.video.sfu.event.HealthCheckResponse.participant_count:type_name -> stream.video.sfu.models.ParticipantCount + 42, // 32: stream.video.sfu.event.TrackPublished.type:type_name -> stream.video.sfu.models.TrackType + 43, // 33: stream.video.sfu.event.TrackPublished.participant:type_name -> stream.video.sfu.models.Participant + 42, // 34: stream.video.sfu.event.TrackUnpublished.type:type_name -> stream.video.sfu.models.TrackType + 44, // 35: stream.video.sfu.event.TrackUnpublished.cause:type_name -> stream.video.sfu.models.TrackUnpublishReason + 43, // 36: stream.video.sfu.event.TrackUnpublished.participant:type_name -> stream.video.sfu.models.Participant + 45, // 37: stream.video.sfu.event.JoinRequest.client_details:type_name -> stream.video.sfu.models.ClientDetails + 16, // 38: stream.video.sfu.event.JoinRequest.migration:type_name -> stream.video.sfu.event.Migration + 15, // 39: stream.video.sfu.event.JoinRequest.reconnect_details:type_name -> stream.video.sfu.event.ReconnectDetails + 36, // 40: stream.video.sfu.event.JoinRequest.preferred_publish_options:type_name -> stream.video.sfu.models.PublishOption + 39, // 41: stream.video.sfu.event.ReconnectDetails.strategy:type_name -> stream.video.sfu.models.WebsocketReconnectStrategy + 46, // 42: stream.video.sfu.event.ReconnectDetails.announced_tracks:type_name -> stream.video.sfu.models.TrackInfo + 47, // 43: stream.video.sfu.event.ReconnectDetails.subscriptions:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails + 46, // 44: stream.video.sfu.event.Migration.announced_tracks:type_name -> stream.video.sfu.models.TrackInfo + 47, // 45: stream.video.sfu.event.Migration.subscriptions:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails + 48, // 46: stream.video.sfu.event.JoinResponse.call_state:type_name -> stream.video.sfu.models.CallState + 36, // 47: stream.video.sfu.event.JoinResponse.publish_options:type_name -> stream.video.sfu.models.PublishOption + 43, // 48: stream.video.sfu.event.ParticipantJoined.participant:type_name -> stream.video.sfu.models.Participant + 43, // 49: stream.video.sfu.event.ParticipantLeft.participant:type_name -> stream.video.sfu.models.Participant + 43, // 50: stream.video.sfu.event.ParticipantUpdated.participant:type_name -> stream.video.sfu.models.Participant + 24, // 51: stream.video.sfu.event.ConnectionQualityChanged.connection_quality_updates:type_name -> stream.video.sfu.event.ConnectionQualityInfo + 49, // 52: stream.video.sfu.event.ConnectionQualityInfo.connection_quality:type_name -> stream.video.sfu.models.ConnectionQuality + 26, // 53: stream.video.sfu.event.AudioLevelChanged.audio_levels:type_name -> stream.video.sfu.event.AudioLevel + 50, // 54: stream.video.sfu.event.AudioSender.codec:type_name -> stream.video.sfu.models.Codec + 42, // 55: stream.video.sfu.event.AudioSender.track_type:type_name -> stream.video.sfu.models.TrackType + 50, // 56: stream.video.sfu.event.VideoLayerSetting.codec:type_name -> stream.video.sfu.models.Codec + 50, // 57: stream.video.sfu.event.VideoSender.codec:type_name -> stream.video.sfu.models.Codec + 29, // 58: stream.video.sfu.event.VideoSender.layers:type_name -> stream.video.sfu.event.VideoLayerSetting + 42, // 59: stream.video.sfu.event.VideoSender.track_type:type_name -> stream.video.sfu.models.TrackType + 28, // 60: stream.video.sfu.event.ChangePublishQuality.audio_senders:type_name -> stream.video.sfu.event.AudioSender + 30, // 61: stream.video.sfu.event.ChangePublishQuality.video_senders:type_name -> stream.video.sfu.event.VideoSender + 51, // 62: stream.video.sfu.event.CallGrantsUpdated.current_grants:type_name -> stream.video.sfu.models.CallGrants + 52, // 63: stream.video.sfu.event.GoAway.reason:type_name -> stream.video.sfu.models.GoAwayReason + 53, // 64: stream.video.sfu.event.CallEnded.reason:type_name -> stream.video.sfu.models.CallEndedReason + 65, // [65:65] is the sub-list for method output_type + 65, // [65:65] is the sub-list for method input_type + 65, // [65:65] is the sub-list for extension type_name + 65, // [65:65] is the sub-list for extension extendee + 0, // [0:65] is the sub-list for field type_name } func init() { file_video_sfu_event_events_proto_init() } @@ -3158,7 +3159,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParticipantMigrationComplete); i { + switch v := v.(*ChangePublishOptions); i { case 0: return &v.state case 1: @@ -3170,7 +3171,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PinsChanged); i { + switch v := v.(*ChangePublishOptionsComplete); i { case 0: return &v.state case 1: @@ -3182,7 +3183,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { + switch v := v.(*ParticipantMigrationComplete); i { case 0: return &v.state case 1: @@ -3194,7 +3195,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICETrickle); i { + switch v := v.(*PinsChanged); i { case 0: return &v.state case 1: @@ -3206,7 +3207,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICERestart); i { + switch v := v.(*Error); i { case 0: return &v.state case 1: @@ -3218,7 +3219,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SfuRequest); i { + switch v := v.(*ICETrickle); i { case 0: return &v.state case 1: @@ -3230,7 +3231,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*LeaveCallRequest); i { + switch v := v.(*ICERestart); i { case 0: return &v.state case 1: @@ -3242,7 +3243,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckRequest); i { + switch v := v.(*SfuRequest); i { case 0: return &v.state case 1: @@ -3254,7 +3255,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthCheckResponse); i { + switch v := v.(*LeaveCallRequest); i { case 0: return &v.state case 1: @@ -3266,7 +3267,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackPublished); i { + switch v := v.(*HealthCheckRequest); i { case 0: return &v.state case 1: @@ -3278,7 +3279,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackUnpublished); i { + switch v := v.(*HealthCheckResponse); i { case 0: return &v.state case 1: @@ -3290,7 +3291,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinRequest); i { + switch v := v.(*TrackPublished); i { case 0: return &v.state case 1: @@ -3302,7 +3303,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReconnectDetails); i { + switch v := v.(*TrackUnpublished); i { case 0: return &v.state case 1: @@ -3314,7 +3315,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Migration); i { + switch v := v.(*JoinRequest); i { case 0: return &v.state case 1: @@ -3326,7 +3327,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*JoinResponse); i { + switch v := v.(*ReconnectDetails); i { case 0: return &v.state case 1: @@ -3338,7 +3339,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParticipantJoined); i { + switch v := v.(*Migration); i { case 0: return &v.state case 1: @@ -3350,7 +3351,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParticipantLeft); i { + switch v := v.(*JoinResponse); i { case 0: return &v.state case 1: @@ -3362,7 +3363,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ParticipantUpdated); i { + switch v := v.(*ParticipantJoined); i { case 0: return &v.state case 1: @@ -3374,7 +3375,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscriberOffer); i { + switch v := v.(*ParticipantLeft); i { case 0: return &v.state case 1: @@ -3386,7 +3387,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PublisherAnswer); i { + switch v := v.(*ParticipantUpdated); i { case 0: return &v.state case 1: @@ -3398,7 +3399,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionQualityChanged); i { + switch v := v.(*SubscriberOffer); i { case 0: return &v.state case 1: @@ -3410,7 +3411,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionQualityInfo); i { + switch v := v.(*PublisherAnswer); i { case 0: return &v.state case 1: @@ -3422,7 +3423,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[23].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DominantSpeakerChanged); i { + switch v := v.(*ConnectionQualityChanged); i { case 0: return &v.state case 1: @@ -3434,7 +3435,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[24].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioLevel); i { + switch v := v.(*ConnectionQualityInfo); i { case 0: return &v.state case 1: @@ -3446,7 +3447,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[25].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioLevelChanged); i { + switch v := v.(*DominantSpeakerChanged); i { case 0: return &v.state case 1: @@ -3458,7 +3459,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[26].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioMediaRequest); i { + switch v := v.(*AudioLevel); i { case 0: return &v.state case 1: @@ -3470,7 +3471,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[27].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioSender); i { + switch v := v.(*AudioLevelChanged); i { case 0: return &v.state case 1: @@ -3482,7 +3483,7 @@ func file_video_sfu_event_events_proto_init() { } } file_video_sfu_event_events_proto_msgTypes[28].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VideoMediaRequest); i { + switch v := v.(*AudioSender); i { case 0: return &v.state case 1: @@ -3588,8 +3589,9 @@ func file_video_sfu_event_events_proto_init() { (*SfuEvent_CallEnded)(nil), (*SfuEvent_ParticipantUpdated)(nil), (*SfuEvent_ParticipantMigrationComplete)(nil), + (*SfuEvent_ChangePublishOptions)(nil), } - file_video_sfu_event_events_proto_msgTypes[6].OneofWrappers = []interface{}{ + file_video_sfu_event_events_proto_msgTypes[8].OneofWrappers = []interface{}{ (*SfuRequest_JoinRequest)(nil), (*SfuRequest_HealthCheckRequest)(nil), (*SfuRequest_LeaveCallRequest)(nil), @@ -3599,14 +3601,13 @@ func file_video_sfu_event_events_proto_init() { File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_video_sfu_event_events_proto_rawDesc, - NumEnums: 1, + NumEnums: 0, NumMessages: 35, NumExtensions: 0, NumServices: 0, }, GoTypes: file_video_sfu_event_events_proto_goTypes, DependencyIndexes: file_video_sfu_event_events_proto_depIdxs, - EnumInfos: file_video_sfu_event_events_proto_enumTypes, MessageInfos: file_video_sfu_event_events_proto_msgTypes, }.Build() File_video_sfu_event_events_proto = out.File diff --git a/stream-video-android-core/src/main/proto/video/sfu/event/events.proto b/stream-video-android-core/src/main/proto/video/sfu/event/events.proto index 3200c912cfe..c6097c5008c 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/event/events.proto +++ b/stream-video-android-core/src/main/proto/video/sfu/event/events.proto @@ -77,11 +77,20 @@ message SfuEvent { ParticipantUpdated participant_updated = 24; // ParticipantMigrationComplete is sent when the participant migration is complete ParticipantMigrationComplete participant_migration_complete = 25; + // ChangePublishOptions is sent to signal the change in publish options such as a new codec or simulcast layers + ChangePublishOptions change_publish_options = 27; } } -message ParticipantMigrationComplete{ +message ChangePublishOptions { + repeated models.PublishOption publish_options = 1; + string reason = 2; +} +message ChangePublishOptionsComplete { +} + +message ParticipantMigrationComplete{ } message PinsChanged { @@ -158,6 +167,7 @@ message JoinRequest { string session_id = 2; // dumb SDP that allow us to extract subscriber's decode codecs string subscriber_sdp = 3; + string publisher_sdp = 8; models.ClientDetails client_details = 4; // Deprecated: use ReconnectDetails instead Migration migration = 5 [deprecated = true]; @@ -173,6 +183,7 @@ message JoinRequest { bool fast_reconnect = 6 [deprecated = true]; ReconnectDetails reconnect_details = 7; + repeated models.PublishOption preferred_publish_options = 9; } message ReconnectDetails { @@ -195,6 +206,7 @@ message JoinResponse { models.CallState call_state = 1; bool reconnected = 2; int32 fast_reconnect_deadline_seconds = 3; + repeated models.PublishOption publish_options = 4; } // ParticipantJoined is fired when a user joins a call @@ -256,22 +268,12 @@ message AudioLevelChanged { repeated AudioLevel audio_levels = 1; } -message AudioMediaRequest { - int32 channel_count = 1; -} - message AudioSender { - AudioMediaRequest media_request = 1; models.Codec codec = 2; + models.TrackType track_type = 3; + int32 publish_option_id = 4; } -message VideoMediaRequest { - int32 ideal_height = 1; - int32 ideal_width = 2; - int32 ideal_frame_rate = 3; -} - - // VideoLayerSetting is used to specify various parameters of a particular encoding in simulcast. // The parameters are specified here - https://developer.mozilla.org/en-US/docs/Web/API/RTCRtpEncodingParameters // SDKs use these parameters sent from the server to dynamically adjust these parameters to save CPU, bandwidth @@ -280,21 +282,16 @@ message VideoLayerSetting { bool active = 2; int32 max_bitrate = 3; float scale_resolution_down_by = 4; - enum Priority { - PRIORITY_HIGH_UNSPECIFIED = 0; - PRIORITY_LOW = 1; - PRIORITY_MEDIUM = 2; - PRIORITY_VERY_LOW = 3; - } - Priority priority = 5; models.Codec codec = 6; uint32 max_framerate = 7; + string scalability_mode = 8; } message VideoSender { - VideoMediaRequest media_request = 1; models.Codec codec = 2; repeated VideoLayerSetting layers = 3; + models.TrackType track_type = 4; + int32 publish_option_id = 5; } // sent to users when they need to change the quality of their video diff --git a/stream-video-android-core/src/main/proto/video/sfu/event/events_vtproto.pb.go b/stream-video-android-core/src/main/proto/video/sfu/event/events_vtproto.pb.go index be9a808604b..e0d33f35286 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/event/events_vtproto.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/event/events_vtproto.pb.go @@ -499,6 +499,124 @@ func (m *SfuEvent_ParticipantMigrationComplete) MarshalToSizedBufferVT(dAtA []by } return len(dAtA) - i, nil } +func (m *SfuEvent_ChangePublishOptions) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *SfuEvent_ChangePublishOptions) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.ChangePublishOptions != nil { + size, err := m.ChangePublishOptions.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0xda + } + return len(dAtA) - i, nil +} +func (m *ChangePublishOptions) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChangePublishOptions) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *ChangePublishOptions) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if len(m.Reason) > 0 { + i -= len(m.Reason) + copy(dAtA[i:], m.Reason) + i = encodeVarint(dAtA, i, uint64(len(m.Reason))) + i-- + dAtA[i] = 0x12 + } + if len(m.PublishOptions) > 0 { + for iNdEx := len(m.PublishOptions) - 1; iNdEx >= 0; iNdEx-- { + if marshalto, ok := interface{}(m.PublishOptions[iNdEx]).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.PublishOptions[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *ChangePublishOptionsComplete) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *ChangePublishOptionsComplete) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *ChangePublishOptionsComplete) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + return len(dAtA) - i, nil +} + func (m *ParticipantMigrationComplete) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -1152,6 +1270,37 @@ func (m *JoinRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.PreferredPublishOptions) > 0 { + for iNdEx := len(m.PreferredPublishOptions) - 1; iNdEx >= 0; iNdEx-- { + if marshalto, ok := interface{}(m.PreferredPublishOptions[iNdEx]).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.PreferredPublishOptions[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x4a + } + } + if len(m.PublisherSdp) > 0 { + i -= len(m.PublisherSdp) + copy(dAtA[i:], m.PublisherSdp) + i = encodeVarint(dAtA, i, uint64(len(m.PublisherSdp))) + i-- + dAtA[i] = 0x42 + } if m.ReconnectDetails != nil { size, err := m.ReconnectDetails.MarshalToSizedBufferVT(dAtA[:i]) if err != nil { @@ -1451,6 +1600,30 @@ func (m *JoinResponse) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.PublishOptions) > 0 { + for iNdEx := len(m.PublishOptions) - 1; iNdEx >= 0; iNdEx-- { + if marshalto, ok := interface{}(m.PublishOptions[iNdEx]).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.PublishOptions[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x22 + } + } if m.FastReconnectDeadlineSeconds != 0 { i = encodeVarint(dAtA, i, uint64(m.FastReconnectDeadlineSeconds)) i-- @@ -2019,44 +2192,6 @@ func (m *AudioLevelChanged) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } -func (m *AudioMediaRequest) MarshalVT() (dAtA []byte, err error) { - if m == nil { - return nil, nil - } - size := m.SizeVT() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBufferVT(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *AudioMediaRequest) MarshalToVT(dAtA []byte) (int, error) { - size := m.SizeVT() - return m.MarshalToSizedBufferVT(dAtA[:size]) -} - -func (m *AudioMediaRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { - if m == nil { - return 0, nil - } - i := len(dAtA) - _ = i - var l int - _ = l - if m.unknownFields != nil { - i -= len(m.unknownFields) - copy(dAtA[i:], m.unknownFields) - } - if m.ChannelCount != 0 { - i = encodeVarint(dAtA, i, uint64(m.ChannelCount)) - i-- - dAtA[i] = 0x8 - } - return len(dAtA) - i, nil -} - func (m *AudioSender) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -2087,6 +2222,16 @@ func (m *AudioSender) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.PublishOptionId != 0 { + i = encodeVarint(dAtA, i, uint64(m.PublishOptionId)) + i-- + dAtA[i] = 0x20 + } + if m.TrackType != 0 { + i = encodeVarint(dAtA, i, uint64(m.TrackType)) + i-- + dAtA[i] = 0x18 + } if m.Codec != nil { if marshalto, ok := interface{}(m.Codec).(interface { MarshalToSizedBufferVT([]byte) (int, error) @@ -2109,64 +2254,6 @@ func (m *AudioSender) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.MediaRequest != nil { - size, err := m.MediaRequest.MarshalToSizedBufferVT(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarint(dAtA, i, uint64(size)) - i-- - dAtA[i] = 0xa - } - return len(dAtA) - i, nil -} - -func (m *VideoMediaRequest) MarshalVT() (dAtA []byte, err error) { - if m == nil { - return nil, nil - } - size := m.SizeVT() - dAtA = make([]byte, size) - n, err := m.MarshalToSizedBufferVT(dAtA[:size]) - if err != nil { - return nil, err - } - return dAtA[:n], nil -} - -func (m *VideoMediaRequest) MarshalToVT(dAtA []byte) (int, error) { - size := m.SizeVT() - return m.MarshalToSizedBufferVT(dAtA[:size]) -} - -func (m *VideoMediaRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { - if m == nil { - return 0, nil - } - i := len(dAtA) - _ = i - var l int - _ = l - if m.unknownFields != nil { - i -= len(m.unknownFields) - copy(dAtA[i:], m.unknownFields) - } - if m.IdealFrameRate != 0 { - i = encodeVarint(dAtA, i, uint64(m.IdealFrameRate)) - i-- - dAtA[i] = 0x18 - } - if m.IdealWidth != 0 { - i = encodeVarint(dAtA, i, uint64(m.IdealWidth)) - i-- - dAtA[i] = 0x10 - } - if m.IdealHeight != 0 { - i = encodeVarint(dAtA, i, uint64(m.IdealHeight)) - i-- - dAtA[i] = 0x8 - } return len(dAtA) - i, nil } @@ -2200,6 +2287,13 @@ func (m *VideoLayerSetting) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.ScalabilityMode) > 0 { + i -= len(m.ScalabilityMode) + copy(dAtA[i:], m.ScalabilityMode) + i = encodeVarint(dAtA, i, uint64(len(m.ScalabilityMode))) + i-- + dAtA[i] = 0x42 + } if m.MaxFramerate != 0 { i = encodeVarint(dAtA, i, uint64(m.MaxFramerate)) i-- @@ -2227,11 +2321,6 @@ func (m *VideoLayerSetting) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i-- dAtA[i] = 0x32 } - if m.Priority != 0 { - i = encodeVarint(dAtA, i, uint64(m.Priority)) - i-- - dAtA[i] = 0x28 - } if m.ScaleResolutionDownBy != 0 { i -= 4 binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.ScaleResolutionDownBy)))) @@ -2293,6 +2382,16 @@ func (m *VideoSender) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.PublishOptionId != 0 { + i = encodeVarint(dAtA, i, uint64(m.PublishOptionId)) + i-- + dAtA[i] = 0x28 + } + if m.TrackType != 0 { + i = encodeVarint(dAtA, i, uint64(m.TrackType)) + i-- + dAtA[i] = 0x20 + } if len(m.Layers) > 0 { for iNdEx := len(m.Layers) - 1; iNdEx >= 0; iNdEx-- { size, err := m.Layers[iNdEx].MarshalToSizedBufferVT(dAtA[:i]) @@ -2327,16 +2426,6 @@ func (m *VideoSender) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i-- dAtA[i] = 0x12 } - if m.MediaRequest != nil { - size, err := m.MediaRequest.MarshalToSizedBufferVT(dAtA[:i]) - if err != nil { - return 0, err - } - i -= size - i = encodeVarint(dAtA, i, uint64(size)) - i-- - dAtA[i] = 0xa - } return len(dAtA) - i, nil } @@ -2819,25 +2908,77 @@ func (m *SfuEvent_ParticipantMigrationComplete) SizeVT() (n int) { } return n } -func (m *ParticipantMigrationComplete) SizeVT() (n int) { +func (m *SfuEvent_ChangePublishOptions) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.unknownFields != nil { - n += len(m.unknownFields) + if m.ChangePublishOptions != nil { + l = m.ChangePublishOptions.SizeVT() + n += 2 + l + sov(uint64(l)) } return n } - -func (m *PinsChanged) SizeVT() (n int) { +func (m *ChangePublishOptions) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if len(m.Pins) > 0 { + if len(m.PublishOptions) > 0 { + for _, e := range m.PublishOptions { + if size, ok := interface{}(e).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(e) + } + n += 1 + l + sov(uint64(l)) + } + } + l = len(m.Reason) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *ChangePublishOptionsComplete) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *ParticipantMigrationComplete) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *PinsChanged) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.Pins) > 0 { for _, e := range m.Pins { if size, ok := interface{}(e).(interface { SizeVT() int @@ -3127,6 +3268,22 @@ func (m *JoinRequest) SizeVT() (n int) { l = m.ReconnectDetails.SizeVT() n += 1 + l + sov(uint64(l)) } + l = len(m.PublisherSdp) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if len(m.PreferredPublishOptions) > 0 { + for _, e := range m.PreferredPublishOptions { + if size, ok := interface{}(e).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(e) + } + n += 1 + l + sov(uint64(l)) + } + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -3245,6 +3402,18 @@ func (m *JoinResponse) SizeVT() (n int) { if m.FastReconnectDeadlineSeconds != 0 { n += 1 + sov(uint64(m.FastReconnectDeadlineSeconds)) } + if len(m.PublishOptions) > 0 { + for _, e := range m.PublishOptions { + if size, ok := interface{}(e).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(e) + } + n += 1 + l + sov(uint64(l)) + } + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -3469,31 +3638,12 @@ func (m *AudioLevelChanged) SizeVT() (n int) { return n } -func (m *AudioMediaRequest) SizeVT() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.ChannelCount != 0 { - n += 1 + sov(uint64(m.ChannelCount)) - } - if m.unknownFields != nil { - n += len(m.unknownFields) - } - return n -} - func (m *AudioSender) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.MediaRequest != nil { - l = m.MediaRequest.SizeVT() - n += 1 + l + sov(uint64(l)) - } if m.Codec != nil { if size, ok := interface{}(m.Codec).(interface { SizeVT() int @@ -3504,26 +3654,11 @@ func (m *AudioSender) SizeVT() (n int) { } n += 1 + l + sov(uint64(l)) } - if m.unknownFields != nil { - n += len(m.unknownFields) - } - return n -} - -func (m *VideoMediaRequest) SizeVT() (n int) { - if m == nil { - return 0 - } - var l int - _ = l - if m.IdealHeight != 0 { - n += 1 + sov(uint64(m.IdealHeight)) + if m.TrackType != 0 { + n += 1 + sov(uint64(m.TrackType)) } - if m.IdealWidth != 0 { - n += 1 + sov(uint64(m.IdealWidth)) - } - if m.IdealFrameRate != 0 { - n += 1 + sov(uint64(m.IdealFrameRate)) + if m.PublishOptionId != 0 { + n += 1 + sov(uint64(m.PublishOptionId)) } if m.unknownFields != nil { n += len(m.unknownFields) @@ -3550,9 +3685,6 @@ func (m *VideoLayerSetting) SizeVT() (n int) { if m.ScaleResolutionDownBy != 0 { n += 5 } - if m.Priority != 0 { - n += 1 + sov(uint64(m.Priority)) - } if m.Codec != nil { if size, ok := interface{}(m.Codec).(interface { SizeVT() int @@ -3566,6 +3698,10 @@ func (m *VideoLayerSetting) SizeVT() (n int) { if m.MaxFramerate != 0 { n += 1 + sov(uint64(m.MaxFramerate)) } + l = len(m.ScalabilityMode) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -3578,10 +3714,6 @@ func (m *VideoSender) SizeVT() (n int) { } var l int _ = l - if m.MediaRequest != nil { - l = m.MediaRequest.SizeVT() - n += 1 + l + sov(uint64(l)) - } if m.Codec != nil { if size, ok := interface{}(m.Codec).(interface { SizeVT() int @@ -3598,6 +3730,12 @@ func (m *VideoSender) SizeVT() (n int) { n += 1 + l + sov(uint64(l)) } } + if m.TrackType != 0 { + n += 1 + sov(uint64(m.TrackType)) + } + if m.PublishOptionId != 0 { + n += 1 + sov(uint64(m.PublishOptionId)) + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -4596,111 +4734,9 @@ func (m *SfuEvent) UnmarshalVT(dAtA []byte) error { m.EventPayload = &SfuEvent_ParticipantMigrationComplete{v} } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *ParticipantMigrationComplete) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: ParticipantMigrationComplete: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: ParticipantMigrationComplete: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - default: - iNdEx = preIndex - skippy, err := skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *PinsChanged) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: PinsChanged: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: PinsChanged: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: + case 27: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Pins", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field ChangePublishOptions", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4727,17 +4763,16 @@ func (m *PinsChanged) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.Pins = append(m.Pins, &models.Pin{}) - if unmarshal, ok := interface{}(m.Pins[len(m.Pins)-1]).(interface { - UnmarshalVT([]byte) error - }); ok { - if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + if oneof, ok := m.EventPayload.(*SfuEvent_ChangePublishOptions); ok { + if err := oneof.ChangePublishOptions.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { return err } } else { - if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Pins[len(m.Pins)-1]); err != nil { + v := &ChangePublishOptions{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { return err } + m.EventPayload = &SfuEvent_ChangePublishOptions{v} } iNdEx = postIndex default: @@ -4762,7 +4797,7 @@ func (m *PinsChanged) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *Error) UnmarshalVT(dAtA []byte) error { +func (m *ChangePublishOptions) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4785,15 +4820,15 @@ func (m *Error) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Error: wiretype end group for non-group") + return fmt.Errorf("proto: ChangePublishOptions: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ChangePublishOptions: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 4: + case 1: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PublishOptions", wireType) } var msglen int for shift := uint(0); ; shift += 7 { @@ -4820,26 +4855,24 @@ func (m *Error) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - if m.Error == nil { - m.Error = &models.Error{} - } - if unmarshal, ok := interface{}(m.Error).(interface { + m.PublishOptions = append(m.PublishOptions, &models.PublishOption{}) + if unmarshal, ok := interface{}(m.PublishOptions[len(m.PublishOptions)-1]).(interface { UnmarshalVT([]byte) error }); ok { if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { return err } } else { - if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Error); err != nil { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.PublishOptions[len(m.PublishOptions)-1]); err != nil { return err } } iNdEx = postIndex - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ReconnectStrategy", wireType) + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reason", wireType) } - m.ReconnectStrategy = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -4849,11 +4882,24 @@ func (m *Error) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ReconnectStrategy |= models.WebsocketReconnectStrategy(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Reason = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -4876,7 +4922,7 @@ func (m *Error) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { +func (m *ChangePublishOptionsComplete) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -4899,13 +4945,322 @@ func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ICETrickle: wiretype end group for non-group") + return fmt.Errorf("proto: ChangePublishOptionsComplete: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ICETrickle: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: ChangePublishOptionsComplete: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ParticipantMigrationComplete) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ParticipantMigrationComplete: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ParticipantMigrationComplete: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *PinsChanged) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: PinsChanged: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: PinsChanged: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Pins", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Pins = append(m.Pins, &models.Pin{}) + if unmarshal, ok := interface{}(m.Pins[len(m.Pins)-1]).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Pins[len(m.Pins)-1]); err != nil { + return err + } + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Error) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Error: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Error: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Error", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Error == nil { + m.Error = &models.Error{} + } + if unmarshal, ok := interface{}(m.Error).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.Error); err != nil { + return err + } + } + iNdEx = postIndex + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ReconnectStrategy", wireType) + } + m.ReconnectStrategy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ReconnectStrategy |= models.WebsocketReconnectStrategy(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ICETrickle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ICETrickle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: if wireType != 0 { return fmt.Errorf("proto: wrong wireType = %d for field PeerType", wireType) } @@ -6119,6 +6474,80 @@ func (m *JoinRequest) UnmarshalVT(dAtA []byte) error { return err } iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublisherSdp", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublisherSdp = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PreferredPublishOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PreferredPublishOptions = append(m.PreferredPublishOptions, &models.PublishOption{}) + if unmarshal, ok := interface{}(m.PreferredPublishOptions[len(m.PreferredPublishOptions)-1]).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.PreferredPublishOptions[len(m.PreferredPublishOptions)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -6657,6 +7086,48 @@ func (m *JoinResponse) UnmarshalVT(dAtA []byte) error { break } } + case 4: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field PublishOptions", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.PublishOptions = append(m.PublishOptions, &models.PublishOption{}) + if unmarshal, ok := interface{}(m.PublishOptions[len(m.PublishOptions)-1]).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.PublishOptions[len(m.PublishOptions)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -7683,83 +8154,12 @@ func (m *AudioLevel) UnmarshalVT(dAtA []byte) error { } v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) iNdEx += 4 - m.Level = float32(math.Float32frombits(v)) - case 4: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IsSpeaking", wireType) - } - var v int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - v |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - m.IsSpeaking = bool(v != 0) - default: - iNdEx = preIndex - skippy, err := skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *AudioLevelChanged) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: AudioLevelChanged: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: AudioLevelChanged: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field AudioLevels", wireType) + m.Level = float32(math.Float32frombits(v)) + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsSpeaking", wireType) } - var msglen int + var v int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -7769,26 +8169,12 @@ func (m *AudioLevelChanged) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - msglen |= int(b&0x7F) << shift + v |= int(b&0x7F) << shift if b < 0x80 { break } } - if msglen < 0 { - return ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.AudioLevels = append(m.AudioLevels, &AudioLevel{}) - if err := m.AudioLevels[len(m.AudioLevels)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex + m.IsSpeaking = bool(v != 0) default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -7811,7 +8197,7 @@ func (m *AudioLevelChanged) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *AudioMediaRequest) UnmarshalVT(dAtA []byte) error { +func (m *AudioLevelChanged) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -7834,17 +8220,17 @@ func (m *AudioMediaRequest) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: AudioMediaRequest: wiretype end group for non-group") + return fmt.Errorf("proto: AudioLevelChanged: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: AudioMediaRequest: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: AudioLevelChanged: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ChannelCount", wireType) + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AudioLevels", wireType) } - m.ChannelCount = 0 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -7854,11 +8240,26 @@ func (m *AudioMediaRequest) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ChannelCount |= int32(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AudioLevels = append(m.AudioLevels, &AudioLevel{}) + if err := m.AudioLevels[len(m.AudioLevels)-1].UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -7910,42 +8311,6 @@ func (m *AudioSender) UnmarshalVT(dAtA []byte) error { return fmt.Errorf("proto: AudioSender: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MediaRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MediaRequest == nil { - m.MediaRequest = &AudioMediaRequest{} - } - if err := m.MediaRequest.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) @@ -7990,81 +8355,11 @@ func (m *AudioSender) UnmarshalVT(dAtA []byte) error { } } iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skip(dAtA[iNdEx:]) - if err != nil { - return err - } - if (skippy < 0) || (iNdEx+skippy) < 0 { - return ErrInvalidLength - } - if (iNdEx + skippy) > l { - return io.ErrUnexpectedEOF - } - m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) - iNdEx += skippy - } - } - - if iNdEx > l { - return io.ErrUnexpectedEOF - } - return nil -} -func (m *VideoMediaRequest) UnmarshalVT(dAtA []byte) error { - l := len(dAtA) - iNdEx := 0 - for iNdEx < l { - preIndex := iNdEx - var wire uint64 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - wire |= uint64(b&0x7F) << shift - if b < 0x80 { - break - } - } - fieldNum := int32(wire >> 3) - wireType := int(wire & 0x7) - if wireType == 4 { - return fmt.Errorf("proto: VideoMediaRequest: wiretype end group for non-group") - } - if fieldNum <= 0 { - return fmt.Errorf("proto: VideoMediaRequest: illegal tag %d (wire type %d)", fieldNum, wire) - } - switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IdealHeight", wireType) - } - m.IdealHeight = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.IdealHeight |= int32(b&0x7F) << shift - if b < 0x80 { - break - } - } - case 2: + case 3: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IdealWidth", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TrackType", wireType) } - m.IdealWidth = 0 + m.TrackType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -8074,16 +8369,16 @@ func (m *VideoMediaRequest) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.IdealWidth |= int32(b&0x7F) << shift + m.TrackType |= models.TrackType(b&0x7F) << shift if b < 0x80 { break } } - case 3: + case 4: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field IdealFrameRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field PublishOptionId", wireType) } - m.IdealFrameRate = 0 + m.PublishOptionId = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -8093,7 +8388,7 @@ func (m *VideoMediaRequest) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.IdealFrameRate |= int32(b&0x7F) << shift + m.PublishOptionId |= int32(b&0x7F) << shift if b < 0x80 { break } @@ -8231,25 +8526,6 @@ func (m *VideoLayerSetting) UnmarshalVT(dAtA []byte) error { v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) iNdEx += 4 m.ScaleResolutionDownBy = float32(math.Float32frombits(v)) - case 5: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field Priority", wireType) - } - m.Priority = 0 - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - m.Priority |= VideoLayerSetting_Priority(b&0x7F) << shift - if b < 0x80 { - break - } - } case 6: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) @@ -8313,6 +8589,38 @@ func (m *VideoLayerSetting) UnmarshalVT(dAtA []byte) error { break } } + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field ScalabilityMode", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.ScalabilityMode = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -8364,42 +8672,6 @@ func (m *VideoSender) UnmarshalVT(dAtA []byte) error { return fmt.Errorf("proto: VideoSender: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field MediaRequest", wireType) - } - var msglen int - for shift := uint(0); ; shift += 7 { - if shift >= 64 { - return ErrIntOverflow - } - if iNdEx >= l { - return io.ErrUnexpectedEOF - } - b := dAtA[iNdEx] - iNdEx++ - msglen |= int(b&0x7F) << shift - if b < 0x80 { - break - } - } - if msglen < 0 { - return ErrInvalidLength - } - postIndex := iNdEx + msglen - if postIndex < 0 { - return ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - if m.MediaRequest == nil { - m.MediaRequest = &VideoMediaRequest{} - } - if err := m.MediaRequest.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { - return err - } - iNdEx = postIndex case 2: if wireType != 2 { return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) @@ -8478,6 +8750,44 @@ func (m *VideoSender) UnmarshalVT(dAtA []byte) error { return err } iNdEx = postIndex + case 4: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field TrackType", wireType) + } + m.TrackType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.TrackType |= models.TrackType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 5: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PublishOptionId", wireType) + } + m.PublishOptionId = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PublishOptionId |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) diff --git a/stream-video-android-core/src/main/proto/video/sfu/models/models.pb.go b/stream-video-android-core/src/main/proto/video/sfu/models/models.pb.go index f8d0d90d10c..12127329ed7 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/models/models.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/models/models.pb.go @@ -629,6 +629,129 @@ func (WebsocketReconnectStrategy) EnumDescriptor() ([]byte, []int) { return file_video_sfu_models_models_proto_rawDescGZIP(), []int{9} } +// AndroidThermalState is reported by the Android API. The full list of values is documented here +// https://developer.android.com/reference/android/os/PowerManager.html#getCurrentThermalStatus() +type AndroidThermalState int32 + +const ( + AndroidThermalState_ANDROID_THERMAL_STATE_UNSPECIFIED AndroidThermalState = 0 + AndroidThermalState_ANDROID_THERMAL_STATE_NONE AndroidThermalState = 1 + AndroidThermalState_ANDROID_THERMAL_STATE_LIGHT AndroidThermalState = 2 + AndroidThermalState_ANDROID_THERMAL_STATE_MODERATE AndroidThermalState = 3 + AndroidThermalState_ANDROID_THERMAL_STATE_SEVERE AndroidThermalState = 4 + AndroidThermalState_ANDROID_THERMAL_STATE_CRITICAL AndroidThermalState = 5 + AndroidThermalState_ANDROID_THERMAL_STATE_EMERGENCY AndroidThermalState = 6 + AndroidThermalState_ANDROID_THERMAL_STATE_SHUTDOWN AndroidThermalState = 7 +) + +// Enum value maps for AndroidThermalState. +var ( + AndroidThermalState_name = map[int32]string{ + 0: "ANDROID_THERMAL_STATE_UNSPECIFIED", + 1: "ANDROID_THERMAL_STATE_NONE", + 2: "ANDROID_THERMAL_STATE_LIGHT", + 3: "ANDROID_THERMAL_STATE_MODERATE", + 4: "ANDROID_THERMAL_STATE_SEVERE", + 5: "ANDROID_THERMAL_STATE_CRITICAL", + 6: "ANDROID_THERMAL_STATE_EMERGENCY", + 7: "ANDROID_THERMAL_STATE_SHUTDOWN", + } + AndroidThermalState_value = map[string]int32{ + "ANDROID_THERMAL_STATE_UNSPECIFIED": 0, + "ANDROID_THERMAL_STATE_NONE": 1, + "ANDROID_THERMAL_STATE_LIGHT": 2, + "ANDROID_THERMAL_STATE_MODERATE": 3, + "ANDROID_THERMAL_STATE_SEVERE": 4, + "ANDROID_THERMAL_STATE_CRITICAL": 5, + "ANDROID_THERMAL_STATE_EMERGENCY": 6, + "ANDROID_THERMAL_STATE_SHUTDOWN": 7, + } +) + +func (x AndroidThermalState) Enum() *AndroidThermalState { + p := new(AndroidThermalState) + *p = x + return p +} + +func (x AndroidThermalState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AndroidThermalState) Descriptor() protoreflect.EnumDescriptor { + return file_video_sfu_models_models_proto_enumTypes[10].Descriptor() +} + +func (AndroidThermalState) Type() protoreflect.EnumType { + return &file_video_sfu_models_models_proto_enumTypes[10] +} + +func (x AndroidThermalState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AndroidThermalState.Descriptor instead. +func (AndroidThermalState) EnumDescriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{10} +} + +// AppleThermalState is the thermal state as reported by Apple devices when available or applicable to the platform. +// The full list of states (enum) is available here: https://developer.apple.com/documentation/foundation/processinfo/thermalstate +type AppleThermalState int32 + +const ( + AppleThermalState_APPLE_THERMAL_STATE_UNSPECIFIED AppleThermalState = 0 + AppleThermalState_APPLE_THERMAL_STATE_NOMINAL AppleThermalState = 1 + AppleThermalState_APPLE_THERMAL_STATE_FAIR AppleThermalState = 2 + AppleThermalState_APPLE_THERMAL_STATE_SERIOUS AppleThermalState = 3 + AppleThermalState_APPLE_THERMAL_STATE_CRITICAL AppleThermalState = 4 +) + +// Enum value maps for AppleThermalState. +var ( + AppleThermalState_name = map[int32]string{ + 0: "APPLE_THERMAL_STATE_UNSPECIFIED", + 1: "APPLE_THERMAL_STATE_NOMINAL", + 2: "APPLE_THERMAL_STATE_FAIR", + 3: "APPLE_THERMAL_STATE_SERIOUS", + 4: "APPLE_THERMAL_STATE_CRITICAL", + } + AppleThermalState_value = map[string]int32{ + "APPLE_THERMAL_STATE_UNSPECIFIED": 0, + "APPLE_THERMAL_STATE_NOMINAL": 1, + "APPLE_THERMAL_STATE_FAIR": 2, + "APPLE_THERMAL_STATE_SERIOUS": 3, + "APPLE_THERMAL_STATE_CRITICAL": 4, + } +) + +func (x AppleThermalState) Enum() *AppleThermalState { + p := new(AppleThermalState) + *p = x + return p +} + +func (x AppleThermalState) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (AppleThermalState) Descriptor() protoreflect.EnumDescriptor { + return file_video_sfu_models_models_proto_enumTypes[11].Descriptor() +} + +func (AppleThermalState) Type() protoreflect.EnumType { + return &file_video_sfu_models_models_proto_enumTypes[11] +} + +func (x AppleThermalState) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use AppleThermalState.Descriptor instead. +func (AppleThermalState) EnumDescriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{11} +} + // CallState is the current state of the call // as seen by an SFU. type CallState struct { @@ -1162,23 +1285,157 @@ func (x *VideoLayer) GetQuality() VideoQuality { return VideoQuality_VIDEO_QUALITY_LOW_UNSPECIFIED } +// PublishOption represents the configuration options for publishing a track. +type PublishOption struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // The type of the track being published (e.g., video, screenshare). + TrackType TrackType `protobuf:"varint,1,opt,name=track_type,json=trackType,proto3,enum=stream.video.sfu.models.TrackType" json:"track_type,omitempty"` + // The codec to be used for encoding the track (e.g., VP8, VP9, H264). + Codec *Codec `protobuf:"bytes,2,opt,name=codec,proto3" json:"codec,omitempty"` + // The target bitrate for the published track, in bits per second. + Bitrate int32 `protobuf:"varint,3,opt,name=bitrate,proto3" json:"bitrate,omitempty"` + // The target frames per second (FPS) for video encoding. + Fps int32 `protobuf:"varint,4,opt,name=fps,proto3" json:"fps,omitempty"` + // The maximum number of spatial layers to send. + // - For SVC (e.g., VP9), spatial layers downscale by a factor of 2: + // - 1 layer: full resolution + // - 2 layers: full resolution + half resolution + // - 3 layers: full resolution + half resolution + quarter resolution + // - For non-SVC codecs (e.g., VP8/H264), this determines the number of + // encoded resolutions (e.g., quarter, half, full) sent for simulcast. + MaxSpatialLayers int32 `protobuf:"varint,5,opt,name=max_spatial_layers,json=maxSpatialLayers,proto3" json:"max_spatial_layers,omitempty"` + // The maximum number of temporal layers for scalable video coding (SVC). + // Temporal layers allow varying frame rates for different bandwidths. + MaxTemporalLayers int32 `protobuf:"varint,6,opt,name=max_temporal_layers,json=maxTemporalLayers,proto3" json:"max_temporal_layers,omitempty"` + // The dimensions of the video (e.g., width and height in pixels). + // Spatial layers are based on this base resolution. For example, if the base + // resolution is 1280x720: + // - Full resolution (1 layer) = 1280x720 + // - Half resolution (2 layers) = 640x360 + // - Quarter resolution (3 layers) = 320x180 + VideoDimension *VideoDimension `protobuf:"bytes,7,opt,name=video_dimension,json=videoDimension,proto3" json:"video_dimension,omitempty"` + // The unique identifier for the publish request. + // - This `id` is assigned exclusively by the SFU. Any `id` set by the client + // in the `PublishOption` will be ignored and overwritten by the SFU. + // - The primary purpose of this `id` is to uniquely identify each publish + // request, even in scenarios where multiple publish requests for the same + // `track_type` and `codec` are active simultaneously. + // For example: + // - A user may publish two tracks of the same type (e.g., video) and codec + // (e.g., VP9) concurrently. + // - This uniqueness ensures that individual requests can be managed + // independently. For instance, an `id` is critical when stopping a specific + // publish request without affecting others. + Id int32 `protobuf:"varint,8,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *PublishOption) Reset() { + *x = PublishOption{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_models_models_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PublishOption) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PublishOption) ProtoMessage() {} + +func (x *PublishOption) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_models_models_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PublishOption.ProtoReflect.Descriptor instead. +func (*PublishOption) Descriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{7} +} + +func (x *PublishOption) GetTrackType() TrackType { + if x != nil { + return x.TrackType + } + return TrackType_TRACK_TYPE_UNSPECIFIED +} + +func (x *PublishOption) GetCodec() *Codec { + if x != nil { + return x.Codec + } + return nil +} + +func (x *PublishOption) GetBitrate() int32 { + if x != nil { + return x.Bitrate + } + return 0 +} + +func (x *PublishOption) GetFps() int32 { + if x != nil { + return x.Fps + } + return 0 +} + +func (x *PublishOption) GetMaxSpatialLayers() int32 { + if x != nil { + return x.MaxSpatialLayers + } + return 0 +} + +func (x *PublishOption) GetMaxTemporalLayers() int32 { + if x != nil { + return x.MaxTemporalLayers + } + return 0 +} + +func (x *PublishOption) GetVideoDimension() *VideoDimension { + if x != nil { + return x.VideoDimension + } + return nil +} + +func (x *PublishOption) GetId() int32 { + if x != nil { + return x.Id + } + return 0 +} + type Codec struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - PayloadType uint32 `protobuf:"varint,1,opt,name=payload_type,json=payloadType,proto3" json:"payload_type,omitempty"` - Name string `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` - FmtpLine string `protobuf:"bytes,3,opt,name=fmtp_line,json=fmtpLine,proto3" json:"fmtp_line,omitempty"` - ClockRate uint32 `protobuf:"varint,4,opt,name=clock_rate,json=clockRate,proto3" json:"clock_rate,omitempty"` - EncodingParameters string `protobuf:"bytes,5,opt,name=encoding_parameters,json=encodingParameters,proto3" json:"encoding_parameters,omitempty"` - Feedbacks []string `protobuf:"bytes,6,rep,name=feedbacks,proto3" json:"feedbacks,omitempty"` + PayloadType uint32 `protobuf:"varint,16,opt,name=payload_type,json=payloadType,proto3" json:"payload_type,omitempty"` + Name string `protobuf:"bytes,10,opt,name=name,proto3" json:"name,omitempty"` + ClockRate uint32 `protobuf:"varint,14,opt,name=clock_rate,json=clockRate,proto3" json:"clock_rate,omitempty"` + EncodingParameters string `protobuf:"bytes,15,opt,name=encoding_parameters,json=encodingParameters,proto3" json:"encoding_parameters,omitempty"` + Fmtp string `protobuf:"bytes,12,opt,name=fmtp,proto3" json:"fmtp,omitempty"` } func (x *Codec) Reset() { *x = Codec{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[7] + mi := &file_video_sfu_models_models_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1191,7 +1448,7 @@ func (x *Codec) String() string { func (*Codec) ProtoMessage() {} func (x *Codec) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[7] + mi := &file_video_sfu_models_models_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1204,7 +1461,7 @@ func (x *Codec) ProtoReflect() protoreflect.Message { // Deprecated: Use Codec.ProtoReflect.Descriptor instead. func (*Codec) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{7} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{8} } func (x *Codec) GetPayloadType() uint32 { @@ -1221,13 +1478,6 @@ func (x *Codec) GetName() string { return "" } -func (x *Codec) GetFmtpLine() string { - if x != nil { - return x.FmtpLine - } - return "" -} - func (x *Codec) GetClockRate() uint32 { if x != nil { return x.ClockRate @@ -1242,11 +1492,11 @@ func (x *Codec) GetEncodingParameters() string { return "" } -func (x *Codec) GetFeedbacks() []string { +func (x *Codec) GetFmtp() string { if x != nil { - return x.Feedbacks + return x.Fmtp } - return nil + return "" } type ICETrickle struct { @@ -1262,7 +1512,7 @@ type ICETrickle struct { func (x *ICETrickle) Reset() { *x = ICETrickle{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[8] + mi := &file_video_sfu_models_models_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1275,7 +1525,7 @@ func (x *ICETrickle) String() string { func (*ICETrickle) ProtoMessage() {} func (x *ICETrickle) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[8] + mi := &file_video_sfu_models_models_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1288,7 +1538,7 @@ func (x *ICETrickle) ProtoReflect() protoreflect.Message { // Deprecated: Use ICETrickle.ProtoReflect.Descriptor instead. func (*ICETrickle) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{8} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{9} } func (x *ICETrickle) GetPeerType() PeerType { @@ -1325,12 +1575,13 @@ type TrackInfo struct { Dtx bool `protobuf:"varint,7,opt,name=dtx,proto3" json:"dtx,omitempty"` Stereo bool `protobuf:"varint,8,opt,name=stereo,proto3" json:"stereo,omitempty"` Red bool `protobuf:"varint,9,opt,name=red,proto3" json:"red,omitempty"` + Muted bool `protobuf:"varint,10,opt,name=muted,proto3" json:"muted,omitempty"` } func (x *TrackInfo) Reset() { *x = TrackInfo{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[9] + mi := &file_video_sfu_models_models_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1343,7 +1594,7 @@ func (x *TrackInfo) String() string { func (*TrackInfo) ProtoMessage() {} func (x *TrackInfo) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[9] + mi := &file_video_sfu_models_models_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1356,7 +1607,7 @@ func (x *TrackInfo) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackInfo.ProtoReflect.Descriptor instead. func (*TrackInfo) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{9} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{10} } func (x *TrackInfo) GetTrackId() string { @@ -1408,6 +1659,13 @@ func (x *TrackInfo) GetRed() bool { return false } +func (x *TrackInfo) GetMuted() bool { + if x != nil { + return x.Muted + } + return false +} + type Error struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1421,7 +1679,7 @@ type Error struct { func (x *Error) Reset() { *x = Error{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[10] + mi := &file_video_sfu_models_models_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1434,7 +1692,7 @@ func (x *Error) String() string { func (*Error) ProtoMessage() {} func (x *Error) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[10] + mi := &file_video_sfu_models_models_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1447,7 +1705,7 @@ func (x *Error) ProtoReflect() protoreflect.Message { // Deprecated: Use Error.ProtoReflect.Descriptor instead. func (*Error) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{10} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{11} } func (x *Error) GetCode() ErrorCode { @@ -1485,7 +1743,7 @@ type ClientDetails struct { func (x *ClientDetails) Reset() { *x = ClientDetails{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[11] + mi := &file_video_sfu_models_models_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1498,7 +1756,7 @@ func (x *ClientDetails) String() string { func (*ClientDetails) ProtoMessage() {} func (x *ClientDetails) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[11] + mi := &file_video_sfu_models_models_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1511,7 +1769,7 @@ func (x *ClientDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use ClientDetails.ProtoReflect.Descriptor instead. func (*ClientDetails) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{11} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{12} } func (x *ClientDetails) GetSdk() *Sdk { @@ -1556,7 +1814,7 @@ type Sdk struct { func (x *Sdk) Reset() { *x = Sdk{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[12] + mi := &file_video_sfu_models_models_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1569,7 +1827,7 @@ func (x *Sdk) String() string { func (*Sdk) ProtoMessage() {} func (x *Sdk) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[12] + mi := &file_video_sfu_models_models_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1582,7 +1840,7 @@ func (x *Sdk) ProtoReflect() protoreflect.Message { // Deprecated: Use Sdk.ProtoReflect.Descriptor instead. func (*Sdk) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{12} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{13} } func (x *Sdk) GetType() SdkType { @@ -1626,7 +1884,7 @@ type OS struct { func (x *OS) Reset() { *x = OS{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[13] + mi := &file_video_sfu_models_models_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1639,7 +1897,7 @@ func (x *OS) String() string { func (*OS) ProtoMessage() {} func (x *OS) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[13] + mi := &file_video_sfu_models_models_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1652,7 +1910,7 @@ func (x *OS) ProtoReflect() protoreflect.Message { // Deprecated: Use OS.ProtoReflect.Descriptor instead. func (*OS) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{13} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{14} } func (x *OS) GetName() string { @@ -1688,7 +1946,7 @@ type Browser struct { func (x *Browser) Reset() { *x = Browser{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[14] + mi := &file_video_sfu_models_models_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1701,7 +1959,7 @@ func (x *Browser) String() string { func (*Browser) ProtoMessage() {} func (x *Browser) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[14] + mi := &file_video_sfu_models_models_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1714,7 +1972,7 @@ func (x *Browser) ProtoReflect() protoreflect.Message { // Deprecated: Use Browser.ProtoReflect.Descriptor instead. func (*Browser) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{14} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{15} } func (x *Browser) GetName() string { @@ -1743,7 +2001,7 @@ type Device struct { func (x *Device) Reset() { *x = Device{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[15] + mi := &file_video_sfu_models_models_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1756,7 +2014,7 @@ func (x *Device) String() string { func (*Device) ProtoMessage() {} func (x *Device) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[15] + mi := &file_video_sfu_models_models_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1769,7 +2027,7 @@ func (x *Device) ProtoReflect() protoreflect.Message { // Deprecated: Use Device.ProtoReflect.Descriptor instead. func (*Device) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{15} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{16} } func (x *Device) GetName() string { @@ -1807,7 +2065,7 @@ type Call struct { func (x *Call) Reset() { *x = Call{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[16] + mi := &file_video_sfu_models_models_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1820,7 +2078,7 @@ func (x *Call) String() string { func (*Call) ProtoMessage() {} func (x *Call) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[16] + mi := &file_video_sfu_models_models_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1833,7 +2091,7 @@ func (x *Call) ProtoReflect() protoreflect.Message { // Deprecated: Use Call.ProtoReflect.Descriptor instead. func (*Call) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{16} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{17} } func (x *Call) GetType() string { @@ -1900,7 +2158,7 @@ type CallGrants struct { func (x *CallGrants) Reset() { *x = CallGrants{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_models_models_proto_msgTypes[17] + mi := &file_video_sfu_models_models_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1913,7 +2171,7 @@ func (x *CallGrants) String() string { func (*CallGrants) ProtoMessage() {} func (x *CallGrants) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_models_models_proto_msgTypes[17] + mi := &file_video_sfu_models_models_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1926,7 +2184,7 @@ func (x *CallGrants) ProtoReflect() protoreflect.Message { // Deprecated: Use CallGrants.ProtoReflect.Descriptor instead. func (*CallGrants) Descriptor() ([]byte, []int) { - return file_video_sfu_models_models_proto_rawDescGZIP(), []int{17} + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{18} } func (x *CallGrants) GetCanPublishAudio() bool { @@ -1950,6 +2208,180 @@ func (x *CallGrants) GetCanScreenshare() bool { return false } +type InputDevices struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + AvailableDevices []string `protobuf:"bytes,1,rep,name=available_devices,json=availableDevices,proto3" json:"available_devices,omitempty"` + CurrentDevice string `protobuf:"bytes,2,opt,name=current_device,json=currentDevice,proto3" json:"current_device,omitempty"` + IsPermitted bool `protobuf:"varint,3,opt,name=is_permitted,json=isPermitted,proto3" json:"is_permitted,omitempty"` +} + +func (x *InputDevices) Reset() { + *x = InputDevices{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_models_models_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *InputDevices) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*InputDevices) ProtoMessage() {} + +func (x *InputDevices) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_models_models_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use InputDevices.ProtoReflect.Descriptor instead. +func (*InputDevices) Descriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{19} +} + +func (x *InputDevices) GetAvailableDevices() []string { + if x != nil { + return x.AvailableDevices + } + return nil +} + +func (x *InputDevices) GetCurrentDevice() string { + if x != nil { + return x.CurrentDevice + } + return "" +} + +func (x *InputDevices) GetIsPermitted() bool { + if x != nil { + return x.IsPermitted + } + return false +} + +type AndroidState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ThermalState AndroidThermalState `protobuf:"varint,1,opt,name=thermal_state,json=thermalState,proto3,enum=stream.video.sfu.models.AndroidThermalState" json:"thermal_state,omitempty"` + IsPowerSaverMode bool `protobuf:"varint,2,opt,name=is_power_saver_mode,json=isPowerSaverMode,proto3" json:"is_power_saver_mode,omitempty"` +} + +func (x *AndroidState) Reset() { + *x = AndroidState{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_models_models_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AndroidState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AndroidState) ProtoMessage() {} + +func (x *AndroidState) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_models_models_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AndroidState.ProtoReflect.Descriptor instead. +func (*AndroidState) Descriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{20} +} + +func (x *AndroidState) GetThermalState() AndroidThermalState { + if x != nil { + return x.ThermalState + } + return AndroidThermalState_ANDROID_THERMAL_STATE_UNSPECIFIED +} + +func (x *AndroidState) GetIsPowerSaverMode() bool { + if x != nil { + return x.IsPowerSaverMode + } + return false +} + +type AppleState struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ThermalState AppleThermalState `protobuf:"varint,1,opt,name=thermal_state,json=thermalState,proto3,enum=stream.video.sfu.models.AppleThermalState" json:"thermal_state,omitempty"` + // https://developer.apple.com/documentation/foundation/processinfo/1617047-islowpowermodeenabled + IsLowPowerModeEnabled bool `protobuf:"varint,2,opt,name=is_low_power_mode_enabled,json=isLowPowerModeEnabled,proto3" json:"is_low_power_mode_enabled,omitempty"` +} + +func (x *AppleState) Reset() { + *x = AppleState{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_models_models_proto_msgTypes[21] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AppleState) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AppleState) ProtoMessage() {} + +func (x *AppleState) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_models_models_proto_msgTypes[21] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AppleState.ProtoReflect.Descriptor instead. +func (*AppleState) Descriptor() ([]byte, []int) { + return file_video_sfu_models_models_proto_rawDescGZIP(), []int{21} +} + +func (x *AppleState) GetThermalState() AppleThermalState { + if x != nil { + return x.ThermalState + } + return AppleThermalState_APPLE_THERMAL_STATE_UNSPECIFIED +} + +func (x *AppleState) GetIsLowPowerModeEnabled() bool { + if x != nil { + return x.IsLowPowerModeEnabled + } + return false +} + var File_video_sfu_models_models_proto protoreflect.FileDescriptor var file_video_sfu_models_models_proto_rawDesc = []byte{ @@ -2048,19 +2480,40 @@ var file_video_sfu_models_models_proto_rawDesc = []byte{ 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x52, 0x07, 0x71, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, - 0xc9, 0x01, 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, - 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1b, 0x0a, 0x09, 0x66, 0x6d, 0x74, 0x70, 0x5f, 0x6c, 0x69, 0x6e, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x08, 0x66, 0x6d, 0x74, 0x70, 0x4c, 0x69, 0x6e, 0x65, 0x12, 0x1d, 0x0a, - 0x0a, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x6f, 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x13, - 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, - 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x09, 0x66, 0x65, 0x65, 0x64, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x22, 0x90, 0x01, 0x0a, 0x0a, + 0xf4, 0x02, 0x0a, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x41, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, + 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x43, 0x6f, + 0x64, 0x65, 0x63, 0x52, 0x05, 0x63, 0x6f, 0x64, 0x65, 0x63, 0x12, 0x18, 0x0a, 0x07, 0x62, 0x69, + 0x74, 0x72, 0x61, 0x74, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x07, 0x62, 0x69, 0x74, + 0x72, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x66, 0x70, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x03, 0x66, 0x70, 0x73, 0x12, 0x2c, 0x0a, 0x12, 0x6d, 0x61, 0x78, 0x5f, 0x73, 0x70, + 0x61, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x10, 0x6d, 0x61, 0x78, 0x53, 0x70, 0x61, 0x74, 0x69, 0x61, 0x6c, 0x4c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x12, 0x2e, 0x0a, 0x13, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x65, 0x6d, 0x70, + 0x6f, 0x72, 0x61, 0x6c, 0x5f, 0x6c, 0x61, 0x79, 0x65, 0x72, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x05, 0x52, 0x11, 0x6d, 0x61, 0x78, 0x54, 0x65, 0x6d, 0x70, 0x6f, 0x72, 0x61, 0x6c, 0x4c, 0x61, + 0x79, 0x65, 0x72, 0x73, 0x12, 0x50, 0x0a, 0x0f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x64, 0x69, + 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x0e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x69, 0x6d, + 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x08, 0x20, 0x01, + 0x28, 0x05, 0x52, 0x02, 0x69, 0x64, 0x22, 0xa2, 0x01, 0x0a, 0x05, 0x43, 0x6f, 0x64, 0x65, 0x63, + 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, + 0x18, 0x10, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x6c, 0x6f, 0x63, 0x6b, + 0x5f, 0x72, 0x61, 0x74, 0x65, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x6c, 0x6f, + 0x63, 0x6b, 0x52, 0x61, 0x74, 0x65, 0x12, 0x2f, 0x0a, 0x13, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, + 0x6e, 0x67, 0x5f, 0x70, 0x61, 0x72, 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x12, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x50, 0x61, 0x72, + 0x61, 0x6d, 0x65, 0x74, 0x65, 0x72, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6d, 0x74, 0x70, 0x18, + 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6d, 0x74, 0x70, 0x22, 0x90, 0x01, 0x0a, 0x0a, 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, @@ -2069,8 +2522,8 @@ var file_video_sfu_models_models_proto_rawDesc = []byte{ 0x65, 0x5f, 0x63, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x69, 0x63, 0x65, 0x43, 0x61, 0x6e, 0x64, 0x69, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0xf4, - 0x01, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, + 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x8a, + 0x02, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x19, 0x0a, 0x08, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, @@ -2085,224 +2538,284 @@ var file_video_sfu_models_models_proto_rawDesc = []byte{ 0x18, 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x03, 0x64, 0x74, 0x78, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x74, 0x65, 0x72, 0x65, 0x6f, 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x73, 0x74, 0x65, 0x72, 0x65, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x72, 0x65, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x03, 0x72, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x12, 0x36, - 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, - 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x52, 0x65, - 0x74, 0x72, 0x79, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, - 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x03, 0x73, 0x64, 0x6b, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x52, 0x03, 0x72, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x22, 0x7c, 0x0a, 0x05, 0x45, + 0x72, 0x72, 0x6f, 0x72, 0x12, 0x36, 0x0a, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, 0x12, 0x18, 0x0a, 0x07, + 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, + 0x5f, 0x72, 0x65, 0x74, 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0b, 0x73, 0x68, + 0x6f, 0x75, 0x6c, 0x64, 0x52, 0x65, 0x74, 0x72, 0x79, 0x22, 0xe1, 0x01, 0x0a, 0x0d, 0x43, 0x6c, + 0x69, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x2e, 0x0a, 0x03, 0x73, + 0x64, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x2e, 0x53, 0x64, 0x6b, 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x2b, 0x0a, 0x02, 0x6f, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2e, 0x4f, 0x53, 0x52, 0x02, 0x6f, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x62, 0x72, 0x6f, 0x77, + 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2e, 0x42, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x52, 0x07, 0x62, 0x72, 0x6f, + 0x77, 0x73, 0x65, 0x72, 0x12, 0x37, 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x0a, + 0x03, 0x53, 0x64, 0x6b, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x53, 0x64, 0x6b, - 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x2b, 0x0a, 0x02, 0x6f, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x4f, 0x53, 0x52, 0x02, - 0x6f, 0x73, 0x12, 0x3a, 0x0a, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x42, 0x72, - 0x6f, 0x77, 0x73, 0x65, 0x72, 0x52, 0x07, 0x62, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x12, 0x37, - 0x0a, 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, - 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x52, - 0x06, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x22, 0x7d, 0x0a, 0x03, 0x53, 0x64, 0x6b, 0x12, 0x34, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, - 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x53, 0x64, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, - 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, - 0x6e, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, - 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0x56, 0x0a, 0x02, 0x4f, 0x53, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, - 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x22, 0x37, - 0x0a, 0x07, 0x42, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, - 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x0a, 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, - 0xa0, 0x02, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x12, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x0c, 0x68, 0x6f, 0x73, - 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x63, - 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, - 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x0a, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, - 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, - 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, - 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, - 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, - 0x41, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x6c, 0x6c, 0x47, 0x72, 0x61, 0x6e, 0x74, - 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, - 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, - 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x12, 0x2a, 0x0a, - 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6e, - 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x53, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x61, - 0x72, 0x65, 0x2a, 0x49, 0x0a, 0x08, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, - 0x0a, 0x1f, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, - 0x49, 0x53, 0x48, 0x45, 0x52, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, - 0x44, 0x10, 0x00, 0x12, 0x18, 0x0a, 0x14, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x55, 0x42, 0x53, 0x43, 0x52, 0x49, 0x42, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x93, 0x01, - 0x0a, 0x11, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x22, 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x4f, - 0x4f, 0x52, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, - 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x10, - 0x02, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, - 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x4e, - 0x54, 0x10, 0x03, 0x2a, 0x77, 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, - 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x1d, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, - 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, - 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4d, 0x49, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, - 0x12, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x48, - 0x49, 0x47, 0x48, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, - 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x03, 0x2a, 0x93, 0x01, 0x0a, - 0x09, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, - 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, - 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, - 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, - 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, - 0x21, 0x0a, 0x1d, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, - 0x52, 0x45, 0x45, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x4f, - 0x10, 0x04, 0x2a, 0x91, 0x06, 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x53, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, - 0x4e, 0x44, 0x10, 0x64, 0x12, 0x26, 0x0a, 0x22, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, - 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, - 0x53, 0x5f, 0x4d, 0x49, 0x53, 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x65, 0x12, 0x29, 0x0a, 0x25, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, - 0x53, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, - 0x4f, 0x52, 0x44, 0x45, 0x52, 0x10, 0x66, 0x12, 0x32, 0x0a, 0x2e, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, + 0x6a, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x6d, 0x61, 0x6a, 0x6f, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x6d, 0x69, 0x6e, 0x6f, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x70, 0x61, 0x74, 0x63, 0x68, 0x22, 0x56, 0x0a, 0x02, + 0x4f, 0x53, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, + 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, + 0x12, 0x22, 0x0a, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, + 0x74, 0x75, 0x72, 0x65, 0x22, 0x37, 0x0a, 0x07, 0x42, 0x72, 0x6f, 0x77, 0x73, 0x65, 0x72, 0x12, + 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x36, 0x0a, + 0x06, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x76, + 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x02, 0x0a, 0x04, 0x43, 0x61, 0x6c, 0x6c, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x2b, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x62, 0x79, + 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, + 0x20, 0x0a, 0x0c, 0x68, 0x6f, 0x73, 0x74, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x68, 0x6f, 0x73, 0x74, 0x55, 0x73, 0x65, 0x72, 0x49, + 0x64, 0x12, 0x2f, 0x0a, 0x06, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x17, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x52, 0x06, 0x63, 0x75, 0x73, 0x74, + 0x6f, 0x6d, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, + 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, + 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0x8d, 0x01, 0x0a, 0x0a, 0x43, 0x61, 0x6c, + 0x6c, 0x47, 0x72, 0x61, 0x6e, 0x74, 0x73, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, + 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x5f, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x08, 0x52, 0x0f, 0x63, 0x61, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x41, 0x75, + 0x64, 0x69, 0x6f, 0x12, 0x2a, 0x0a, 0x11, 0x63, 0x61, 0x6e, 0x5f, 0x70, 0x75, 0x62, 0x6c, 0x69, + 0x73, 0x68, 0x5f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, + 0x63, 0x61, 0x6e, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x12, + 0x27, 0x0a, 0x0f, 0x63, 0x61, 0x6e, 0x5f, 0x73, 0x63, 0x72, 0x65, 0x65, 0x6e, 0x73, 0x68, 0x61, + 0x72, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x63, 0x61, 0x6e, 0x53, 0x63, 0x72, + 0x65, 0x65, 0x6e, 0x73, 0x68, 0x61, 0x72, 0x65, 0x22, 0x85, 0x01, 0x0a, 0x0c, 0x49, 0x6e, 0x70, + 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x76, 0x61, + 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x61, 0x76, 0x61, 0x69, 0x6c, 0x61, 0x62, 0x6c, 0x65, 0x44, + 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, + 0x74, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, + 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x12, 0x21, 0x0a, + 0x0c, 0x69, 0x73, 0x5f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x0b, 0x69, 0x73, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x74, 0x65, 0x64, + 0x22, 0x90, 0x01, 0x0a, 0x0c, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x51, 0x0a, 0x0d, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x73, 0x74, 0x61, + 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, + 0x6c, 0x73, 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, + 0x6c, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x53, + 0x74, 0x61, 0x74, 0x65, 0x12, 0x2d, 0x0a, 0x13, 0x69, 0x73, 0x5f, 0x70, 0x6f, 0x77, 0x65, 0x72, + 0x5f, 0x73, 0x61, 0x76, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x10, 0x69, 0x73, 0x50, 0x6f, 0x77, 0x65, 0x72, 0x53, 0x61, 0x76, 0x65, 0x72, 0x4d, + 0x6f, 0x64, 0x65, 0x22, 0x97, 0x01, 0x0a, 0x0a, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x4f, 0x0a, 0x0d, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0c, 0x74, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x74, + 0x61, 0x74, 0x65, 0x12, 0x38, 0x0a, 0x19, 0x69, 0x73, 0x5f, 0x6c, 0x6f, 0x77, 0x5f, 0x70, 0x6f, + 0x77, 0x65, 0x72, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x15, 0x69, 0x73, 0x4c, 0x6f, 0x77, 0x50, 0x6f, 0x77, + 0x65, 0x72, 0x4d, 0x6f, 0x64, 0x65, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x2a, 0x49, 0x0a, + 0x08, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x50, 0x45, 0x45, + 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x45, 0x52, + 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x18, + 0x0a, 0x14, 0x50, 0x45, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x55, 0x42, 0x53, + 0x43, 0x52, 0x49, 0x42, 0x45, 0x52, 0x10, 0x01, 0x2a, 0x93, 0x01, 0x0a, 0x11, 0x43, 0x6f, 0x6e, + 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x22, + 0x0a, 0x1e, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, + 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, + 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x50, 0x4f, 0x4f, 0x52, 0x10, 0x01, 0x12, + 0x1b, 0x0a, 0x17, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, + 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x47, 0x4f, 0x4f, 0x44, 0x10, 0x02, 0x12, 0x20, 0x0a, 0x1c, + 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x45, 0x58, 0x43, 0x45, 0x4c, 0x4c, 0x45, 0x4e, 0x54, 0x10, 0x03, 0x2a, 0x77, + 0x0a, 0x0c, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x51, 0x75, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x12, 0x21, + 0x0a, 0x1d, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, + 0x4c, 0x4f, 0x57, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, + 0x54, 0x59, 0x5f, 0x4d, 0x49, 0x44, 0x10, 0x01, 0x12, 0x16, 0x0a, 0x12, 0x56, 0x49, 0x44, 0x45, + 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, 0x59, 0x5f, 0x48, 0x49, 0x47, 0x48, 0x10, 0x02, + 0x12, 0x15, 0x0a, 0x11, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x51, 0x55, 0x41, 0x4c, 0x49, 0x54, + 0x59, 0x5f, 0x4f, 0x46, 0x46, 0x10, 0x03, 0x2a, 0x93, 0x01, 0x0a, 0x09, 0x54, 0x72, 0x61, 0x63, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, + 0x00, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, + 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x54, 0x52, 0x41, 0x43, 0x4b, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x10, 0x02, 0x12, 0x1b, 0x0a, + 0x17, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x52, 0x45, + 0x45, 0x4e, 0x5f, 0x53, 0x48, 0x41, 0x52, 0x45, 0x10, 0x03, 0x12, 0x21, 0x0a, 0x1d, 0x54, 0x52, + 0x41, 0x43, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x43, 0x52, 0x45, 0x45, 0x4e, 0x5f, + 0x53, 0x48, 0x41, 0x52, 0x45, 0x5f, 0x41, 0x55, 0x44, 0x49, 0x4f, 0x10, 0x04, 0x2a, 0x91, 0x06, + 0x0a, 0x09, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x1a, 0x0a, 0x16, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x26, 0x0a, 0x22, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x54, 0x52, - 0x41, 0x43, 0x4b, 0x5f, 0x56, 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, - 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x45, - 0x4e, 0x44, 0x45, 0x44, 0x10, 0x68, 0x12, 0x25, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, - 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, - 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0xc8, 0x01, 0x12, 0x29, 0x0a, - 0x24, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, - 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4e, - 0x47, 0x5f, 0x4f, 0x55, 0x54, 0x10, 0xc9, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x45, 0x52, 0x52, 0x4f, + 0x41, 0x43, 0x4b, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x64, 0x12, + 0x26, 0x0a, 0x22, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, + 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x53, 0x5f, 0x4d, 0x49, 0x53, + 0x4d, 0x41, 0x54, 0x43, 0x48, 0x10, 0x65, 0x12, 0x29, 0x0a, 0x25, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x54, 0x52, + 0x41, 0x43, 0x4b, 0x5f, 0x4f, 0x55, 0x54, 0x5f, 0x4f, 0x46, 0x5f, 0x4f, 0x52, 0x44, 0x45, 0x52, + 0x10, 0x66, 0x12, 0x32, 0x0a, 0x2e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, + 0x5f, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x56, + 0x49, 0x44, 0x45, 0x4f, 0x5f, 0x4c, 0x41, 0x59, 0x45, 0x52, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, + 0x4f, 0x55, 0x4e, 0x44, 0x10, 0x67, 0x12, 0x19, 0x0a, 0x15, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, + 0x68, 0x12, 0x25, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, + 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, + 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0xc8, 0x01, 0x12, 0x29, 0x0a, 0x24, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, + 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x4f, 0x55, 0x54, + 0x10, 0xc9, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, + 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x49, + 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0xca, + 0x01, 0x12, 0x25, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, + 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x47, 0x52, + 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xcb, 0x01, 0x12, 0x2c, 0x0a, 0x27, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, - 0x4e, 0x54, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, - 0x4c, 0x45, 0x44, 0x10, 0xca, 0x01, 0x12, 0x25, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x10, 0xcc, 0x01, 0x12, 0x33, 0x0a, 0x2e, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, - 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x49, 0x4e, 0x47, 0x10, 0xcb, 0x01, 0x12, 0x2c, 0x0a, - 0x27, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, - 0x49, 0x43, 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, - 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0xcc, 0x01, 0x12, 0x33, 0x0a, 0x2e, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x41, 0x52, 0x54, 0x49, 0x43, - 0x49, 0x50, 0x41, 0x4e, 0x54, 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x52, 0x41, 0x4e, - 0x53, 0x50, 0x4f, 0x52, 0x54, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0xcd, 0x01, - 0x12, 0x1e, 0x0a, 0x19, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, - 0x41, 0x4c, 0x4c, 0x5f, 0x4e, 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0xac, 0x02, - 0x12, 0x29, 0x0a, 0x24, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, - 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, - 0x4e, 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x45, 0x44, 0x10, 0x90, 0x03, 0x12, 0x1f, 0x0a, 0x1a, 0x45, - 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, - 0x45, 0x4e, 0x54, 0x49, 0x43, 0x41, 0x54, 0x45, 0x44, 0x10, 0x91, 0x03, 0x12, 0x21, 0x0a, 0x1c, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, - 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x93, 0x03, 0x12, - 0x21, 0x0a, 0x1c, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x4f, - 0x4f, 0x5f, 0x4d, 0x41, 0x4e, 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x10, - 0xad, 0x03, 0x12, 0x25, 0x0a, 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, - 0x5f, 0x49, 0x4e, 0x54, 0x45, 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, - 0x5f, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x10, 0xf4, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x45, 0x52, 0x52, - 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x46, 0x55, 0x5f, 0x53, 0x48, 0x55, 0x54, - 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0xd8, 0x04, 0x12, 0x18, 0x0a, 0x13, - 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x46, 0x55, 0x5f, 0x46, - 0x55, 0x4c, 0x4c, 0x10, 0xbc, 0x05, 0x2a, 0xea, 0x01, 0x0a, 0x07, 0x53, 0x64, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x18, 0x0a, 0x14, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, - 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, - 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x10, 0x01, - 0x12, 0x14, 0x0a, 0x10, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x47, - 0x55, 0x4c, 0x41, 0x52, 0x10, 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, - 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, - 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4f, 0x53, 0x10, 0x04, 0x12, 0x14, - 0x0a, 0x10, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x55, 0x54, 0x54, - 0x45, 0x52, 0x10, 0x05, 0x12, 0x19, 0x0a, 0x15, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x5f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x06, 0x12, - 0x12, 0x0a, 0x0e, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, - 0x59, 0x10, 0x07, 0x12, 0x0f, 0x0a, 0x0b, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, - 0x47, 0x4f, 0x10, 0x08, 0x12, 0x1d, 0x0a, 0x19, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, - 0x5f, 0x50, 0x4c, 0x41, 0x49, 0x4e, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x53, 0x43, 0x52, 0x49, 0x50, - 0x54, 0x10, 0x09, 0x2a, 0xbb, 0x01, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x22, - 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, - 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, - 0x45, 0x44, 0x10, 0x00, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, - 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, - 0x53, 0x45, 0x52, 0x5f, 0x4d, 0x55, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x54, - 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, - 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x52, - 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, - 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, - 0x03, 0x2a, 0x6e, 0x0a, 0x0c, 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, - 0x6e, 0x12, 0x1e, 0x0a, 0x1a, 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, - 0x00, 0x12, 0x20, 0x0a, 0x1c, 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, - 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x4f, 0x57, - 0x4e, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, - 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, - 0x02, 0x2a, 0xb6, 0x01, 0x0a, 0x0f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x52, - 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, - 0x44, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x4c, 0x4c, - 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, - 0x44, 0x45, 0x44, 0x10, 0x01, 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, - 0x44, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x5f, - 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x41, 0x4c, 0x4c, 0x5f, - 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x43, - 0x4b, 0x45, 0x44, 0x10, 0x03, 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, - 0x44, 0x45, 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, - 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xf1, 0x01, 0x0a, 0x1a, 0x57, - 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x2c, 0x0a, 0x28, 0x57, 0x45, 0x42, - 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, - 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x57, 0x45, 0x42, 0x53, 0x4f, - 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, - 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x10, 0x01, 0x12, 0x25, 0x0a, 0x21, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, - 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, - 0x54, 0x45, 0x47, 0x59, 0x5f, 0x46, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x57, - 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, - 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x52, 0x45, 0x4a, 0x4f, - 0x49, 0x4e, 0x10, 0x03, 0x12, 0x28, 0x0a, 0x24, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, + 0x5f, 0x4d, 0x45, 0x44, 0x49, 0x41, 0x5f, 0x54, 0x52, 0x41, 0x4e, 0x53, 0x50, 0x4f, 0x52, 0x54, + 0x5f, 0x46, 0x41, 0x49, 0x4c, 0x55, 0x52, 0x45, 0x10, 0xcd, 0x01, 0x12, 0x1e, 0x0a, 0x19, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x4e, + 0x4f, 0x54, 0x5f, 0x46, 0x4f, 0x55, 0x4e, 0x44, 0x10, 0xac, 0x02, 0x12, 0x29, 0x0a, 0x24, 0x45, + 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, + 0x54, 0x5f, 0x56, 0x41, 0x4c, 0x49, 0x44, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x46, 0x41, 0x49, + 0x4c, 0x45, 0x44, 0x10, 0x90, 0x03, 0x12, 0x1f, 0x0a, 0x1a, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, + 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x55, 0x4e, 0x41, 0x55, 0x54, 0x48, 0x45, 0x4e, 0x54, 0x49, 0x43, + 0x41, 0x54, 0x45, 0x44, 0x10, 0x91, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, + 0x5f, 0x44, 0x45, 0x4e, 0x49, 0x45, 0x44, 0x10, 0x93, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x45, 0x52, + 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x54, 0x4f, 0x4f, 0x5f, 0x4d, 0x41, 0x4e, + 0x59, 0x5f, 0x52, 0x45, 0x51, 0x55, 0x45, 0x53, 0x54, 0x53, 0x10, 0xad, 0x03, 0x12, 0x25, 0x0a, + 0x20, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x49, 0x4e, 0x54, 0x45, + 0x52, 0x4e, 0x41, 0x4c, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x45, 0x52, 0x5f, 0x45, 0x52, 0x52, 0x4f, + 0x52, 0x10, 0xf4, 0x03, 0x12, 0x21, 0x0a, 0x1c, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x43, 0x4f, + 0x44, 0x45, 0x5f, 0x53, 0x46, 0x55, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, + 0x44, 0x4f, 0x57, 0x4e, 0x10, 0xd8, 0x04, 0x12, 0x18, 0x0a, 0x13, 0x45, 0x52, 0x52, 0x4f, 0x52, + 0x5f, 0x43, 0x4f, 0x44, 0x45, 0x5f, 0x53, 0x46, 0x55, 0x5f, 0x46, 0x55, 0x4c, 0x4c, 0x10, 0xbc, + 0x05, 0x2a, 0xea, 0x01, 0x0a, 0x07, 0x53, 0x64, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x18, 0x0a, + 0x14, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x44, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, 0x54, 0x10, 0x01, 0x12, 0x14, 0x0a, 0x10, 0x53, + 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x47, 0x55, 0x4c, 0x41, 0x52, 0x10, + 0x02, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, + 0x44, 0x52, 0x4f, 0x49, 0x44, 0x10, 0x03, 0x12, 0x10, 0x0a, 0x0c, 0x53, 0x44, 0x4b, 0x5f, 0x54, + 0x59, 0x50, 0x45, 0x5f, 0x49, 0x4f, 0x53, 0x10, 0x04, 0x12, 0x14, 0x0a, 0x10, 0x53, 0x44, 0x4b, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x46, 0x4c, 0x55, 0x54, 0x54, 0x45, 0x52, 0x10, 0x05, 0x12, + 0x19, 0x0a, 0x15, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x45, 0x41, 0x43, + 0x54, 0x5f, 0x4e, 0x41, 0x54, 0x49, 0x56, 0x45, 0x10, 0x06, 0x12, 0x12, 0x0a, 0x0e, 0x53, 0x44, + 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x49, 0x54, 0x59, 0x10, 0x07, 0x12, 0x0f, + 0x0a, 0x0b, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x47, 0x4f, 0x10, 0x08, 0x12, + 0x1d, 0x0a, 0x19, 0x53, 0x44, 0x4b, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x4c, 0x41, 0x49, + 0x4e, 0x5f, 0x4a, 0x41, 0x56, 0x41, 0x53, 0x43, 0x52, 0x49, 0x50, 0x54, 0x10, 0x09, 0x2a, 0xbb, + 0x01, 0x0a, 0x14, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x55, 0x6e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, + 0x68, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x26, 0x0a, 0x22, 0x54, 0x52, 0x41, 0x43, 0x4b, + 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, + 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x25, 0x0a, 0x21, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, + 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x4d, + 0x55, 0x54, 0x45, 0x44, 0x10, 0x01, 0x12, 0x2d, 0x0a, 0x29, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, + 0x55, 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x50, 0x45, 0x52, 0x4d, 0x49, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x52, 0x45, 0x56, 0x4f, + 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x54, 0x52, 0x41, 0x43, 0x4b, 0x5f, 0x55, + 0x4e, 0x50, 0x55, 0x42, 0x4c, 0x49, 0x53, 0x48, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, + 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0x6e, 0x0a, 0x0c, + 0x47, 0x6f, 0x41, 0x77, 0x61, 0x79, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x1e, 0x0a, 0x1a, + 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, + 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x20, 0x0a, 0x1c, + 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, + 0x48, 0x55, 0x54, 0x54, 0x49, 0x4e, 0x47, 0x5f, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x01, 0x12, 0x1c, + 0x0a, 0x18, 0x47, 0x4f, 0x5f, 0x41, 0x57, 0x41, 0x59, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, + 0x5f, 0x52, 0x45, 0x42, 0x41, 0x4c, 0x41, 0x4e, 0x43, 0x45, 0x10, 0x02, 0x2a, 0xb6, 0x01, 0x0a, + 0x0f, 0x43, 0x61, 0x6c, 0x6c, 0x45, 0x6e, 0x64, 0x65, 0x64, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, + 0x12, 0x21, 0x0a, 0x1d, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, + 0x44, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, + 0x44, 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x10, 0x01, + 0x12, 0x20, 0x0a, 0x1c, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4c, 0x49, 0x56, 0x45, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x1c, 0x0a, 0x18, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, + 0x5f, 0x52, 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x4b, 0x49, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x03, + 0x12, 0x23, 0x0a, 0x1f, 0x43, 0x41, 0x4c, 0x4c, 0x5f, 0x45, 0x4e, 0x44, 0x45, 0x44, 0x5f, 0x52, + 0x45, 0x41, 0x53, 0x4f, 0x4e, 0x5f, 0x53, 0x45, 0x53, 0x53, 0x49, 0x4f, 0x4e, 0x5f, 0x45, 0x4e, + 0x44, 0x45, 0x44, 0x10, 0x04, 0x2a, 0xf1, 0x01, 0x0a, 0x1a, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x79, 0x12, 0x2c, 0x0a, 0x28, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, - 0x54, 0x45, 0x47, 0x59, 0x5f, 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x10, 0x04, 0x42, 0x65, - 0x42, 0x0b, 0x53, 0x66, 0x75, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x56, 0x31, 0x50, 0x01, 0x5a, - 0x37, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, - 0x75, 0x2f, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0xaa, 0x02, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x66, 0x75, 0x2e, 0x4d, - 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x54, 0x45, 0x47, 0x59, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, + 0x10, 0x00, 0x12, 0x2b, 0x0a, 0x27, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, + 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, + 0x47, 0x59, 0x5f, 0x44, 0x49, 0x53, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x10, 0x01, 0x12, + 0x25, 0x0a, 0x21, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, + 0x46, 0x41, 0x53, 0x54, 0x10, 0x02, 0x12, 0x27, 0x0a, 0x23, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, + 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, + 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, 0x52, 0x45, 0x4a, 0x4f, 0x49, 0x4e, 0x10, 0x03, 0x12, + 0x28, 0x0a, 0x24, 0x57, 0x45, 0x42, 0x53, 0x4f, 0x43, 0x4b, 0x45, 0x54, 0x5f, 0x52, 0x45, 0x43, + 0x4f, 0x4e, 0x4e, 0x45, 0x43, 0x54, 0x5f, 0x53, 0x54, 0x52, 0x41, 0x54, 0x45, 0x47, 0x59, 0x5f, + 0x4d, 0x49, 0x47, 0x52, 0x41, 0x54, 0x45, 0x10, 0x04, 0x2a, 0xb0, 0x02, 0x0a, 0x13, 0x41, 0x6e, + 0x64, 0x72, 0x6f, 0x69, 0x64, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x74, 0x61, 0x74, + 0x65, 0x12, 0x25, 0x0a, 0x21, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, + 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, + 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1e, 0x0a, 0x1a, 0x41, 0x4e, 0x44, 0x52, + 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x4e, 0x44, 0x52, + 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x4c, 0x49, 0x47, 0x48, 0x54, 0x10, 0x02, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x4e, 0x44, + 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, + 0x54, 0x45, 0x5f, 0x4d, 0x4f, 0x44, 0x45, 0x52, 0x41, 0x54, 0x45, 0x10, 0x03, 0x12, 0x20, 0x0a, + 0x1c, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, 0x56, 0x45, 0x52, 0x45, 0x10, 0x04, 0x12, + 0x22, 0x0a, 0x1e, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, + 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, + 0x4c, 0x10, 0x05, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x4e, 0x44, 0x52, 0x4f, 0x49, 0x44, 0x5f, 0x54, + 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x45, 0x4d, 0x45, + 0x52, 0x47, 0x45, 0x4e, 0x43, 0x59, 0x10, 0x06, 0x12, 0x22, 0x0a, 0x1e, 0x41, 0x4e, 0x44, 0x52, + 0x4f, 0x49, 0x44, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x45, 0x5f, 0x53, 0x48, 0x55, 0x54, 0x44, 0x4f, 0x57, 0x4e, 0x10, 0x07, 0x2a, 0xba, 0x01, 0x0a, + 0x11, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x54, 0x68, 0x65, 0x72, 0x6d, 0x61, 0x6c, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x12, 0x23, 0x0a, 0x1f, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x5f, 0x54, 0x48, 0x45, 0x52, + 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, + 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x50, 0x50, 0x4c, 0x45, + 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x4e, + 0x4f, 0x4d, 0x49, 0x4e, 0x41, 0x4c, 0x10, 0x01, 0x12, 0x1c, 0x0a, 0x18, 0x41, 0x50, 0x50, 0x4c, + 0x45, 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, + 0x46, 0x41, 0x49, 0x52, 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x41, 0x50, 0x50, 0x4c, 0x45, 0x5f, + 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x53, 0x45, + 0x52, 0x49, 0x4f, 0x55, 0x53, 0x10, 0x03, 0x12, 0x20, 0x0a, 0x1c, 0x41, 0x50, 0x50, 0x4c, 0x45, + 0x5f, 0x54, 0x48, 0x45, 0x52, 0x4d, 0x41, 0x4c, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x45, 0x5f, 0x43, + 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x10, 0x04, 0x42, 0x65, 0x42, 0x0b, 0x53, 0x66, 0x75, + 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x56, 0x31, 0x50, 0x01, 0x5a, 0x37, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, + 0x75, 0x66, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, 0x75, 0x2f, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0xaa, 0x02, 0x1a, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x66, 0x75, 0x2e, 0x4d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -2317,8 +2830,8 @@ func file_video_sfu_models_models_proto_rawDescGZIP() []byte { return file_video_sfu_models_models_proto_rawDescData } -var file_video_sfu_models_models_proto_enumTypes = make([]protoimpl.EnumInfo, 10) -var file_video_sfu_models_models_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_video_sfu_models_models_proto_enumTypes = make([]protoimpl.EnumInfo, 12) +var file_video_sfu_models_models_proto_msgTypes = make([]protoimpl.MessageInfo, 22) var file_video_sfu_models_models_proto_goTypes = []interface{}{ (PeerType)(0), // 0: stream.video.sfu.models.PeerType (ConnectionQuality)(0), // 1: stream.video.sfu.models.ConnectionQuality @@ -2330,56 +2843,67 @@ var file_video_sfu_models_models_proto_goTypes = []interface{}{ (GoAwayReason)(0), // 7: stream.video.sfu.models.GoAwayReason (CallEndedReason)(0), // 8: stream.video.sfu.models.CallEndedReason (WebsocketReconnectStrategy)(0), // 9: stream.video.sfu.models.WebsocketReconnectStrategy - (*CallState)(nil), // 10: stream.video.sfu.models.CallState - (*ParticipantCount)(nil), // 11: stream.video.sfu.models.ParticipantCount - (*Pin)(nil), // 12: stream.video.sfu.models.Pin - (*Participant)(nil), // 13: stream.video.sfu.models.Participant - (*StreamQuality)(nil), // 14: stream.video.sfu.models.StreamQuality - (*VideoDimension)(nil), // 15: stream.video.sfu.models.VideoDimension - (*VideoLayer)(nil), // 16: stream.video.sfu.models.VideoLayer - (*Codec)(nil), // 17: stream.video.sfu.models.Codec - (*ICETrickle)(nil), // 18: stream.video.sfu.models.ICETrickle - (*TrackInfo)(nil), // 19: stream.video.sfu.models.TrackInfo - (*Error)(nil), // 20: stream.video.sfu.models.Error - (*ClientDetails)(nil), // 21: stream.video.sfu.models.ClientDetails - (*Sdk)(nil), // 22: stream.video.sfu.models.Sdk - (*OS)(nil), // 23: stream.video.sfu.models.OS - (*Browser)(nil), // 24: stream.video.sfu.models.Browser - (*Device)(nil), // 25: stream.video.sfu.models.Device - (*Call)(nil), // 26: stream.video.sfu.models.Call - (*CallGrants)(nil), // 27: stream.video.sfu.models.CallGrants - (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp - (*structpb.Struct)(nil), // 29: google.protobuf.Struct + (AndroidThermalState)(0), // 10: stream.video.sfu.models.AndroidThermalState + (AppleThermalState)(0), // 11: stream.video.sfu.models.AppleThermalState + (*CallState)(nil), // 12: stream.video.sfu.models.CallState + (*ParticipantCount)(nil), // 13: stream.video.sfu.models.ParticipantCount + (*Pin)(nil), // 14: stream.video.sfu.models.Pin + (*Participant)(nil), // 15: stream.video.sfu.models.Participant + (*StreamQuality)(nil), // 16: stream.video.sfu.models.StreamQuality + (*VideoDimension)(nil), // 17: stream.video.sfu.models.VideoDimension + (*VideoLayer)(nil), // 18: stream.video.sfu.models.VideoLayer + (*PublishOption)(nil), // 19: stream.video.sfu.models.PublishOption + (*Codec)(nil), // 20: stream.video.sfu.models.Codec + (*ICETrickle)(nil), // 21: stream.video.sfu.models.ICETrickle + (*TrackInfo)(nil), // 22: stream.video.sfu.models.TrackInfo + (*Error)(nil), // 23: stream.video.sfu.models.Error + (*ClientDetails)(nil), // 24: stream.video.sfu.models.ClientDetails + (*Sdk)(nil), // 25: stream.video.sfu.models.Sdk + (*OS)(nil), // 26: stream.video.sfu.models.OS + (*Browser)(nil), // 27: stream.video.sfu.models.Browser + (*Device)(nil), // 28: stream.video.sfu.models.Device + (*Call)(nil), // 29: stream.video.sfu.models.Call + (*CallGrants)(nil), // 30: stream.video.sfu.models.CallGrants + (*InputDevices)(nil), // 31: stream.video.sfu.models.InputDevices + (*AndroidState)(nil), // 32: stream.video.sfu.models.AndroidState + (*AppleState)(nil), // 33: stream.video.sfu.models.AppleState + (*timestamppb.Timestamp)(nil), // 34: google.protobuf.Timestamp + (*structpb.Struct)(nil), // 35: google.protobuf.Struct } var file_video_sfu_models_models_proto_depIdxs = []int32{ - 13, // 0: stream.video.sfu.models.CallState.participants:type_name -> stream.video.sfu.models.Participant - 28, // 1: stream.video.sfu.models.CallState.started_at:type_name -> google.protobuf.Timestamp - 11, // 2: stream.video.sfu.models.CallState.participant_count:type_name -> stream.video.sfu.models.ParticipantCount - 12, // 3: stream.video.sfu.models.CallState.pins:type_name -> stream.video.sfu.models.Pin + 15, // 0: stream.video.sfu.models.CallState.participants:type_name -> stream.video.sfu.models.Participant + 34, // 1: stream.video.sfu.models.CallState.started_at:type_name -> google.protobuf.Timestamp + 13, // 2: stream.video.sfu.models.CallState.participant_count:type_name -> stream.video.sfu.models.ParticipantCount + 14, // 3: stream.video.sfu.models.CallState.pins:type_name -> stream.video.sfu.models.Pin 3, // 4: stream.video.sfu.models.Participant.published_tracks:type_name -> stream.video.sfu.models.TrackType - 28, // 5: stream.video.sfu.models.Participant.joined_at:type_name -> google.protobuf.Timestamp + 34, // 5: stream.video.sfu.models.Participant.joined_at:type_name -> google.protobuf.Timestamp 1, // 6: stream.video.sfu.models.Participant.connection_quality:type_name -> stream.video.sfu.models.ConnectionQuality - 29, // 7: stream.video.sfu.models.Participant.custom:type_name -> google.protobuf.Struct + 35, // 7: stream.video.sfu.models.Participant.custom:type_name -> google.protobuf.Struct 2, // 8: stream.video.sfu.models.StreamQuality.video_quality:type_name -> stream.video.sfu.models.VideoQuality - 15, // 9: stream.video.sfu.models.VideoLayer.video_dimension:type_name -> stream.video.sfu.models.VideoDimension + 17, // 9: stream.video.sfu.models.VideoLayer.video_dimension:type_name -> stream.video.sfu.models.VideoDimension 2, // 10: stream.video.sfu.models.VideoLayer.quality:type_name -> stream.video.sfu.models.VideoQuality - 0, // 11: stream.video.sfu.models.ICETrickle.peer_type:type_name -> stream.video.sfu.models.PeerType - 3, // 12: stream.video.sfu.models.TrackInfo.track_type:type_name -> stream.video.sfu.models.TrackType - 16, // 13: stream.video.sfu.models.TrackInfo.layers:type_name -> stream.video.sfu.models.VideoLayer - 4, // 14: stream.video.sfu.models.Error.code:type_name -> stream.video.sfu.models.ErrorCode - 22, // 15: stream.video.sfu.models.ClientDetails.sdk:type_name -> stream.video.sfu.models.Sdk - 23, // 16: stream.video.sfu.models.ClientDetails.os:type_name -> stream.video.sfu.models.OS - 24, // 17: stream.video.sfu.models.ClientDetails.browser:type_name -> stream.video.sfu.models.Browser - 25, // 18: stream.video.sfu.models.ClientDetails.device:type_name -> stream.video.sfu.models.Device - 5, // 19: stream.video.sfu.models.Sdk.type:type_name -> stream.video.sfu.models.SdkType - 29, // 20: stream.video.sfu.models.Call.custom:type_name -> google.protobuf.Struct - 28, // 21: stream.video.sfu.models.Call.created_at:type_name -> google.protobuf.Timestamp - 28, // 22: stream.video.sfu.models.Call.updated_at:type_name -> google.protobuf.Timestamp - 23, // [23:23] is the sub-list for method output_type - 23, // [23:23] is the sub-list for method input_type - 23, // [23:23] is the sub-list for extension type_name - 23, // [23:23] is the sub-list for extension extendee - 0, // [0:23] is the sub-list for field type_name + 3, // 11: stream.video.sfu.models.PublishOption.track_type:type_name -> stream.video.sfu.models.TrackType + 20, // 12: stream.video.sfu.models.PublishOption.codec:type_name -> stream.video.sfu.models.Codec + 17, // 13: stream.video.sfu.models.PublishOption.video_dimension:type_name -> stream.video.sfu.models.VideoDimension + 0, // 14: stream.video.sfu.models.ICETrickle.peer_type:type_name -> stream.video.sfu.models.PeerType + 3, // 15: stream.video.sfu.models.TrackInfo.track_type:type_name -> stream.video.sfu.models.TrackType + 18, // 16: stream.video.sfu.models.TrackInfo.layers:type_name -> stream.video.sfu.models.VideoLayer + 4, // 17: stream.video.sfu.models.Error.code:type_name -> stream.video.sfu.models.ErrorCode + 25, // 18: stream.video.sfu.models.ClientDetails.sdk:type_name -> stream.video.sfu.models.Sdk + 26, // 19: stream.video.sfu.models.ClientDetails.os:type_name -> stream.video.sfu.models.OS + 27, // 20: stream.video.sfu.models.ClientDetails.browser:type_name -> stream.video.sfu.models.Browser + 28, // 21: stream.video.sfu.models.ClientDetails.device:type_name -> stream.video.sfu.models.Device + 5, // 22: stream.video.sfu.models.Sdk.type:type_name -> stream.video.sfu.models.SdkType + 35, // 23: stream.video.sfu.models.Call.custom:type_name -> google.protobuf.Struct + 34, // 24: stream.video.sfu.models.Call.created_at:type_name -> google.protobuf.Timestamp + 34, // 25: stream.video.sfu.models.Call.updated_at:type_name -> google.protobuf.Timestamp + 10, // 26: stream.video.sfu.models.AndroidState.thermal_state:type_name -> stream.video.sfu.models.AndroidThermalState + 11, // 27: stream.video.sfu.models.AppleState.thermal_state:type_name -> stream.video.sfu.models.AppleThermalState + 28, // [28:28] is the sub-list for method output_type + 28, // [28:28] is the sub-list for method input_type + 28, // [28:28] is the sub-list for extension type_name + 28, // [28:28] is the sub-list for extension extendee + 0, // [0:28] is the sub-list for field type_name } func init() { file_video_sfu_models_models_proto_init() } @@ -2473,7 +2997,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Codec); i { + switch v := v.(*PublishOption); i { case 0: return &v.state case 1: @@ -2485,7 +3009,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICETrickle); i { + switch v := v.(*Codec); i { case 0: return &v.state case 1: @@ -2497,7 +3021,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackInfo); i { + switch v := v.(*ICETrickle); i { case 0: return &v.state case 1: @@ -2509,7 +3033,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Error); i { + switch v := v.(*TrackInfo); i { case 0: return &v.state case 1: @@ -2521,7 +3045,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientDetails); i { + switch v := v.(*Error); i { case 0: return &v.state case 1: @@ -2533,7 +3057,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Sdk); i { + switch v := v.(*ClientDetails); i { case 0: return &v.state case 1: @@ -2545,7 +3069,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OS); i { + switch v := v.(*Sdk); i { case 0: return &v.state case 1: @@ -2557,7 +3081,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Browser); i { + switch v := v.(*OS); i { case 0: return &v.state case 1: @@ -2569,7 +3093,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Device); i { + switch v := v.(*Browser); i { case 0: return &v.state case 1: @@ -2581,7 +3105,7 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Call); i { + switch v := v.(*Device); i { case 0: return &v.state case 1: @@ -2593,6 +3117,18 @@ func file_video_sfu_models_models_proto_init() { } } file_video_sfu_models_models_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Call); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_video_sfu_models_models_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*CallGrants); i { case 0: return &v.state @@ -2604,14 +3140,50 @@ func file_video_sfu_models_models_proto_init() { return nil } } + file_video_sfu_models_models_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*InputDevices); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_video_sfu_models_models_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AndroidState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_video_sfu_models_models_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AppleState); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_video_sfu_models_models_proto_rawDesc, - NumEnums: 10, - NumMessages: 18, + NumEnums: 12, + NumMessages: 22, NumExtensions: 0, NumServices: 0, }, diff --git a/stream-video-android-core/src/main/proto/video/sfu/models/models.proto b/stream-video-android-core/src/main/proto/video/sfu/models/models.proto index 29600152133..cd01b2fdb08 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/models/models.proto +++ b/stream-video-android-core/src/main/proto/video/sfu/models/models.proto @@ -108,14 +108,62 @@ message VideoLayer { VideoQuality quality = 6; } +// PublishOption represents the configuration options for publishing a track. +message PublishOption { + // The type of the track being published (e.g., video, screenshare). + TrackType track_type = 1; + + // The codec to be used for encoding the track (e.g., VP8, VP9, H264). + Codec codec = 2; + + // The target bitrate for the published track, in bits per second. + int32 bitrate = 3; + + // The target frames per second (FPS) for video encoding. + int32 fps = 4; + + // The maximum number of spatial layers to send. + // - For SVC (e.g., VP9), spatial layers downscale by a factor of 2: + // - 1 layer: full resolution + // - 2 layers: full resolution + half resolution + // - 3 layers: full resolution + half resolution + quarter resolution + // - For non-SVC codecs (e.g., VP8/H264), this determines the number of + // encoded resolutions (e.g., quarter, half, full) sent for simulcast. + int32 max_spatial_layers = 5; + + // The maximum number of temporal layers for scalable video coding (SVC). + // Temporal layers allow varying frame rates for different bandwidths. + int32 max_temporal_layers = 6; + + // The dimensions of the video (e.g., width and height in pixels). + // Spatial layers are based on this base resolution. For example, if the base + // resolution is 1280x720: + // - Full resolution (1 layer) = 1280x720 + // - Half resolution (2 layers) = 640x360 + // - Quarter resolution (3 layers) = 320x180 + VideoDimension video_dimension = 7; + + // The unique identifier for the publish request. + // - This `id` is assigned exclusively by the SFU. Any `id` set by the client + // in the `PublishOption` will be ignored and overwritten by the SFU. + // - The primary purpose of this `id` is to uniquely identify each publish + // request, even in scenarios where multiple publish requests for the same + // `track_type` and `codec` are active simultaneously. + // For example: + // - A user may publish two tracks of the same type (e.g., video) and codec + // (e.g., VP9) concurrently. + // - This uniqueness ensures that individual requests can be managed + // independently. For instance, an `id` is critical when stopping a specific + // publish request without affecting others. + int32 id = 8; +} message Codec { - uint32 payload_type = 1; - string name = 2; - string fmtp_line = 3; - uint32 clock_rate = 4; - string encoding_parameters = 5; - repeated string feedbacks = 6; + uint32 payload_type = 16; + string name = 10; + uint32 clock_rate = 14; + string encoding_parameters = 15; + string fmtp = 12; } message ICETrickle { @@ -133,6 +181,7 @@ message TrackInfo { bool dtx = 7; bool stereo = 8; bool red = 9; + bool muted = 10; } enum ErrorCode { @@ -284,3 +333,44 @@ enum WebsocketReconnectStrategy { // SDK should migrate to a new SFU instance WEBSOCKET_RECONNECT_STRATEGY_MIGRATE = 4; }; + +message InputDevices { + repeated string available_devices = 1; + string current_device = 2; + bool is_permitted = 3; +} + +message AndroidState { + AndroidThermalState thermal_state = 1; + bool is_power_saver_mode = 2; +} + +message AppleState { + AppleThermalState thermal_state = 1; + + // https://developer.apple.com/documentation/foundation/processinfo/1617047-islowpowermodeenabled + bool is_low_power_mode_enabled = 2; +} + +// AndroidThermalState is reported by the Android API. The full list of values is documented here +// https://developer.android.com/reference/android/os/PowerManager.html#getCurrentThermalStatus() +enum AndroidThermalState { + ANDROID_THERMAL_STATE_UNSPECIFIED = 0; + ANDROID_THERMAL_STATE_NONE = 1; + ANDROID_THERMAL_STATE_LIGHT = 2; + ANDROID_THERMAL_STATE_MODERATE = 3; + ANDROID_THERMAL_STATE_SEVERE = 4; + ANDROID_THERMAL_STATE_CRITICAL = 5; + ANDROID_THERMAL_STATE_EMERGENCY = 6; + ANDROID_THERMAL_STATE_SHUTDOWN = 7; +} + +// AppleThermalState is the thermal state as reported by Apple devices when available or applicable to the platform. +// The full list of states (enum) is available here: https://developer.apple.com/documentation/foundation/processinfo/thermalstate +enum AppleThermalState { + APPLE_THERMAL_STATE_UNSPECIFIED = 0; + APPLE_THERMAL_STATE_NOMINAL = 1; + APPLE_THERMAL_STATE_FAIR = 2; + APPLE_THERMAL_STATE_SERIOUS = 3; + APPLE_THERMAL_STATE_CRITICAL = 4; +} \ No newline at end of file diff --git a/stream-video-android-core/src/main/proto/video/sfu/models/models_vtproto.pb.go b/stream-video-android-core/src/main/proto/video/sfu/models/models_vtproto.pb.go index 82f8e2dfb4c..c3ab882df89 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/models/models_vtproto.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/models/models_vtproto.pb.go @@ -528,6 +528,89 @@ func (m *VideoLayer) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *PublishOption) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *PublishOption) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *PublishOption) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Id != 0 { + i = encodeVarint(dAtA, i, uint64(m.Id)) + i-- + dAtA[i] = 0x40 + } + if m.VideoDimension != nil { + size, err := m.VideoDimension.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x3a + } + if m.MaxTemporalLayers != 0 { + i = encodeVarint(dAtA, i, uint64(m.MaxTemporalLayers)) + i-- + dAtA[i] = 0x30 + } + if m.MaxSpatialLayers != 0 { + i = encodeVarint(dAtA, i, uint64(m.MaxSpatialLayers)) + i-- + dAtA[i] = 0x28 + } + if m.Fps != 0 { + i = encodeVarint(dAtA, i, uint64(m.Fps)) + i-- + dAtA[i] = 0x20 + } + if m.Bitrate != 0 { + i = encodeVarint(dAtA, i, uint64(m.Bitrate)) + i-- + dAtA[i] = 0x18 + } + if m.Codec != nil { + size, err := m.Codec.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + if m.TrackType != 0 { + i = encodeVarint(dAtA, i, uint64(m.TrackType)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func (m *Codec) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -558,45 +641,38 @@ func (m *Codec) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } - if len(m.Feedbacks) > 0 { - for iNdEx := len(m.Feedbacks) - 1; iNdEx >= 0; iNdEx-- { - i -= len(m.Feedbacks[iNdEx]) - copy(dAtA[i:], m.Feedbacks[iNdEx]) - i = encodeVarint(dAtA, i, uint64(len(m.Feedbacks[iNdEx]))) - i-- - dAtA[i] = 0x32 - } + if m.PayloadType != 0 { + i = encodeVarint(dAtA, i, uint64(m.PayloadType)) + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x80 } if len(m.EncodingParameters) > 0 { i -= len(m.EncodingParameters) copy(dAtA[i:], m.EncodingParameters) i = encodeVarint(dAtA, i, uint64(len(m.EncodingParameters))) i-- - dAtA[i] = 0x2a + dAtA[i] = 0x7a } if m.ClockRate != 0 { i = encodeVarint(dAtA, i, uint64(m.ClockRate)) i-- - dAtA[i] = 0x20 + dAtA[i] = 0x70 } - if len(m.FmtpLine) > 0 { - i -= len(m.FmtpLine) - copy(dAtA[i:], m.FmtpLine) - i = encodeVarint(dAtA, i, uint64(len(m.FmtpLine))) + if len(m.Fmtp) > 0 { + i -= len(m.Fmtp) + copy(dAtA[i:], m.Fmtp) + i = encodeVarint(dAtA, i, uint64(len(m.Fmtp))) i-- - dAtA[i] = 0x1a + dAtA[i] = 0x62 } if len(m.Name) > 0 { i -= len(m.Name) copy(dAtA[i:], m.Name) i = encodeVarint(dAtA, i, uint64(len(m.Name))) i-- - dAtA[i] = 0x12 - } - if m.PayloadType != 0 { - i = encodeVarint(dAtA, i, uint64(m.PayloadType)) - i-- - dAtA[i] = 0x8 + dAtA[i] = 0x52 } return len(dAtA) - i, nil } @@ -683,6 +759,16 @@ func (m *TrackInfo) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if m.Muted { + i-- + if m.Muted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x50 + } if m.Red { i-- if m.Red { @@ -1272,6 +1358,161 @@ func (m *CallGrants) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *InputDevices) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *InputDevices) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *InputDevices) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.IsPermitted { + i-- + if m.IsPermitted { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x18 + } + if len(m.CurrentDevice) > 0 { + i -= len(m.CurrentDevice) + copy(dAtA[i:], m.CurrentDevice) + i = encodeVarint(dAtA, i, uint64(len(m.CurrentDevice))) + i-- + dAtA[i] = 0x12 + } + if len(m.AvailableDevices) > 0 { + for iNdEx := len(m.AvailableDevices) - 1; iNdEx >= 0; iNdEx-- { + i -= len(m.AvailableDevices[iNdEx]) + copy(dAtA[i:], m.AvailableDevices[iNdEx]) + i = encodeVarint(dAtA, i, uint64(len(m.AvailableDevices[iNdEx]))) + i-- + dAtA[i] = 0xa + } + } + return len(dAtA) - i, nil +} + +func (m *AndroidState) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AndroidState) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *AndroidState) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.IsPowerSaverMode { + i-- + if m.IsPowerSaverMode { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.ThermalState != 0 { + i = encodeVarint(dAtA, i, uint64(m.ThermalState)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + +func (m *AppleState) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *AppleState) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *AppleState) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.IsLowPowerModeEnabled { + i-- + if m.IsLowPowerModeEnabled { + dAtA[i] = 1 + } else { + dAtA[i] = 0 + } + i-- + dAtA[i] = 0x10 + } + if m.ThermalState != 0 { + i = encodeVarint(dAtA, i, uint64(m.ThermalState)) + i-- + dAtA[i] = 0x8 + } + return len(dAtA) - i, nil +} + func encodeVarint(dAtA []byte, offset int, v uint64) int { offset -= sov(v) base := offset @@ -1502,35 +1743,37 @@ func (m *VideoLayer) SizeVT() (n int) { return n } -func (m *Codec) SizeVT() (n int) { +func (m *PublishOption) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.PayloadType != 0 { - n += 1 + sov(uint64(m.PayloadType)) + if m.TrackType != 0 { + n += 1 + sov(uint64(m.TrackType)) } - l = len(m.Name) - if l > 0 { + if m.Codec != nil { + l = m.Codec.SizeVT() n += 1 + l + sov(uint64(l)) } - l = len(m.FmtpLine) - if l > 0 { - n += 1 + l + sov(uint64(l)) + if m.Bitrate != 0 { + n += 1 + sov(uint64(m.Bitrate)) } - if m.ClockRate != 0 { - n += 1 + sov(uint64(m.ClockRate)) + if m.Fps != 0 { + n += 1 + sov(uint64(m.Fps)) } - l = len(m.EncodingParameters) - if l > 0 { + if m.MaxSpatialLayers != 0 { + n += 1 + sov(uint64(m.MaxSpatialLayers)) + } + if m.MaxTemporalLayers != 0 { + n += 1 + sov(uint64(m.MaxTemporalLayers)) + } + if m.VideoDimension != nil { + l = m.VideoDimension.SizeVT() n += 1 + l + sov(uint64(l)) } - if len(m.Feedbacks) > 0 { - for _, s := range m.Feedbacks { - l = len(s) - n += 1 + l + sov(uint64(l)) - } + if m.Id != 0 { + n += 1 + sov(uint64(m.Id)) } if m.unknownFields != nil { n += len(m.unknownFields) @@ -1538,25 +1781,55 @@ func (m *Codec) SizeVT() (n int) { return n } -func (m *ICETrickle) SizeVT() (n int) { +func (m *Codec) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.PeerType != 0 { - n += 1 + sov(uint64(m.PeerType)) - } - l = len(m.IceCandidate) + l = len(m.Name) if l > 0 { n += 1 + l + sov(uint64(l)) } - l = len(m.SessionId) + l = len(m.Fmtp) if l > 0 { n += 1 + l + sov(uint64(l)) } - if m.unknownFields != nil { - n += len(m.unknownFields) + if m.ClockRate != 0 { + n += 1 + sov(uint64(m.ClockRate)) + } + l = len(m.EncodingParameters) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.PayloadType != 0 { + n += 2 + sov(uint64(m.PayloadType)) + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *ICETrickle) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.PeerType != 0 { + n += 1 + sov(uint64(m.PeerType)) + } + l = len(m.IceCandidate) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + l = len(m.SessionId) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.unknownFields != nil { + n += len(m.unknownFields) } return n } @@ -1593,6 +1866,9 @@ func (m *TrackInfo) SizeVT() (n int) { if m.Red { n += 2 } + if m.Muted { + n += 2 + } if m.unknownFields != nil { n += len(m.unknownFields) } @@ -1819,6 +2095,67 @@ func (m *CallGrants) SizeVT() (n int) { return n } +func (m *InputDevices) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if len(m.AvailableDevices) > 0 { + for _, s := range m.AvailableDevices { + l = len(s) + n += 1 + l + sov(uint64(l)) + } + } + l = len(m.CurrentDevice) + if l > 0 { + n += 1 + l + sov(uint64(l)) + } + if m.IsPermitted { + n += 2 + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *AndroidState) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ThermalState != 0 { + n += 1 + sov(uint64(m.ThermalState)) + } + if m.IsPowerSaverMode { + n += 2 + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *AppleState) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.ThermalState != 0 { + n += 1 + sov(uint64(m.ThermalState)) + } + if m.IsLowPowerModeEnabled { + n += 2 + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + func sov(x uint64) (n int) { return (bits.Len64(x|1) + 6) / 7 } @@ -3065,7 +3402,7 @@ func (m *VideoLayer) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *Codec) UnmarshalVT(dAtA []byte) error { +func (m *PublishOption) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3088,17 +3425,17 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: Codec: wiretype end group for non-group") + return fmt.Errorf("proto: PublishOption: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: Codec: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: PublishOption: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { case 1: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PayloadType", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field TrackType", wireType) } - m.PayloadType = 0 + m.TrackType = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3108,16 +3445,16 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PayloadType |= uint32(b&0x7F) << shift + m.TrackType |= TrackType(b&0x7F) << shift if b < 0x80 { break } } case 2: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Codec", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3127,29 +3464,33 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - m.Name = string(dAtA[iNdEx:postIndex]) + if m.Codec == nil { + m.Codec = &Codec{} + } + if err := m.Codec.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex case 3: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field FmtpLine", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Bitrate", wireType) } - var stringLen uint64 + m.Bitrate = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3159,29 +3500,16 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.Bitrate |= int32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLength - } - if postIndex > l { - return io.ErrUnexpectedEOF - } - m.FmtpLine = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex case 4: if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field ClockRate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Fps", wireType) } - m.ClockRate = 0 + m.Fps = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3191,16 +3519,16 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.ClockRate |= uint32(b&0x7F) << shift + m.Fps |= int32(b&0x7F) << shift if b < 0x80 { break } } case 5: - if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field EncodingParameters", wireType) + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxSpatialLayers", wireType) } - var stringLen uint64 + m.MaxSpatialLayers = 0 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3210,29 +3538,35 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + m.MaxSpatialLayers |= int32(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { - return ErrInvalidLength - } - postIndex := iNdEx + intStringLen - if postIndex < 0 { - return ErrInvalidLength + case 6: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field MaxTemporalLayers", wireType) } - if postIndex > l { - return io.ErrUnexpectedEOF + m.MaxTemporalLayers = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.MaxTemporalLayers |= int32(b&0x7F) << shift + if b < 0x80 { + break + } } - m.EncodingParameters = string(dAtA[iNdEx:postIndex]) - iNdEx = postIndex - case 6: + case 7: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field Feedbacks", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field VideoDimension", wireType) } - var stringLen uint64 + var msglen int for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3242,24 +3576,47 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - stringLen |= uint64(b&0x7F) << shift + msglen |= int(b&0x7F) << shift if b < 0x80 { break } } - intStringLen := int(stringLen) - if intStringLen < 0 { + if msglen < 0 { return ErrInvalidLength } - postIndex := iNdEx + intStringLen + postIndex := iNdEx + msglen if postIndex < 0 { return ErrInvalidLength } if postIndex > l { return io.ErrUnexpectedEOF } - m.Feedbacks = append(m.Feedbacks, string(dAtA[iNdEx:postIndex])) + if m.VideoDimension == nil { + m.VideoDimension = &VideoDimension{} + } + if err := m.VideoDimension.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } iNdEx = postIndex + case 8: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Id", wireType) + } + m.Id = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Id |= int32(b&0x7F) << shift + if b < 0x80 { + break + } + } default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -3282,7 +3639,7 @@ func (m *Codec) UnmarshalVT(dAtA []byte) error { } return nil } -func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { +func (m *Codec) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 for iNdEx < l { @@ -3305,17 +3662,17 @@ func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { fieldNum := int32(wire >> 3) wireType := int(wire & 0x7) if wireType == 4 { - return fmt.Errorf("proto: ICETrickle: wiretype end group for non-group") + return fmt.Errorf("proto: Codec: wiretype end group for non-group") } if fieldNum <= 0 { - return fmt.Errorf("proto: ICETrickle: illegal tag %d (wire type %d)", fieldNum, wire) + return fmt.Errorf("proto: Codec: illegal tag %d (wire type %d)", fieldNum, wire) } switch fieldNum { - case 1: - if wireType != 0 { - return fmt.Errorf("proto: wrong wireType = %d for field PeerType", wireType) + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType) } - m.PeerType = 0 + var stringLen uint64 for shift := uint(0); ; shift += 7 { if shift >= 64 { return ErrIntOverflow @@ -3325,14 +3682,27 @@ func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { } b := dAtA[iNdEx] iNdEx++ - m.PeerType |= PeerType(b&0x7F) << shift + stringLen |= uint64(b&0x7F) << shift if b < 0x80 { break } } - case 2: + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.Name = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 12: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field IceCandidate", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field Fmtp", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3360,11 +3730,30 @@ func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.IceCandidate = string(dAtA[iNdEx:postIndex]) + m.Fmtp = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - case 3: + case 14: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ClockRate", wireType) + } + m.ClockRate = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ClockRate |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 15: if wireType != 2 { - return fmt.Errorf("proto: wrong wireType = %d for field SessionId", wireType) + return fmt.Errorf("proto: wrong wireType = %d for field EncodingParameters", wireType) } var stringLen uint64 for shift := uint(0); ; shift += 7 { @@ -3392,13 +3781,166 @@ func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { if postIndex > l { return io.ErrUnexpectedEOF } - m.SessionId = string(dAtA[iNdEx:postIndex]) + m.EncodingParameters = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex - default: - iNdEx = preIndex - skippy, err := skip(dAtA[iNdEx:]) - if err != nil { - return err + case 16: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PayloadType", wireType) + } + m.PayloadType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PayloadType |= uint32(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *ICETrickle) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: ICETrickle: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: ICETrickle: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field PeerType", wireType) + } + m.PeerType = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.PeerType |= PeerType(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field IceCandidate", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.IceCandidate = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field SessionId", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.SessionId = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err } if (skippy < 0) || (iNdEx+skippy) < 0 { return ErrInvalidLength @@ -3622,6 +4164,26 @@ func (m *TrackInfo) UnmarshalVT(dAtA []byte) error { } } m.Red = bool(v != 0) + case 10: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Muted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.Muted = bool(v != 0) default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:]) @@ -4926,6 +5488,321 @@ func (m *CallGrants) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *InputDevices) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: InputDevices: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: InputDevices: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AvailableDevices", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.AvailableDevices = append(m.AvailableDevices, string(dAtA[iNdEx:postIndex])) + iNdEx = postIndex + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field CurrentDevice", wireType) + } + var stringLen uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + stringLen |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + intStringLen := int(stringLen) + if intStringLen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + intStringLen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.CurrentDevice = string(dAtA[iNdEx:postIndex]) + iNdEx = postIndex + case 3: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsPermitted", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsPermitted = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AndroidState) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AndroidState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AndroidState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ThermalState", wireType) + } + m.ThermalState = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ThermalState |= AndroidThermalState(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsPowerSaverMode", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsPowerSaverMode = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *AppleState) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: AppleState: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: AppleState: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field ThermalState", wireType) + } + m.ThermalState = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.ThermalState |= AppleThermalState(b&0x7F) << shift + if b < 0x80 { + break + } + } + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field IsLowPowerModeEnabled", wireType) + } + var v int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + v |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + m.IsLowPowerModeEnabled = bool(v != 0) + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func skip(dAtA []byte) (n int, err error) { l := len(dAtA) iNdEx := 0 diff --git a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.pb.go b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.pb.go index b8da7f154a2..8b84848e567 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.pb.go @@ -209,23 +209,167 @@ func (x *StopNoiseCancellationResponse) GetError() *models.Error { return nil } +type Reconnection struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + TimeSeconds float32 `protobuf:"fixed32,1,opt,name=time_seconds,json=timeSeconds,proto3" json:"time_seconds,omitempty"` + Strategy models.WebsocketReconnectStrategy `protobuf:"varint,2,opt,name=strategy,proto3,enum=stream.video.sfu.models.WebsocketReconnectStrategy" json:"strategy,omitempty"` +} + +func (x *Reconnection) Reset() { + *x = Reconnection{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Reconnection) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Reconnection) ProtoMessage() {} + +func (x *Reconnection) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Reconnection.ProtoReflect.Descriptor instead. +func (*Reconnection) Descriptor() ([]byte, []int) { + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{4} +} + +func (x *Reconnection) GetTimeSeconds() float32 { + if x != nil { + return x.TimeSeconds + } + return 0 +} + +func (x *Reconnection) GetStrategy() models.WebsocketReconnectStrategy { + if x != nil { + return x.Strategy + } + return models.WebsocketReconnectStrategy(0) +} + +type Telemetry struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Data: + // + // *Telemetry_ConnectionTimeSeconds + // *Telemetry_Reconnection + Data isTelemetry_Data `protobuf_oneof:"data"` +} + +func (x *Telemetry) Reset() { + *x = Telemetry{} + if protoimpl.UnsafeEnabled { + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Telemetry) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Telemetry) ProtoMessage() {} + +func (x *Telemetry) ProtoReflect() protoreflect.Message { + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Telemetry.ProtoReflect.Descriptor instead. +func (*Telemetry) Descriptor() ([]byte, []int) { + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{5} +} + +func (m *Telemetry) GetData() isTelemetry_Data { + if m != nil { + return m.Data + } + return nil +} + +func (x *Telemetry) GetConnectionTimeSeconds() float32 { + if x, ok := x.GetData().(*Telemetry_ConnectionTimeSeconds); ok { + return x.ConnectionTimeSeconds + } + return 0 +} + +func (x *Telemetry) GetReconnection() *Reconnection { + if x, ok := x.GetData().(*Telemetry_Reconnection); ok { + return x.Reconnection + } + return nil +} + +type isTelemetry_Data interface { + isTelemetry_Data() +} + +type Telemetry_ConnectionTimeSeconds struct { + ConnectionTimeSeconds float32 `protobuf:"fixed32,1,opt,name=connection_time_seconds,json=connectionTimeSeconds,proto3,oneof"` +} + +type Telemetry_Reconnection struct { + Reconnection *Reconnection `protobuf:"bytes,2,opt,name=reconnection,proto3,oneof"` +} + +func (*Telemetry_ConnectionTimeSeconds) isTelemetry_Data() {} + +func (*Telemetry_Reconnection) isTelemetry_Data() {} + type SendStatsRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` - SubscriberStats string `protobuf:"bytes,2,opt,name=subscriber_stats,json=subscriberStats,proto3" json:"subscriber_stats,omitempty"` - PublisherStats string `protobuf:"bytes,3,opt,name=publisher_stats,json=publisherStats,proto3" json:"publisher_stats,omitempty"` - WebrtcVersion string `protobuf:"bytes,4,opt,name=webrtc_version,json=webrtcVersion,proto3" json:"webrtc_version,omitempty"` - Sdk string `protobuf:"bytes,5,opt,name=sdk,proto3" json:"sdk,omitempty"` - SdkVersion string `protobuf:"bytes,6,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` + SessionId string `protobuf:"bytes,1,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + SubscriberStats string `protobuf:"bytes,2,opt,name=subscriber_stats,json=subscriberStats,proto3" json:"subscriber_stats,omitempty"` + PublisherStats string `protobuf:"bytes,3,opt,name=publisher_stats,json=publisherStats,proto3" json:"publisher_stats,omitempty"` + WebrtcVersion string `protobuf:"bytes,4,opt,name=webrtc_version,json=webrtcVersion,proto3" json:"webrtc_version,omitempty"` + Sdk string `protobuf:"bytes,5,opt,name=sdk,proto3" json:"sdk,omitempty"` + SdkVersion string `protobuf:"bytes,6,opt,name=sdk_version,json=sdkVersion,proto3" json:"sdk_version,omitempty"` + AudioDevices *models.InputDevices `protobuf:"bytes,7,opt,name=audio_devices,json=audioDevices,proto3" json:"audio_devices,omitempty"` + VideoDevices *models.InputDevices `protobuf:"bytes,8,opt,name=video_devices,json=videoDevices,proto3" json:"video_devices,omitempty"` + // Types that are assignable to DeviceState: + // + // *SendStatsRequest_Android + // *SendStatsRequest_Apple + DeviceState isSendStatsRequest_DeviceState `protobuf_oneof:"device_state"` + Telemetry *Telemetry `protobuf:"bytes,11,opt,name=telemetry,proto3" json:"telemetry,omitempty"` } func (x *SendStatsRequest) Reset() { *x = SendStatsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[4] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -238,7 +382,7 @@ func (x *SendStatsRequest) String() string { func (*SendStatsRequest) ProtoMessage() {} func (x *SendStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[4] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -251,7 +395,7 @@ func (x *SendStatsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendStatsRequest.ProtoReflect.Descriptor instead. func (*SendStatsRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{4} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{6} } func (x *SendStatsRequest) GetSessionId() string { @@ -296,6 +440,64 @@ func (x *SendStatsRequest) GetSdkVersion() string { return "" } +func (x *SendStatsRequest) GetAudioDevices() *models.InputDevices { + if x != nil { + return x.AudioDevices + } + return nil +} + +func (x *SendStatsRequest) GetVideoDevices() *models.InputDevices { + if x != nil { + return x.VideoDevices + } + return nil +} + +func (m *SendStatsRequest) GetDeviceState() isSendStatsRequest_DeviceState { + if m != nil { + return m.DeviceState + } + return nil +} + +func (x *SendStatsRequest) GetAndroid() *models.AndroidState { + if x, ok := x.GetDeviceState().(*SendStatsRequest_Android); ok { + return x.Android + } + return nil +} + +func (x *SendStatsRequest) GetApple() *models.AppleState { + if x, ok := x.GetDeviceState().(*SendStatsRequest_Apple); ok { + return x.Apple + } + return nil +} + +func (x *SendStatsRequest) GetTelemetry() *Telemetry { + if x != nil { + return x.Telemetry + } + return nil +} + +type isSendStatsRequest_DeviceState interface { + isSendStatsRequest_DeviceState() +} + +type SendStatsRequest_Android struct { + Android *models.AndroidState `protobuf:"bytes,9,opt,name=android,proto3,oneof"` +} + +type SendStatsRequest_Apple struct { + Apple *models.AppleState `protobuf:"bytes,10,opt,name=apple,proto3,oneof"` +} + +func (*SendStatsRequest_Android) isSendStatsRequest_DeviceState() {} + +func (*SendStatsRequest_Apple) isSendStatsRequest_DeviceState() {} + type SendStatsResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -307,7 +509,7 @@ type SendStatsResponse struct { func (x *SendStatsResponse) Reset() { *x = SendStatsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[5] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -320,7 +522,7 @@ func (x *SendStatsResponse) String() string { func (*SendStatsResponse) ProtoMessage() {} func (x *SendStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[5] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -333,7 +535,7 @@ func (x *SendStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendStatsResponse.ProtoReflect.Descriptor instead. func (*SendStatsResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{5} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{7} } func (x *SendStatsResponse) GetError() *models.Error { @@ -355,7 +557,7 @@ type ICERestartRequest struct { func (x *ICERestartRequest) Reset() { *x = ICERestartRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[6] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -368,7 +570,7 @@ func (x *ICERestartRequest) String() string { func (*ICERestartRequest) ProtoMessage() {} func (x *ICERestartRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[6] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -381,7 +583,7 @@ func (x *ICERestartRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ICERestartRequest.ProtoReflect.Descriptor instead. func (*ICERestartRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{6} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{8} } func (x *ICERestartRequest) GetSessionId() string { @@ -409,7 +611,7 @@ type ICERestartResponse struct { func (x *ICERestartResponse) Reset() { *x = ICERestartResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[7] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -422,7 +624,7 @@ func (x *ICERestartResponse) String() string { func (*ICERestartResponse) ProtoMessage() {} func (x *ICERestartResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[7] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -435,7 +637,7 @@ func (x *ICERestartResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ICERestartResponse.ProtoReflect.Descriptor instead. func (*ICERestartResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{7} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{9} } func (x *ICERestartResponse) GetError() *models.Error { @@ -457,7 +659,7 @@ type UpdateMuteStatesRequest struct { func (x *UpdateMuteStatesRequest) Reset() { *x = UpdateMuteStatesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[8] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -470,7 +672,7 @@ func (x *UpdateMuteStatesRequest) String() string { func (*UpdateMuteStatesRequest) ProtoMessage() {} func (x *UpdateMuteStatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[8] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[10] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -483,7 +685,7 @@ func (x *UpdateMuteStatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateMuteStatesRequest.ProtoReflect.Descriptor instead. func (*UpdateMuteStatesRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{8} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{10} } func (x *UpdateMuteStatesRequest) GetSessionId() string { @@ -511,7 +713,7 @@ type UpdateMuteStatesResponse struct { func (x *UpdateMuteStatesResponse) Reset() { *x = UpdateMuteStatesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[9] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -524,7 +726,7 @@ func (x *UpdateMuteStatesResponse) String() string { func (*UpdateMuteStatesResponse) ProtoMessage() {} func (x *UpdateMuteStatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[9] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[11] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -537,7 +739,7 @@ func (x *UpdateMuteStatesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateMuteStatesResponse.ProtoReflect.Descriptor instead. func (*UpdateMuteStatesResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{9} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{11} } func (x *UpdateMuteStatesResponse) GetError() *models.Error { @@ -559,7 +761,7 @@ type TrackMuteState struct { func (x *TrackMuteState) Reset() { *x = TrackMuteState{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[10] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -572,7 +774,7 @@ func (x *TrackMuteState) String() string { func (*TrackMuteState) ProtoMessage() {} func (x *TrackMuteState) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[10] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[12] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -585,7 +787,7 @@ func (x *TrackMuteState) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackMuteState.ProtoReflect.Descriptor instead. func (*TrackMuteState) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{10} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{12} } func (x *TrackMuteState) GetTrackType() models.TrackType { @@ -613,7 +815,7 @@ type AudioMuteChanged struct { func (x *AudioMuteChanged) Reset() { *x = AudioMuteChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[11] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -626,7 +828,7 @@ func (x *AudioMuteChanged) String() string { func (*AudioMuteChanged) ProtoMessage() {} func (x *AudioMuteChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[11] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[13] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -639,7 +841,7 @@ func (x *AudioMuteChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use AudioMuteChanged.ProtoReflect.Descriptor instead. func (*AudioMuteChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{11} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{13} } func (x *AudioMuteChanged) GetMuted() bool { @@ -660,7 +862,7 @@ type VideoMuteChanged struct { func (x *VideoMuteChanged) Reset() { *x = VideoMuteChanged{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[12] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -673,7 +875,7 @@ func (x *VideoMuteChanged) String() string { func (*VideoMuteChanged) ProtoMessage() {} func (x *VideoMuteChanged) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[12] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[14] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -686,7 +888,7 @@ func (x *VideoMuteChanged) ProtoReflect() protoreflect.Message { // Deprecated: Use VideoMuteChanged.ProtoReflect.Descriptor instead. func (*VideoMuteChanged) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{12} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{14} } func (x *VideoMuteChanged) GetMuted() bool { @@ -708,7 +910,7 @@ type UpdateSubscriptionsRequest struct { func (x *UpdateSubscriptionsRequest) Reset() { *x = UpdateSubscriptionsRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[13] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -721,7 +923,7 @@ func (x *UpdateSubscriptionsRequest) String() string { func (*UpdateSubscriptionsRequest) ProtoMessage() {} func (x *UpdateSubscriptionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[13] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[15] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -734,7 +936,7 @@ func (x *UpdateSubscriptionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSubscriptionsRequest.ProtoReflect.Descriptor instead. func (*UpdateSubscriptionsRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{13} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{15} } func (x *UpdateSubscriptionsRequest) GetSessionId() string { @@ -762,7 +964,7 @@ type UpdateSubscriptionsResponse struct { func (x *UpdateSubscriptionsResponse) Reset() { *x = UpdateSubscriptionsResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[14] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -775,7 +977,7 @@ func (x *UpdateSubscriptionsResponse) String() string { func (*UpdateSubscriptionsResponse) ProtoMessage() {} func (x *UpdateSubscriptionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[14] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[16] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -788,7 +990,7 @@ func (x *UpdateSubscriptionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateSubscriptionsResponse.ProtoReflect.Descriptor instead. func (*UpdateSubscriptionsResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{14} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{16} } func (x *UpdateSubscriptionsResponse) GetError() *models.Error { @@ -812,7 +1014,7 @@ type TrackSubscriptionDetails struct { func (x *TrackSubscriptionDetails) Reset() { *x = TrackSubscriptionDetails{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[15] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -825,7 +1027,7 @@ func (x *TrackSubscriptionDetails) String() string { func (*TrackSubscriptionDetails) ProtoMessage() {} func (x *TrackSubscriptionDetails) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[15] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[17] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -838,7 +1040,7 @@ func (x *TrackSubscriptionDetails) ProtoReflect() protoreflect.Message { // Deprecated: Use TrackSubscriptionDetails.ProtoReflect.Descriptor instead. func (*TrackSubscriptionDetails) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{15} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{17} } func (x *TrackSubscriptionDetails) GetUserId() string { @@ -882,7 +1084,7 @@ type SendAnswerRequest struct { func (x *SendAnswerRequest) Reset() { *x = SendAnswerRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[16] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -895,7 +1097,7 @@ func (x *SendAnswerRequest) String() string { func (*SendAnswerRequest) ProtoMessage() {} func (x *SendAnswerRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[16] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[18] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -908,7 +1110,7 @@ func (x *SendAnswerRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendAnswerRequest.ProtoReflect.Descriptor instead. func (*SendAnswerRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{16} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{18} } func (x *SendAnswerRequest) GetPeerType() models.PeerType { @@ -943,7 +1145,7 @@ type SendAnswerResponse struct { func (x *SendAnswerResponse) Reset() { *x = SendAnswerResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[17] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -956,7 +1158,7 @@ func (x *SendAnswerResponse) String() string { func (*SendAnswerResponse) ProtoMessage() {} func (x *SendAnswerResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[17] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[19] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -969,7 +1171,7 @@ func (x *SendAnswerResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendAnswerResponse.ProtoReflect.Descriptor instead. func (*SendAnswerResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{17} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{19} } func (x *SendAnswerResponse) GetError() *models.Error { @@ -990,7 +1192,7 @@ type ICETrickleResponse struct { func (x *ICETrickleResponse) Reset() { *x = ICETrickleResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[18] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1003,7 +1205,7 @@ func (x *ICETrickleResponse) String() string { func (*ICETrickleResponse) ProtoMessage() {} func (x *ICETrickleResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[18] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[20] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1016,7 +1218,7 @@ func (x *ICETrickleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ICETrickleResponse.ProtoReflect.Descriptor instead. func (*ICETrickleResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{18} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{20} } func (x *ICETrickleResponse) GetError() *models.Error { @@ -1040,7 +1242,7 @@ type SetPublisherRequest struct { func (x *SetPublisherRequest) Reset() { *x = SetPublisherRequest{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[19] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1053,7 +1255,7 @@ func (x *SetPublisherRequest) String() string { func (*SetPublisherRequest) ProtoMessage() {} func (x *SetPublisherRequest) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[19] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[21] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1066,7 +1268,7 @@ func (x *SetPublisherRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPublisherRequest.ProtoReflect.Descriptor instead. func (*SetPublisherRequest) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{19} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{21} } func (x *SetPublisherRequest) GetSdp() string { @@ -1105,7 +1307,7 @@ type SetPublisherResponse struct { func (x *SetPublisherResponse) Reset() { *x = SetPublisherResponse{} if protoimpl.UnsafeEnabled { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[20] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1118,7 +1320,7 @@ func (x *SetPublisherResponse) String() string { func (*SetPublisherResponse) ProtoMessage() {} func (x *SetPublisherResponse) ProtoReflect() protoreflect.Message { - mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[20] + mi := &file_video_sfu_signal_rpc_signal_proto_msgTypes[22] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1131,7 +1333,7 @@ func (x *SetPublisherResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPublisherResponse.ProtoReflect.Descriptor instead. func (*SetPublisherResponse) Descriptor() ([]byte, []int) { - return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{20} + return file_video_sfu_signal_rpc_signal_proto_rawDescGZIP(), []int{22} } func (x *SetPublisherResponse) GetSdp() string { @@ -1189,201 +1391,241 @@ var file_video_sfu_signal_rpc_signal_proto_rawDesc = []byte{ 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, - 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xdf, 0x01, 0x0a, 0x10, 0x53, 0x65, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, + 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x0c, 0x52, 0x65, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x74, 0x69, + 0x6d, 0x65, 0x5f, 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, + 0x52, 0x0b, 0x74, 0x69, 0x6d, 0x65, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x4f, 0x0a, + 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x33, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, + 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x57, 0x65, 0x62, 0x73, 0x6f, 0x63, + 0x6b, 0x65, 0x74, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x53, 0x74, 0x72, 0x61, + 0x74, 0x65, 0x67, 0x79, 0x52, 0x08, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x22, 0x9a, + 0x01, 0x0a, 0x09, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x12, 0x38, 0x0a, 0x17, + 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x5f, + 0x73, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x02, 0x48, 0x00, 0x52, + 0x15, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x53, + 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x73, 0x12, 0x4b, 0x0a, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, + 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0c, 0x72, 0x65, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, + 0x69, 0x6f, 0x6e, 0x42, 0x06, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x22, 0xc9, 0x04, 0x0a, 0x10, + 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, + 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x74, + 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x72, 0x74, 0x63, 0x5f, 0x76, 0x65, + 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x65, 0x62, + 0x72, 0x74, 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, + 0x6b, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, + 0x73, 0x64, 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x4a, 0x0a, + 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, + 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x49, + 0x6e, 0x70, 0x75, 0x74, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x0c, 0x61, 0x75, 0x64, + 0x69, 0x6f, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x4a, 0x0a, 0x0d, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x5f, 0x64, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, + 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x49, 0x6e, 0x70, 0x75, 0x74, + 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x73, 0x52, 0x0c, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x65, + 0x76, 0x69, 0x63, 0x65, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, + 0x2e, 0x41, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, + 0x07, 0x61, 0x6e, 0x64, 0x72, 0x6f, 0x69, 0x64, 0x12, 0x3b, 0x0a, 0x05, 0x61, 0x70, 0x70, 0x6c, + 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, + 0x73, 0x2e, 0x41, 0x70, 0x70, 0x6c, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x05, + 0x61, 0x70, 0x70, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x09, 0x74, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, + 0x72, 0x79, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x2e, 0x54, 0x65, 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x52, 0x09, 0x74, 0x65, + 0x6c, 0x65, 0x6d, 0x65, 0x74, 0x72, 0x79, 0x42, 0x0e, 0x0a, 0x0c, 0x64, 0x65, 0x76, 0x69, 0x63, + 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x22, 0x49, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x72, 0x0a, 0x11, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, + 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x65, + 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x12, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, + 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, + 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, + 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, + 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x29, 0x0a, - 0x10, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, - 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x0a, 0x0f, 0x70, 0x75, 0x62, 0x6c, - 0x69, 0x73, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0e, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x77, 0x65, 0x62, 0x72, 0x74, 0x63, 0x5f, 0x76, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x77, 0x65, 0x62, 0x72, 0x74, - 0x63, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x6b, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x6b, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x64, - 0x6b, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x73, 0x64, 0x6b, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x49, 0x0a, 0x11, 0x53, - 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, - 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x72, 0x0a, 0x11, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, - 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3e, 0x0a, 0x09, 0x70, 0x65, - 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, 0x2e, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, - 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, - 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x22, 0x4a, 0x0a, 0x12, 0x49, 0x43, - 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x48, 0x0a, + 0x0b, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, 0x18, 0x03, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x0a, 0x6d, 0x75, 0x74, + 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x18, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, + 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x69, 0x0a, 0x0e, 0x54, 0x72, 0x61, + 0x63, 0x6b, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x41, 0x0a, 0x0a, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, + 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, + 0x75, 0x74, 0x65, 0x64, 0x22, 0x28, 0x0a, 0x10, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x75, 0x74, + 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x22, 0x28, + 0x0a, 0x10, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x75, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, + 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x22, 0x86, 0x01, 0x0a, 0x1a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, + 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, + 0x73, 0x22, 0x53, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, - 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x48, 0x0a, 0x0b, 0x6d, 0x75, 0x74, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x65, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, - 0x0a, 0x6d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x22, 0x50, 0x0a, 0x18, 0x55, - 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, - 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x69, 0x0a, - 0x0e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x41, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x22, 0x28, 0x0a, 0x10, 0x41, 0x75, 0x64, 0x69, - 0x6f, 0x4d, 0x75, 0x74, 0x65, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, - 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, - 0x65, 0x64, 0x22, 0x28, 0x0a, 0x10, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x75, 0x74, 0x65, 0x43, - 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x6d, 0x75, 0x74, 0x65, 0x64, 0x22, 0x86, 0x01, 0x0a, - 0x1a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x73, - 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x49, 0x0a, 0x06, 0x74, 0x72, - 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x06, 0x74, - 0x72, 0x61, 0x63, 0x6b, 0x73, 0x22, 0x53, 0x0a, 0x1b, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, - 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xdc, 0x01, 0x0a, 0x18, 0x54, - 0x72, 0x61, 0x63, 0x6b, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, - 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, - 0x41, 0x0a, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, - 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x45, 0x0a, 0x09, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, - 0x56, 0x69, 0x64, 0x65, 0x6f, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, - 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x65, - 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, - 0x3e, 0x0a, 0x09, 0x70, 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, - 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, - 0x72, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, - 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x22, 0x4a, 0x0a, 0x12, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, - 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x12, - 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0xdc, 0x01, 0x0a, 0x18, 0x54, 0x72, 0x61, 0x63, 0x6b, + 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x44, 0x65, 0x74, 0x61, + 0x69, 0x6c, 0x73, 0x12, 0x17, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x1d, 0x0a, 0x0a, + 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x41, 0x0a, 0x0a, 0x74, + 0x72, 0x61, 0x63, 0x6b, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, + 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x54, + 0x79, 0x70, 0x65, 0x52, 0x09, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x45, + 0x0a, 0x09, 0x64, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x27, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x56, 0x69, 0x64, 0x65, + 0x6f, 0x44, 0x69, 0x6d, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x09, 0x64, 0x69, 0x6d, 0x65, + 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x22, 0x84, 0x01, 0x0a, 0x11, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, + 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x70, + 0x65, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x21, + 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, + 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x08, 0x70, 0x65, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x64, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x70, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x22, 0x4a, 0x0a, 0x12, + 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, - 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, - 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, - 0x64, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, - 0x64, 0x12, 0x3a, 0x0a, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, - 0x6b, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x22, 0x9e, 0x01, - 0x0a, 0x14, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, - 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x65, 0x5f, 0x72, - 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x63, - 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, - 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, - 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0x9e, - 0x08, 0x0a, 0x0c, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, - 0x6b, 0x0a, 0x0c, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, - 0x2c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, - 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, - 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, + 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x22, 0x4a, 0x0a, 0x12, 0x49, 0x43, 0x45, 0x54, + 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x34, + 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0a, - 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x0a, 0x49, 0x63, 0x65, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, - 0x65, 0x12, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, - 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x49, 0x43, 0x45, 0x54, - 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, - 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, - 0x2e, 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x80, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, - 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x73, 0x74, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, + 0x72, 0x72, 0x6f, 0x72, 0x22, 0x82, 0x01, 0x0a, 0x13, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, + 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, + 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x73, 0x64, 0x70, 0x12, 0x1d, + 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x3a, 0x0a, + 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, + 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x06, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x73, 0x22, 0x9e, 0x01, 0x0a, 0x14, 0x53, 0x65, + 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x64, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x03, 0x73, 0x64, 0x70, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x63, 0x65, 0x5f, 0x72, 0x65, 0x73, 0x74, 0x61, + 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x63, 0x65, 0x52, 0x65, 0x73, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x34, 0x0a, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x45, 0x72, + 0x72, 0x6f, 0x72, 0x52, 0x05, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x32, 0x9e, 0x08, 0x0a, 0x0c, 0x53, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x12, 0x6b, 0x0a, 0x0c, 0x53, + 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, 0x12, 0x2c, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, - 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, - 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x34, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, - 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, - 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, - 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, - 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x65, 0x0a, 0x0a, 0x49, 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2a, 0x2e, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, + 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x74, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x65, 0x72, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x53, 0x65, 0x6e, 0x64, + 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x12, 0x2a, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x6e, + 0x64, 0x41, 0x6e, 0x73, 0x77, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x5e, 0x0a, 0x0a, 0x49, 0x63, 0x65, 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, - 0x72, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x2e, 0x6d, 0x6f, 0x64, 0x65, 0x6c, 0x73, 0x2e, 0x49, 0x43, 0x45, 0x54, 0x72, 0x69, 0x63, 0x6b, + 0x6c, 0x65, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, + 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x49, 0x43, 0x45, + 0x54, 0x72, 0x69, 0x63, 0x6b, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x80, 0x01, 0x0a, 0x13, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, + 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x33, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, + 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, + 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x53, 0x75, 0x62, + 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x77, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, 0x65, + 0x53, 0x74, 0x61, 0x74, 0x65, 0x73, 0x12, 0x30, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, + 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, 0x74, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, + 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, + 0x61, 0x6c, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x75, 0x74, 0x65, 0x53, 0x74, 0x61, + 0x74, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x65, 0x0a, 0x0a, 0x49, + 0x63, 0x65, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x12, 0x2a, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x62, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, - 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, - 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, - 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, - 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x53, - 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x36, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, - 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, - 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, - 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x69, - 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x4e, - 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x12, 0x35, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, - 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, - 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, - 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, - 0x6c, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, - 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x69, 0x42, 0x0b, 0x53, 0x66, 0x75, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x31, 0x50, 0x01, - 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, - 0x66, 0x75, 0x2f, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x70, 0x63, 0xaa, 0x02, 0x1a, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x76, 0x31, 0x2e, - 0x53, 0x66, 0x75, 0x2e, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x49, 0x43, 0x45, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x62, 0x0a, 0x09, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x29, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, + 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x73, 0x74, 0x72, + 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, + 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x89, 0x01, 0x0a, 0x16, 0x53, 0x74, 0x61, 0x72, 0x74, + 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x36, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, + 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x72, + 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x73, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, + 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x72, 0x74, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, + 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x12, 0x86, 0x01, 0x0a, 0x15, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x69, 0x73, 0x65, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x35, 0x2e, 0x73, + 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, + 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, 0x6f, 0x70, 0x4e, 0x6f, 0x69, 0x73, 0x65, + 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x76, 0x69, 0x64, + 0x65, 0x6f, 0x2e, 0x73, 0x66, 0x75, 0x2e, 0x73, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x2e, 0x53, 0x74, + 0x6f, 0x70, 0x4e, 0x6f, 0x69, 0x73, 0x65, 0x43, 0x61, 0x6e, 0x63, 0x65, 0x6c, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x69, 0x42, 0x0b, 0x53, + 0x66, 0x75, 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x56, 0x31, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, + 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x47, 0x65, 0x74, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x2f, 0x73, 0x66, 0x75, 0x2f, 0x73, + 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x70, 0x63, 0xaa, 0x02, 0x1a, 0x53, 0x74, 0x72, 0x65, + 0x61, 0x6d, 0x2e, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x66, 0x75, 0x2e, + 0x53, 0x69, 0x67, 0x6e, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1398,77 +1640,90 @@ func file_video_sfu_signal_rpc_signal_proto_rawDescGZIP() []byte { return file_video_sfu_signal_rpc_signal_proto_rawDescData } -var file_video_sfu_signal_rpc_signal_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_video_sfu_signal_rpc_signal_proto_msgTypes = make([]protoimpl.MessageInfo, 23) var file_video_sfu_signal_rpc_signal_proto_goTypes = []interface{}{ (*StartNoiseCancellationRequest)(nil), // 0: stream.video.sfu.signal.StartNoiseCancellationRequest (*StartNoiseCancellationResponse)(nil), // 1: stream.video.sfu.signal.StartNoiseCancellationResponse (*StopNoiseCancellationRequest)(nil), // 2: stream.video.sfu.signal.StopNoiseCancellationRequest (*StopNoiseCancellationResponse)(nil), // 3: stream.video.sfu.signal.StopNoiseCancellationResponse - (*SendStatsRequest)(nil), // 4: stream.video.sfu.signal.SendStatsRequest - (*SendStatsResponse)(nil), // 5: stream.video.sfu.signal.SendStatsResponse - (*ICERestartRequest)(nil), // 6: stream.video.sfu.signal.ICERestartRequest - (*ICERestartResponse)(nil), // 7: stream.video.sfu.signal.ICERestartResponse - (*UpdateMuteStatesRequest)(nil), // 8: stream.video.sfu.signal.UpdateMuteStatesRequest - (*UpdateMuteStatesResponse)(nil), // 9: stream.video.sfu.signal.UpdateMuteStatesResponse - (*TrackMuteState)(nil), // 10: stream.video.sfu.signal.TrackMuteState - (*AudioMuteChanged)(nil), // 11: stream.video.sfu.signal.AudioMuteChanged - (*VideoMuteChanged)(nil), // 12: stream.video.sfu.signal.VideoMuteChanged - (*UpdateSubscriptionsRequest)(nil), // 13: stream.video.sfu.signal.UpdateSubscriptionsRequest - (*UpdateSubscriptionsResponse)(nil), // 14: stream.video.sfu.signal.UpdateSubscriptionsResponse - (*TrackSubscriptionDetails)(nil), // 15: stream.video.sfu.signal.TrackSubscriptionDetails - (*SendAnswerRequest)(nil), // 16: stream.video.sfu.signal.SendAnswerRequest - (*SendAnswerResponse)(nil), // 17: stream.video.sfu.signal.SendAnswerResponse - (*ICETrickleResponse)(nil), // 18: stream.video.sfu.signal.ICETrickleResponse - (*SetPublisherRequest)(nil), // 19: stream.video.sfu.signal.SetPublisherRequest - (*SetPublisherResponse)(nil), // 20: stream.video.sfu.signal.SetPublisherResponse - (*models.Error)(nil), // 21: stream.video.sfu.models.Error - (models.PeerType)(0), // 22: stream.video.sfu.models.PeerType - (models.TrackType)(0), // 23: stream.video.sfu.models.TrackType - (*models.VideoDimension)(nil), // 24: stream.video.sfu.models.VideoDimension - (*models.TrackInfo)(nil), // 25: stream.video.sfu.models.TrackInfo - (*models.ICETrickle)(nil), // 26: stream.video.sfu.models.ICETrickle + (*Reconnection)(nil), // 4: stream.video.sfu.signal.Reconnection + (*Telemetry)(nil), // 5: stream.video.sfu.signal.Telemetry + (*SendStatsRequest)(nil), // 6: stream.video.sfu.signal.SendStatsRequest + (*SendStatsResponse)(nil), // 7: stream.video.sfu.signal.SendStatsResponse + (*ICERestartRequest)(nil), // 8: stream.video.sfu.signal.ICERestartRequest + (*ICERestartResponse)(nil), // 9: stream.video.sfu.signal.ICERestartResponse + (*UpdateMuteStatesRequest)(nil), // 10: stream.video.sfu.signal.UpdateMuteStatesRequest + (*UpdateMuteStatesResponse)(nil), // 11: stream.video.sfu.signal.UpdateMuteStatesResponse + (*TrackMuteState)(nil), // 12: stream.video.sfu.signal.TrackMuteState + (*AudioMuteChanged)(nil), // 13: stream.video.sfu.signal.AudioMuteChanged + (*VideoMuteChanged)(nil), // 14: stream.video.sfu.signal.VideoMuteChanged + (*UpdateSubscriptionsRequest)(nil), // 15: stream.video.sfu.signal.UpdateSubscriptionsRequest + (*UpdateSubscriptionsResponse)(nil), // 16: stream.video.sfu.signal.UpdateSubscriptionsResponse + (*TrackSubscriptionDetails)(nil), // 17: stream.video.sfu.signal.TrackSubscriptionDetails + (*SendAnswerRequest)(nil), // 18: stream.video.sfu.signal.SendAnswerRequest + (*SendAnswerResponse)(nil), // 19: stream.video.sfu.signal.SendAnswerResponse + (*ICETrickleResponse)(nil), // 20: stream.video.sfu.signal.ICETrickleResponse + (*SetPublisherRequest)(nil), // 21: stream.video.sfu.signal.SetPublisherRequest + (*SetPublisherResponse)(nil), // 22: stream.video.sfu.signal.SetPublisherResponse + (*models.Error)(nil), // 23: stream.video.sfu.models.Error + (models.WebsocketReconnectStrategy)(0), // 24: stream.video.sfu.models.WebsocketReconnectStrategy + (*models.InputDevices)(nil), // 25: stream.video.sfu.models.InputDevices + (*models.AndroidState)(nil), // 26: stream.video.sfu.models.AndroidState + (*models.AppleState)(nil), // 27: stream.video.sfu.models.AppleState + (models.PeerType)(0), // 28: stream.video.sfu.models.PeerType + (models.TrackType)(0), // 29: stream.video.sfu.models.TrackType + (*models.VideoDimension)(nil), // 30: stream.video.sfu.models.VideoDimension + (*models.TrackInfo)(nil), // 31: stream.video.sfu.models.TrackInfo + (*models.ICETrickle)(nil), // 32: stream.video.sfu.models.ICETrickle } var file_video_sfu_signal_rpc_signal_proto_depIdxs = []int32{ - 21, // 0: stream.video.sfu.signal.StartNoiseCancellationResponse.error:type_name -> stream.video.sfu.models.Error - 21, // 1: stream.video.sfu.signal.StopNoiseCancellationResponse.error:type_name -> stream.video.sfu.models.Error - 21, // 2: stream.video.sfu.signal.SendStatsResponse.error:type_name -> stream.video.sfu.models.Error - 22, // 3: stream.video.sfu.signal.ICERestartRequest.peer_type:type_name -> stream.video.sfu.models.PeerType - 21, // 4: stream.video.sfu.signal.ICERestartResponse.error:type_name -> stream.video.sfu.models.Error - 10, // 5: stream.video.sfu.signal.UpdateMuteStatesRequest.mute_states:type_name -> stream.video.sfu.signal.TrackMuteState - 21, // 6: stream.video.sfu.signal.UpdateMuteStatesResponse.error:type_name -> stream.video.sfu.models.Error - 23, // 7: stream.video.sfu.signal.TrackMuteState.track_type:type_name -> stream.video.sfu.models.TrackType - 15, // 8: stream.video.sfu.signal.UpdateSubscriptionsRequest.tracks:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails - 21, // 9: stream.video.sfu.signal.UpdateSubscriptionsResponse.error:type_name -> stream.video.sfu.models.Error - 23, // 10: stream.video.sfu.signal.TrackSubscriptionDetails.track_type:type_name -> stream.video.sfu.models.TrackType - 24, // 11: stream.video.sfu.signal.TrackSubscriptionDetails.dimension:type_name -> stream.video.sfu.models.VideoDimension - 22, // 12: stream.video.sfu.signal.SendAnswerRequest.peer_type:type_name -> stream.video.sfu.models.PeerType - 21, // 13: stream.video.sfu.signal.SendAnswerResponse.error:type_name -> stream.video.sfu.models.Error - 21, // 14: stream.video.sfu.signal.ICETrickleResponse.error:type_name -> stream.video.sfu.models.Error - 25, // 15: stream.video.sfu.signal.SetPublisherRequest.tracks:type_name -> stream.video.sfu.models.TrackInfo - 21, // 16: stream.video.sfu.signal.SetPublisherResponse.error:type_name -> stream.video.sfu.models.Error - 19, // 17: stream.video.sfu.signal.SignalServer.SetPublisher:input_type -> stream.video.sfu.signal.SetPublisherRequest - 16, // 18: stream.video.sfu.signal.SignalServer.SendAnswer:input_type -> stream.video.sfu.signal.SendAnswerRequest - 26, // 19: stream.video.sfu.signal.SignalServer.IceTrickle:input_type -> stream.video.sfu.models.ICETrickle - 13, // 20: stream.video.sfu.signal.SignalServer.UpdateSubscriptions:input_type -> stream.video.sfu.signal.UpdateSubscriptionsRequest - 8, // 21: stream.video.sfu.signal.SignalServer.UpdateMuteStates:input_type -> stream.video.sfu.signal.UpdateMuteStatesRequest - 6, // 22: stream.video.sfu.signal.SignalServer.IceRestart:input_type -> stream.video.sfu.signal.ICERestartRequest - 4, // 23: stream.video.sfu.signal.SignalServer.SendStats:input_type -> stream.video.sfu.signal.SendStatsRequest - 0, // 24: stream.video.sfu.signal.SignalServer.StartNoiseCancellation:input_type -> stream.video.sfu.signal.StartNoiseCancellationRequest - 2, // 25: stream.video.sfu.signal.SignalServer.StopNoiseCancellation:input_type -> stream.video.sfu.signal.StopNoiseCancellationRequest - 20, // 26: stream.video.sfu.signal.SignalServer.SetPublisher:output_type -> stream.video.sfu.signal.SetPublisherResponse - 17, // 27: stream.video.sfu.signal.SignalServer.SendAnswer:output_type -> stream.video.sfu.signal.SendAnswerResponse - 18, // 28: stream.video.sfu.signal.SignalServer.IceTrickle:output_type -> stream.video.sfu.signal.ICETrickleResponse - 14, // 29: stream.video.sfu.signal.SignalServer.UpdateSubscriptions:output_type -> stream.video.sfu.signal.UpdateSubscriptionsResponse - 9, // 30: stream.video.sfu.signal.SignalServer.UpdateMuteStates:output_type -> stream.video.sfu.signal.UpdateMuteStatesResponse - 7, // 31: stream.video.sfu.signal.SignalServer.IceRestart:output_type -> stream.video.sfu.signal.ICERestartResponse - 5, // 32: stream.video.sfu.signal.SignalServer.SendStats:output_type -> stream.video.sfu.signal.SendStatsResponse - 1, // 33: stream.video.sfu.signal.SignalServer.StartNoiseCancellation:output_type -> stream.video.sfu.signal.StartNoiseCancellationResponse - 3, // 34: stream.video.sfu.signal.SignalServer.StopNoiseCancellation:output_type -> stream.video.sfu.signal.StopNoiseCancellationResponse - 26, // [26:35] is the sub-list for method output_type - 17, // [17:26] is the sub-list for method input_type - 17, // [17:17] is the sub-list for extension type_name - 17, // [17:17] is the sub-list for extension extendee - 0, // [0:17] is the sub-list for field type_name + 23, // 0: stream.video.sfu.signal.StartNoiseCancellationResponse.error:type_name -> stream.video.sfu.models.Error + 23, // 1: stream.video.sfu.signal.StopNoiseCancellationResponse.error:type_name -> stream.video.sfu.models.Error + 24, // 2: stream.video.sfu.signal.Reconnection.strategy:type_name -> stream.video.sfu.models.WebsocketReconnectStrategy + 4, // 3: stream.video.sfu.signal.Telemetry.reconnection:type_name -> stream.video.sfu.signal.Reconnection + 25, // 4: stream.video.sfu.signal.SendStatsRequest.audio_devices:type_name -> stream.video.sfu.models.InputDevices + 25, // 5: stream.video.sfu.signal.SendStatsRequest.video_devices:type_name -> stream.video.sfu.models.InputDevices + 26, // 6: stream.video.sfu.signal.SendStatsRequest.android:type_name -> stream.video.sfu.models.AndroidState + 27, // 7: stream.video.sfu.signal.SendStatsRequest.apple:type_name -> stream.video.sfu.models.AppleState + 5, // 8: stream.video.sfu.signal.SendStatsRequest.telemetry:type_name -> stream.video.sfu.signal.Telemetry + 23, // 9: stream.video.sfu.signal.SendStatsResponse.error:type_name -> stream.video.sfu.models.Error + 28, // 10: stream.video.sfu.signal.ICERestartRequest.peer_type:type_name -> stream.video.sfu.models.PeerType + 23, // 11: stream.video.sfu.signal.ICERestartResponse.error:type_name -> stream.video.sfu.models.Error + 12, // 12: stream.video.sfu.signal.UpdateMuteStatesRequest.mute_states:type_name -> stream.video.sfu.signal.TrackMuteState + 23, // 13: stream.video.sfu.signal.UpdateMuteStatesResponse.error:type_name -> stream.video.sfu.models.Error + 29, // 14: stream.video.sfu.signal.TrackMuteState.track_type:type_name -> stream.video.sfu.models.TrackType + 17, // 15: stream.video.sfu.signal.UpdateSubscriptionsRequest.tracks:type_name -> stream.video.sfu.signal.TrackSubscriptionDetails + 23, // 16: stream.video.sfu.signal.UpdateSubscriptionsResponse.error:type_name -> stream.video.sfu.models.Error + 29, // 17: stream.video.sfu.signal.TrackSubscriptionDetails.track_type:type_name -> stream.video.sfu.models.TrackType + 30, // 18: stream.video.sfu.signal.TrackSubscriptionDetails.dimension:type_name -> stream.video.sfu.models.VideoDimension + 28, // 19: stream.video.sfu.signal.SendAnswerRequest.peer_type:type_name -> stream.video.sfu.models.PeerType + 23, // 20: stream.video.sfu.signal.SendAnswerResponse.error:type_name -> stream.video.sfu.models.Error + 23, // 21: stream.video.sfu.signal.ICETrickleResponse.error:type_name -> stream.video.sfu.models.Error + 31, // 22: stream.video.sfu.signal.SetPublisherRequest.tracks:type_name -> stream.video.sfu.models.TrackInfo + 23, // 23: stream.video.sfu.signal.SetPublisherResponse.error:type_name -> stream.video.sfu.models.Error + 21, // 24: stream.video.sfu.signal.SignalServer.SetPublisher:input_type -> stream.video.sfu.signal.SetPublisherRequest + 18, // 25: stream.video.sfu.signal.SignalServer.SendAnswer:input_type -> stream.video.sfu.signal.SendAnswerRequest + 32, // 26: stream.video.sfu.signal.SignalServer.IceTrickle:input_type -> stream.video.sfu.models.ICETrickle + 15, // 27: stream.video.sfu.signal.SignalServer.UpdateSubscriptions:input_type -> stream.video.sfu.signal.UpdateSubscriptionsRequest + 10, // 28: stream.video.sfu.signal.SignalServer.UpdateMuteStates:input_type -> stream.video.sfu.signal.UpdateMuteStatesRequest + 8, // 29: stream.video.sfu.signal.SignalServer.IceRestart:input_type -> stream.video.sfu.signal.ICERestartRequest + 6, // 30: stream.video.sfu.signal.SignalServer.SendStats:input_type -> stream.video.sfu.signal.SendStatsRequest + 0, // 31: stream.video.sfu.signal.SignalServer.StartNoiseCancellation:input_type -> stream.video.sfu.signal.StartNoiseCancellationRequest + 2, // 32: stream.video.sfu.signal.SignalServer.StopNoiseCancellation:input_type -> stream.video.sfu.signal.StopNoiseCancellationRequest + 22, // 33: stream.video.sfu.signal.SignalServer.SetPublisher:output_type -> stream.video.sfu.signal.SetPublisherResponse + 19, // 34: stream.video.sfu.signal.SignalServer.SendAnswer:output_type -> stream.video.sfu.signal.SendAnswerResponse + 20, // 35: stream.video.sfu.signal.SignalServer.IceTrickle:output_type -> stream.video.sfu.signal.ICETrickleResponse + 16, // 36: stream.video.sfu.signal.SignalServer.UpdateSubscriptions:output_type -> stream.video.sfu.signal.UpdateSubscriptionsResponse + 11, // 37: stream.video.sfu.signal.SignalServer.UpdateMuteStates:output_type -> stream.video.sfu.signal.UpdateMuteStatesResponse + 9, // 38: stream.video.sfu.signal.SignalServer.IceRestart:output_type -> stream.video.sfu.signal.ICERestartResponse + 7, // 39: stream.video.sfu.signal.SignalServer.SendStats:output_type -> stream.video.sfu.signal.SendStatsResponse + 1, // 40: stream.video.sfu.signal.SignalServer.StartNoiseCancellation:output_type -> stream.video.sfu.signal.StartNoiseCancellationResponse + 3, // 41: stream.video.sfu.signal.SignalServer.StopNoiseCancellation:output_type -> stream.video.sfu.signal.StopNoiseCancellationResponse + 33, // [33:42] is the sub-list for method output_type + 24, // [24:33] is the sub-list for method input_type + 24, // [24:24] is the sub-list for extension type_name + 24, // [24:24] is the sub-list for extension extendee + 0, // [0:24] is the sub-list for field type_name } func init() { file_video_sfu_signal_rpc_signal_proto_init() } @@ -1526,7 +1781,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendStatsRequest); i { + switch v := v.(*Reconnection); i { case 0: return &v.state case 1: @@ -1538,7 +1793,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendStatsResponse); i { + switch v := v.(*Telemetry); i { case 0: return &v.state case 1: @@ -1550,7 +1805,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICERestartRequest); i { + switch v := v.(*SendStatsRequest); i { case 0: return &v.state case 1: @@ -1562,7 +1817,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICERestartResponse); i { + switch v := v.(*SendStatsResponse); i { case 0: return &v.state case 1: @@ -1574,7 +1829,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateMuteStatesRequest); i { + switch v := v.(*ICERestartRequest); i { case 0: return &v.state case 1: @@ -1586,7 +1841,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateMuteStatesResponse); i { + switch v := v.(*ICERestartResponse); i { case 0: return &v.state case 1: @@ -1598,7 +1853,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackMuteState); i { + switch v := v.(*UpdateMuteStatesRequest); i { case 0: return &v.state case 1: @@ -1610,7 +1865,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AudioMuteChanged); i { + switch v := v.(*UpdateMuteStatesResponse); i { case 0: return &v.state case 1: @@ -1622,7 +1877,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VideoMuteChanged); i { + switch v := v.(*TrackMuteState); i { case 0: return &v.state case 1: @@ -1634,7 +1889,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSubscriptionsRequest); i { + switch v := v.(*AudioMuteChanged); i { case 0: return &v.state case 1: @@ -1646,7 +1901,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UpdateSubscriptionsResponse); i { + switch v := v.(*VideoMuteChanged); i { case 0: return &v.state case 1: @@ -1658,7 +1913,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TrackSubscriptionDetails); i { + switch v := v.(*UpdateSubscriptionsRequest); i { case 0: return &v.state case 1: @@ -1670,7 +1925,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendAnswerRequest); i { + switch v := v.(*UpdateSubscriptionsResponse); i { case 0: return &v.state case 1: @@ -1682,7 +1937,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SendAnswerResponse); i { + switch v := v.(*TrackSubscriptionDetails); i { case 0: return &v.state case 1: @@ -1694,7 +1949,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ICETrickleResponse); i { + switch v := v.(*SendAnswerRequest); i { case 0: return &v.state case 1: @@ -1706,7 +1961,7 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SetPublisherRequest); i { + switch v := v.(*SendAnswerResponse); i { case 0: return &v.state case 1: @@ -1718,6 +1973,30 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } file_video_sfu_signal_rpc_signal_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ICETrickleResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_video_sfu_signal_rpc_signal_proto_msgTypes[21].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SetPublisherRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_video_sfu_signal_rpc_signal_proto_msgTypes[22].Exporter = func(v interface{}, i int) interface{} { switch v := v.(*SetPublisherResponse); i { case 0: return &v.state @@ -1730,13 +2009,21 @@ func file_video_sfu_signal_rpc_signal_proto_init() { } } } + file_video_sfu_signal_rpc_signal_proto_msgTypes[5].OneofWrappers = []interface{}{ + (*Telemetry_ConnectionTimeSeconds)(nil), + (*Telemetry_Reconnection)(nil), + } + file_video_sfu_signal_rpc_signal_proto_msgTypes[6].OneofWrappers = []interface{}{ + (*SendStatsRequest_Android)(nil), + (*SendStatsRequest_Apple)(nil), + } type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_video_sfu_signal_rpc_signal_proto_rawDesc, NumEnums: 0, - NumMessages: 21, + NumMessages: 23, NumExtensions: 0, NumServices: 1, }, diff --git a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.proto b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.proto index 1a769aa748b..172e0366177 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.proto +++ b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.proto @@ -51,6 +51,18 @@ message StopNoiseCancellationResponse { models.Error error = 1; } +message Reconnection { + float time_seconds = 1; + models.WebsocketReconnectStrategy strategy = 2; +} + +message Telemetry { + oneof data { + float connection_time_seconds = 1; + Reconnection reconnection = 2; + } +} + message SendStatsRequest { string session_id = 1; string subscriber_stats = 2; @@ -58,6 +70,15 @@ message SendStatsRequest { string webrtc_version = 4; string sdk = 5; string sdk_version = 6; + + models.InputDevices audio_devices = 7; + models.InputDevices video_devices = 8; + oneof device_state { + models.AndroidState android = 9; + models.AppleState apple = 10; + } + + Telemetry telemetry = 11; } message SendStatsResponse { diff --git a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.twirp.go b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.twirp.go index 279b032bace..e2f0cc6ea2b 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.twirp.go +++ b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal.twirp.go @@ -3327,64 +3327,78 @@ func callClientError(ctx context.Context, h *twirp.ClientHooks, err twirp.Error) } var twirpFileDescriptor0 = []byte{ - // 941 bytes of a gzipped FileDescriptorProto - 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0x6f, 0x6f, 0xdb, 0x44, - 0x18, 0xd7, 0x35, 0x6b, 0x69, 0x9e, 0x8c, 0x2e, 0xbb, 0x0d, 0x1a, 0x19, 0xba, 0x31, 0x23, 0xb4, - 0xae, 0x80, 0x43, 0xbb, 0x31, 0x24, 0x10, 0x93, 0xba, 0xae, 0x82, 0x4c, 0x02, 0x55, 0x76, 0xd7, - 0x17, 0xbc, 0x20, 0x72, 0xec, 0x27, 0xed, 0x29, 0x89, 0x6d, 0xee, 0xce, 0xad, 0xf6, 0x0e, 0x4d, - 0x68, 0x12, 0x5f, 0xa2, 0x1f, 0x80, 0xcf, 0x84, 0xc4, 0x57, 0x41, 0xbe, 0xbb, 0xfc, 0x73, 0xed, - 0x34, 0x69, 0x5e, 0xe5, 0x72, 0x7e, 0xfe, 0xfc, 0x9e, 0xdf, 0xef, 0xb9, 0xc7, 0x67, 0x78, 0x74, - 0xce, 0x42, 0x8c, 0x9b, 0xa2, 0x9b, 0x36, 0x05, 0x3b, 0x8d, 0xfc, 0x7e, 0x9b, 0x27, 0x81, 0x59, - 0x3a, 0x09, 0x8f, 0x65, 0x4c, 0x37, 0x85, 0xe4, 0xe8, 0x0f, 0x1c, 0x65, 0xe9, 0x88, 0x6e, 0xea, - 0xe8, 0xc7, 0xd6, 0xd6, 0xd8, 0x77, 0x10, 0x87, 0xd8, 0x17, 0xe6, 0x47, 0xfb, 0xd9, 0x2f, 0x60, - 0xcb, 0x93, 0x3e, 0x97, 0xbf, 0xc6, 0x4c, 0xe0, 0x81, 0x1f, 0x05, 0xd8, 0xef, 0xfb, 0x92, 0xc5, - 0x91, 0x8b, 0x7f, 0xa4, 0x28, 0x24, 0xdd, 0x02, 0x10, 0x28, 0x04, 0x8b, 0xa3, 0x36, 0x0b, 0x1b, - 0xe4, 0x33, 0xb2, 0x5d, 0x75, 0xab, 0x66, 0xa7, 0x15, 0xda, 0x27, 0xf0, 0xa0, 0xcc, 0x5f, 0x24, - 0x71, 0x24, 0x90, 0x3e, 0x83, 0x55, 0xe4, 0x3c, 0xe6, 0xca, 0xb7, 0xb6, 0xf7, 0xc0, 0xb9, 0x82, - 0xd4, 0x00, 0x3a, 0xcc, 0xac, 0x5c, 0x6d, 0x6c, 0xff, 0x08, 0x9f, 0x7a, 0x32, 0x4e, 0x6e, 0x0a, - 0xeb, 0x4d, 0x56, 0x56, 0xa1, 0xfb, 0x52, 0xa8, 0xfe, 0x23, 0x50, 0xf7, 0x30, 0x0a, 0x3d, 0xe9, - 0x4b, 0x31, 0x1f, 0x14, 0xfa, 0x04, 0xea, 0x22, 0xed, 0x88, 0x80, 0xb3, 0x0e, 0xf2, 0xb6, 0xc8, - 0x3c, 0x1b, 0x2b, 0xca, 0xe8, 0xce, 0x78, 0x5f, 0x05, 0xa4, 0x8f, 0xe1, 0x4e, 0x92, 0x76, 0xfa, - 0x4c, 0x9c, 0x8d, 0x2c, 0x2b, 0xca, 0x72, 0x63, 0xb4, 0xad, 0x0d, 0xbf, 0x80, 0x8d, 0x0b, 0xec, - 0x70, 0x19, 0xb4, 0xcf, 0x91, 0x67, 0x79, 0x1a, 0xb7, 0x94, 0xdd, 0x87, 0x7a, 0xf7, 0x44, 0x6f, - 0xd2, 0x3a, 0x54, 0x44, 0xd8, 0x6b, 0xac, 0xaa, 0x67, 0xd9, 0x92, 0x3e, 0x84, 0x9a, 0x08, 0x7b, - 0x23, 0xaf, 0x35, 0xf5, 0x04, 0x44, 0xd8, 0x33, 0x2e, 0x76, 0x0b, 0xee, 0x4e, 0x14, 0xb8, 0x14, - 0x59, 0x1c, 0xee, 0xb6, 0x0e, 0x0e, 0x5d, 0x14, 0x59, 0x7f, 0xcc, 0x49, 0xd6, 0x0b, 0xa8, 0x26, - 0x88, 0xbc, 0x2d, 0xdf, 0x26, 0xa8, 0x58, 0xda, 0xd8, 0x7b, 0x54, 0x9a, 0xed, 0x08, 0x91, 0x1f, - 0xbf, 0x4d, 0xd0, 0x5d, 0x4f, 0xcc, 0xca, 0x7e, 0x0d, 0x74, 0x32, 0xe7, 0x52, 0xf8, 0xdf, 0x11, - 0xd8, 0x7c, 0x93, 0x84, 0xbe, 0xc4, 0x5f, 0x52, 0x89, 0x19, 0x23, 0x38, 0xaf, 0xe6, 0x3f, 0x43, - 0x6d, 0x90, 0x4a, 0x54, 0x1a, 0x62, 0x26, 0x62, 0x65, 0xbb, 0xb6, 0xf7, 0xd8, 0x29, 0x39, 0xa3, - 0xce, 0x31, 0xf7, 0x83, 0xde, 0x28, 0x89, 0x0b, 0x83, 0x51, 0x3e, 0xfb, 0x08, 0x1a, 0x57, 0x31, - 0xe4, 0xcb, 0xba, 0xb5, 0x48, 0x59, 0x0c, 0x36, 0xa6, 0xf3, 0xd1, 0x7d, 0x00, 0x99, 0xed, 0x68, - 0xd6, 0x89, 0x62, 0xdd, 0x2e, 0x0d, 0xa6, 0x9c, 0x15, 0xed, 0x55, 0x39, 0x5c, 0xd2, 0xfb, 0xb0, - 0x9a, 0x81, 0x0e, 0x95, 0x66, 0xeb, 0xae, 0xfe, 0x63, 0x6f, 0x43, 0x7d, 0x3f, 0x0d, 0x59, 0x9c, - 0xa5, 0x3a, 0x38, 0xf3, 0xa3, 0x53, 0x0c, 0xc7, 0x96, 0x24, 0x67, 0x79, 0x92, 0x25, 0x2a, 0xb4, - 0x9c, 0x8a, 0xf9, 0x9e, 0x80, 0xa5, 0x19, 0xf1, 0xf4, 0xe9, 0x49, 0xb2, 0x73, 0x5d, 0x22, 0xcc, - 0x4a, 0x5e, 0x98, 0x16, 0xac, 0x29, 0xd0, 0x43, 0x4d, 0x76, 0x67, 0x6b, 0x32, 0x99, 0xe2, 0x15, - 0x4a, 0x9f, 0xf5, 0x85, 0x6b, 0x02, 0xd8, 0x1e, 0x7c, 0x52, 0x88, 0x63, 0x29, 0x71, 0xfe, 0x25, - 0xd0, 0x28, 0xcb, 0x4c, 0x37, 0xe1, 0x83, 0x54, 0x20, 0x1f, 0x77, 0xdc, 0x5a, 0xf6, 0xb7, 0x15, - 0x5e, 0x57, 0xf4, 0xb4, 0xbe, 0x95, 0x9b, 0xe8, 0x7b, 0x08, 0xd5, 0x90, 0x0d, 0x30, 0x1a, 0xcd, - 0x9a, 0xc2, 0x76, 0x36, 0x11, 0x94, 0x92, 0xaf, 0x86, 0xe6, 0xee, 0xd8, 0xd3, 0xfe, 0x8b, 0xe8, - 0xf1, 0xb2, 0x1f, 0x89, 0x0b, 0xe4, 0x43, 0xcd, 0xa6, 0x0e, 0x3d, 0x59, 0xf8, 0xd0, 0xeb, 0x31, - 0x97, 0x98, 0xba, 0xb3, 0x65, 0x8e, 0x90, 0x4a, 0xfe, 0xed, 0xf0, 0x1a, 0xe8, 0x24, 0x8a, 0xa5, - 0x14, 0xd3, 0x13, 0xe7, 0x98, 0xb3, 0xa0, 0xd7, 0xc7, 0x25, 0x63, 0xbd, 0x23, 0x70, 0xcf, 0x43, - 0x79, 0x34, 0x1c, 0xf6, 0x43, 0x82, 0x4c, 0x81, 0xa4, 0xac, 0xc0, 0x2b, 0x8a, 0x7f, 0x9f, 0x6b, - 0xf3, 0x6b, 0xd4, 0x6e, 0x45, 0xdd, 0x78, 0xd4, 0xd7, 0x97, 0x04, 0xee, 0x4f, 0x83, 0x30, 0x35, - 0x2d, 0x8c, 0xe2, 0x21, 0xd4, 0x58, 0x80, 0x6d, 0xae, 0xa7, 0xb1, 0x92, 0x61, 0xdd, 0x05, 0x16, - 0xa0, 0x99, 0xcf, 0x37, 0x63, 0x69, 0xef, 0x72, 0x1d, 0x6e, 0x7b, 0xea, 0x90, 0x7a, 0xc8, 0xcf, - 0x91, 0xd3, 0x1e, 0xdc, 0x9e, 0x04, 0x4c, 0xbf, 0x2a, 0x3d, 0xd4, 0x05, 0xe4, 0x5a, 0x5f, 0xcf, - 0x69, 0x6d, 0x58, 0x40, 0x80, 0x71, 0xef, 0xd0, 0x9d, 0x19, 0xce, 0xb9, 0x36, 0xb7, 0xbe, 0x9c, - 0xcb, 0xd6, 0xa4, 0xf9, 0x1d, 0xa0, 0x15, 0xa0, 0x69, 0x2b, 0xfa, 0x79, 0x29, 0x33, 0xe3, 0xde, - 0x9b, 0x11, 0xbf, 0xa0, 0x41, 0xff, 0x24, 0x70, 0xaf, 0x60, 0x7c, 0xd1, 0xa7, 0xa5, 0x41, 0xca, - 0x87, 0xae, 0xf5, 0x6c, 0x31, 0x27, 0x03, 0xe1, 0x02, 0xea, 0xf9, 0x57, 0x1b, 0xfd, 0xe6, 0x9a, - 0x48, 0x57, 0xde, 0xc4, 0xd6, 0xee, 0x02, 0x1e, 0x63, 0x09, 0x5b, 0xe3, 0x26, 0xdc, 0x99, 0x45, - 0xdb, 0xf4, 0xed, 0x65, 0x36, 0xc5, 0xf9, 0x5b, 0x47, 0x07, 0xaa, 0xa3, 0xab, 0x14, 0x7d, 0x32, - 0x53, 0xfc, 0xc9, 0xfb, 0xa4, 0xb5, 0x33, 0x8f, 0xa9, 0xc9, 0xf1, 0x37, 0x81, 0x8f, 0x8b, 0xef, - 0xdf, 0xf4, 0x79, 0x79, 0x98, 0x59, 0x17, 0x7e, 0xeb, 0xbb, 0x85, 0xfd, 0x0c, 0x96, 0xf7, 0x04, - 0x3e, 0x2a, 0xbc, 0x74, 0xd3, 0x6f, 0x67, 0x84, 0x2c, 0xbf, 0xe3, 0x5b, 0xcf, 0x17, 0x75, 0xd3, - 0x40, 0x5e, 0xb2, 0x97, 0x35, 0xaf, 0x9b, 0xea, 0x11, 0x71, 0xb2, 0x7b, 0x44, 0x7e, 0xfb, 0xe1, - 0x94, 0xc9, 0xb3, 0xb4, 0xe3, 0x04, 0xf1, 0xa0, 0xf9, 0x13, 0x4a, 0x4f, 0x45, 0x6d, 0xaa, 0x0f, - 0xa0, 0x20, 0xee, 0xeb, 0x45, 0x27, 0xed, 0x36, 0x8b, 0x3e, 0xb3, 0xfe, 0x59, 0xb1, 0xb4, 0xbd, - 0x7e, 0xad, 0x39, 0xe7, 0xbb, 0x8e, 0xd7, 0x4d, 0x1d, 0x1d, 0xbd, 0xb3, 0xa6, 0x7c, 0x9f, 0xfe, - 0x1f, 0x00, 0x00, 0xff, 0xff, 0x9b, 0x77, 0xa7, 0x3b, 0xa2, 0x0d, 0x00, 0x00, + // 1164 bytes of a gzipped FileDescriptorProto + 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x57, 0xdd, 0x6e, 0x1b, 0x45, + 0x14, 0xce, 0xe6, 0xd7, 0x3e, 0x76, 0xd3, 0x74, 0xda, 0x12, 0xcb, 0x90, 0xb6, 0x59, 0x54, 0x35, + 0x0d, 0xe0, 0x90, 0xa4, 0x14, 0x44, 0x45, 0x45, 0xfe, 0x44, 0x1c, 0x04, 0x44, 0xbb, 0x69, 0x90, + 0xb8, 0xc0, 0x5a, 0xef, 0x1e, 0x27, 0x2b, 0xdb, 0xbb, 0xcb, 0xcc, 0x6c, 0xa2, 0xdc, 0xa1, 0x0a, + 0x55, 0xe2, 0x15, 0xb8, 0xe8, 0x03, 0xf0, 0x26, 0xbc, 0x03, 0x0f, 0x53, 0xcd, 0x8f, 0x77, 0x6d, + 0xc7, 0xeb, 0xd8, 0xf1, 0x95, 0xc7, 0xb3, 0xe7, 0xfb, 0xce, 0x99, 0xf3, 0x9d, 0x39, 0x33, 0x03, + 0xab, 0x17, 0xbe, 0x87, 0xe1, 0x06, 0x6b, 0xc4, 0x1b, 0xcc, 0x3f, 0x0b, 0x9c, 0x56, 0x8d, 0x46, + 0xae, 0x1e, 0x56, 0x22, 0x1a, 0xf2, 0x90, 0x2c, 0x33, 0x4e, 0xd1, 0x69, 0x57, 0xa4, 0x65, 0x85, + 0x35, 0xe2, 0x8a, 0xfa, 0x5c, 0x5e, 0x49, 0xb1, 0xed, 0xd0, 0xc3, 0x16, 0xd3, 0x3f, 0x0a, 0x67, + 0xbe, 0x86, 0x15, 0x9b, 0x3b, 0x94, 0xff, 0x1c, 0xfa, 0x0c, 0xf7, 0x9c, 0xc0, 0xc5, 0x56, 0xcb, + 0xe1, 0x7e, 0x18, 0x58, 0xf8, 0x47, 0x8c, 0x8c, 0x93, 0x15, 0x00, 0x86, 0x8c, 0xf9, 0x61, 0x50, + 0xf3, 0xbd, 0x92, 0xf1, 0xc4, 0x58, 0xcb, 0x5b, 0x79, 0x3d, 0x53, 0xf5, 0xcc, 0x53, 0x78, 0x94, + 0x85, 0x67, 0x51, 0x18, 0x30, 0x24, 0x2f, 0x60, 0x0e, 0x29, 0x0d, 0xa9, 0xc4, 0x16, 0xb6, 0x1e, + 0x55, 0xae, 0x45, 0xaa, 0x03, 0x3a, 0x10, 0x56, 0x96, 0x32, 0x36, 0xbf, 0x83, 0x4f, 0x6c, 0x1e, + 0x46, 0xb7, 0x0d, 0xeb, 0x8d, 0x58, 0xd6, 0x40, 0xf8, 0x44, 0x51, 0xbd, 0x35, 0xa0, 0x68, 0xa1, + 0x1b, 0x06, 0x01, 0xba, 0x82, 0x8e, 0xac, 0x42, 0x91, 0xfb, 0x6d, 0xac, 0x31, 0x31, 0xe9, 0x31, + 0xc9, 0x36, 0x6d, 0x15, 0xc4, 0x9c, 0xad, 0xa6, 0xc8, 0x2f, 0x90, 0x63, 0x9c, 0x3a, 0x1c, 0xcf, + 0xae, 0x4a, 0xd3, 0x4f, 0x8c, 0xb5, 0xc5, 0xad, 0xed, 0x4c, 0x67, 0xbf, 0x62, 0x9d, 0x85, 0x6e, + 0x13, 0x79, 0xe2, 0xc4, 0xd6, 0x50, 0x2b, 0x21, 0x31, 0xff, 0x31, 0x20, 0x7f, 0x82, 0x2d, 0x6c, + 0x23, 0xa7, 0x57, 0xe4, 0x1b, 0x58, 0x4e, 0xe3, 0xa9, 0x5d, 0x0f, 0xe6, 0x70, 0xca, 0x7a, 0x98, + 0x1a, 0x9c, 0x74, 0x05, 0xf6, 0x23, 0x14, 0x69, 0xd7, 0x5a, 0x64, 0x70, 0x85, 0xad, 0xa7, 0x95, + 0x8c, 0x4a, 0xaa, 0x74, 0x2f, 0xfc, 0x70, 0xca, 0xea, 0x01, 0xef, 0xce, 0xc3, 0xac, 0xe7, 0x70, + 0xc7, 0xfc, 0x6f, 0x16, 0x96, 0x6c, 0x0c, 0x3c, 0x9b, 0x3b, 0x9c, 0x8d, 0x26, 0x16, 0x79, 0x0e, + 0x4b, 0x2c, 0xae, 0x33, 0x97, 0xfa, 0x75, 0xa4, 0x35, 0x26, 0x90, 0x32, 0x98, 0xbc, 0x75, 0x37, + 0x9d, 0x97, 0x84, 0xe4, 0x19, 0xdc, 0x8d, 0xe2, 0x7a, 0xcb, 0x67, 0xe7, 0x89, 0xe5, 0x8c, 0xb4, + 0x5c, 0x4c, 0xa6, 0x95, 0xe1, 0x53, 0x58, 0xbc, 0xc4, 0x3a, 0xe5, 0x6e, 0xed, 0x02, 0xa9, 0xf0, + 0x53, 0x9a, 0x95, 0x76, 0x77, 0xd4, 0xec, 0xa9, 0x9a, 0x24, 0x4b, 0x30, 0xc3, 0xbc, 0x66, 0x69, + 0x4e, 0x7e, 0x13, 0x43, 0xf2, 0x18, 0x0a, 0xcc, 0x6b, 0x26, 0xa8, 0x79, 0xf9, 0x05, 0x98, 0xd7, + 0xec, 0x40, 0x8e, 0xe0, 0x8e, 0x13, 0x7b, 0x7e, 0x58, 0xf3, 0xf0, 0xc2, 0x77, 0x91, 0x95, 0x16, + 0xb2, 0xf2, 0xa6, 0x45, 0xad, 0x06, 0x51, 0xcc, 0xf7, 0x95, 0xb1, 0x55, 0x94, 0x58, 0xfd, 0x4f, + 0x70, 0x49, 0xf3, 0x84, 0x2b, 0x37, 0x16, 0x97, 0xfc, 0xdc, 0xe1, 0xda, 0x81, 0x05, 0x27, 0xf0, + 0x68, 0xe8, 0x7b, 0xa5, 0xfc, 0x0d, 0x2c, 0x3b, 0xca, 0x4e, 0x64, 0x0a, 0x0f, 0xa7, 0xac, 0x0e, + 0x8e, 0xbc, 0x82, 0x39, 0x27, 0x8a, 0x5a, 0x58, 0x02, 0x49, 0xf0, 0x69, 0x36, 0x81, 0xb0, 0xea, + 0xc0, 0x15, 0x86, 0x7c, 0x0f, 0x79, 0xde, 0xa9, 0xca, 0x52, 0x41, 0x12, 0x98, 0x99, 0xb5, 0x94, + 0xd4, 0xaf, 0x95, 0x82, 0x76, 0x17, 0xa1, 0xa8, 0xf2, 0x20, 0x95, 0x45, 0xb3, 0x0a, 0xf7, 0xba, + 0x4a, 0x69, 0xa2, 0x8d, 0x4b, 0xe1, 0x5e, 0x75, 0xef, 0xc0, 0x42, 0x26, 0x7a, 0xd5, 0x88, 0x65, + 0xf9, 0x1a, 0xf2, 0x11, 0x22, 0xad, 0xf1, 0xab, 0x08, 0xf5, 0xce, 0x5d, 0xcd, 0xf4, 0x76, 0x8c, + 0x48, 0x4f, 0xae, 0x22, 0xb4, 0x72, 0x91, 0x1e, 0x99, 0x47, 0x40, 0xba, 0x7d, 0x4e, 0xda, 0x78, + 0x96, 0xdf, 0x44, 0x9e, 0xc3, 0xf1, 0xa7, 0x98, 0xab, 0xcc, 0x8f, 0xba, 0xbb, 0x0e, 0xa1, 0xd0, + 0x8e, 0xb9, 0xce, 0xa9, 0xd8, 0x2e, 0x33, 0x6b, 0x85, 0xad, 0x67, 0xd9, 0xca, 0x50, 0xc7, 0x6d, + 0x26, 0x4e, 0x2c, 0x68, 0x27, 0xfe, 0xcc, 0x63, 0x28, 0x5d, 0x8f, 0xa1, 0x7f, 0x59, 0xb3, 0xe3, + 0x2c, 0xcb, 0x87, 0xc5, 0x5e, 0x7f, 0x64, 0x07, 0x80, 0x8b, 0x19, 0x95, 0x75, 0x43, 0x66, 0xdd, + 0xcc, 0x24, 0x93, 0x60, 0x99, 0xf6, 0x3c, 0xef, 0x0c, 0xc9, 0x03, 0x98, 0x13, 0x41, 0x7b, 0x52, + 0xb3, 0x9c, 0xa5, 0xfe, 0x98, 0x6b, 0xb0, 0xb4, 0x23, 0xb6, 0x9e, 0x70, 0xb5, 0x77, 0xee, 0x04, + 0x67, 0xe8, 0xa5, 0x96, 0x46, 0x9f, 0xe5, 0xa9, 0x70, 0x34, 0xd0, 0xb2, 0x87, 0xf3, 0x9d, 0x01, + 0x65, 0x95, 0x11, 0x5b, 0xf5, 0xa9, 0x48, 0xf4, 0xc2, 0x0c, 0x61, 0xa6, 0xfb, 0x85, 0xa9, 0xc2, + 0xbc, 0x0c, 0xba, 0xa3, 0xc9, 0xe6, 0x70, 0x4d, 0xba, 0x5d, 0xec, 0x23, 0x77, 0xfc, 0x16, 0xb3, + 0x34, 0x81, 0x69, 0xc3, 0xc7, 0x03, 0xe3, 0x98, 0x48, 0x9c, 0xff, 0x0d, 0x28, 0x65, 0x79, 0x26, + 0xcb, 0xb0, 0x10, 0x33, 0xa4, 0x69, 0xc5, 0xcd, 0x8b, 0xbf, 0x55, 0xef, 0xa6, 0x45, 0xf7, 0xea, + 0x3b, 0x73, 0x1b, 0x7d, 0x0f, 0x20, 0xef, 0xf9, 0x6d, 0x0c, 0x92, 0xae, 0x3e, 0xb0, 0x9c, 0x35, + 0x83, 0x54, 0x72, 0xbf, 0x63, 0x6e, 0xa5, 0x48, 0xf3, 0x2f, 0x43, 0xb5, 0x97, 0x9d, 0x80, 0x5d, + 0x22, 0xed, 0x68, 0xd6, 0xb3, 0xe9, 0x8d, 0xb1, 0x37, 0xbd, 0x3a, 0x50, 0x22, 0xbd, 0x6e, 0x31, + 0xec, 0x4b, 0xc8, 0x4c, 0xff, 0x4d, 0xe5, 0x08, 0x48, 0x77, 0x14, 0x13, 0x29, 0xa6, 0x3a, 0xce, + 0x09, 0xf5, 0xdd, 0x66, 0x0b, 0x27, 0xe4, 0x7a, 0x6b, 0xc0, 0x7d, 0x1b, 0xf9, 0x71, 0xe7, 0x58, + 0xed, 0x24, 0x48, 0x2f, 0xd0, 0xc8, 0x5a, 0xe0, 0x35, 0xc5, 0xbf, 0xed, 0x2b, 0xf3, 0x1b, 0xd4, + 0xae, 0x06, 0x8d, 0x30, 0xa9, 0xeb, 0xf7, 0x06, 0x3c, 0xe8, 0x0d, 0x42, 0xaf, 0x69, 0xec, 0x28, + 0x1e, 0x43, 0x41, 0x1c, 0x2c, 0x54, 0x75, 0x63, 0x29, 0x43, 0xce, 0x02, 0xdf, 0x45, 0xdd, 0x9f, + 0x6f, 0x97, 0xa5, 0xad, 0xf7, 0x39, 0x28, 0xda, 0x72, 0x93, 0xda, 0x48, 0x2f, 0x90, 0x92, 0x26, + 0x14, 0xbb, 0x03, 0x26, 0x9f, 0x67, 0x6e, 0xea, 0x01, 0xc9, 0x2d, 0x7f, 0x31, 0xa2, 0xb5, 0xce, + 0x02, 0x02, 0xa4, 0xb5, 0x43, 0xd6, 0x87, 0x80, 0xfb, 0xca, 0xbc, 0xfc, 0xd9, 0x48, 0xb6, 0xda, + 0xcd, 0xef, 0x00, 0x55, 0x17, 0x75, 0x59, 0x91, 0xec, 0x5b, 0x41, 0x5a, 0x7b, 0x43, 0xf8, 0x07, + 0x14, 0xe8, 0x9f, 0x06, 0xdc, 0x1f, 0xd0, 0xbe, 0xc8, 0x76, 0x26, 0x49, 0x76, 0xd3, 0x2d, 0xbf, + 0x18, 0x0f, 0xa4, 0x43, 0xb8, 0x84, 0xa5, 0xfe, 0xa3, 0x8d, 0x7c, 0x79, 0x03, 0xd3, 0xb5, 0x93, + 0xb8, 0xbc, 0x39, 0x06, 0x22, 0x95, 0xb0, 0x9a, 0x16, 0xe1, 0xfa, 0xb0, 0xb4, 0xf5, 0xde, 0x5e, + 0x86, 0xa7, 0xb8, 0xff, 0xd6, 0x51, 0x87, 0x7c, 0x72, 0x95, 0x22, 0xcf, 0x87, 0x8a, 0xdf, 0x7d, + 0x73, 0x2f, 0xaf, 0x8f, 0x62, 0xaa, 0x7d, 0xfc, 0x6d, 0xc0, 0x47, 0x83, 0xdf, 0x82, 0xe4, 0x65, + 0x36, 0xcd, 0xb0, 0xc7, 0x67, 0xf9, 0xeb, 0xb1, 0x71, 0x3a, 0x96, 0x77, 0x06, 0x3c, 0x1c, 0xf8, + 0x00, 0x24, 0x5f, 0x0d, 0xa1, 0xcc, 0x7e, 0x6f, 0x96, 0x5f, 0x8e, 0x0b, 0x53, 0x81, 0xec, 0xfa, + 0xbb, 0x05, 0xbb, 0x11, 0xab, 0x16, 0x71, 0xba, 0x79, 0x6c, 0xfc, 0xf6, 0xea, 0xcc, 0xe7, 0xe7, + 0x71, 0xbd, 0xe2, 0x86, 0xed, 0x8d, 0x1f, 0x50, 0xbc, 0xef, 0xd0, 0x69, 0x6f, 0xc8, 0xc7, 0xb8, + 0x1b, 0xb6, 0xd4, 0xa0, 0x1e, 0x37, 0x36, 0x06, 0x3d, 0xf9, 0xff, 0x9d, 0x2e, 0x2b, 0x7b, 0x75, + 0xac, 0x55, 0x2e, 0x36, 0x2b, 0x76, 0x23, 0xae, 0x28, 0xf6, 0xfa, 0xbc, 0xc4, 0x6e, 0x7f, 0x08, + 0x00, 0x00, 0xff, 0xff, 0xb3, 0x85, 0x60, 0x5d, 0x2e, 0x10, 0x00, 0x00, } diff --git a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal_vtproto.pb.go b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal_vtproto.pb.go index 46e5ea54aeb..69c58b00d1b 100644 --- a/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal_vtproto.pb.go +++ b/stream-video-android-core/src/main/proto/video/sfu/signal_rpc/signal_vtproto.pb.go @@ -5,11 +5,13 @@ package signal_rpc import ( + binary "encoding/binary" fmt "fmt" models "github.com/GetStream/protocol/protobuf/video/sfu/models" proto "google.golang.org/protobuf/proto" protoimpl "google.golang.org/protobuf/runtime/protoimpl" io "io" + math "math" bits "math/bits" ) @@ -210,6 +212,127 @@ func (m *StopNoiseCancellationResponse) MarshalToSizedBufferVT(dAtA []byte) (int return len(dAtA) - i, nil } +func (m *Reconnection) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Reconnection) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *Reconnection) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if m.Strategy != 0 { + i = encodeVarint(dAtA, i, uint64(m.Strategy)) + i-- + dAtA[i] = 0x10 + } + if m.TimeSeconds != 0 { + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.TimeSeconds)))) + i-- + dAtA[i] = 0xd + } + return len(dAtA) - i, nil +} + +func (m *Telemetry) MarshalVT() (dAtA []byte, err error) { + if m == nil { + return nil, nil + } + size := m.SizeVT() + dAtA = make([]byte, size) + n, err := m.MarshalToSizedBufferVT(dAtA[:size]) + if err != nil { + return nil, err + } + return dAtA[:n], nil +} + +func (m *Telemetry) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *Telemetry) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + if m == nil { + return 0, nil + } + i := len(dAtA) + _ = i + var l int + _ = l + if m.unknownFields != nil { + i -= len(m.unknownFields) + copy(dAtA[i:], m.unknownFields) + } + if vtmsg, ok := m.Data.(interface { + MarshalToVT([]byte) (int, error) + SizeVT() int + }); ok { + { + size := vtmsg.SizeVT() + i -= size + if _, err := vtmsg.MarshalToVT(dAtA[i:]); err != nil { + return 0, err + } + } + } + return len(dAtA) - i, nil +} + +func (m *Telemetry_ConnectionTimeSeconds) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *Telemetry_ConnectionTimeSeconds) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + i -= 4 + binary.LittleEndian.PutUint32(dAtA[i:], uint32(math.Float32bits(float32(m.ConnectionTimeSeconds)))) + i-- + dAtA[i] = 0xd + return len(dAtA) - i, nil +} +func (m *Telemetry_Reconnection) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *Telemetry_Reconnection) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Reconnection != nil { + size, err := m.Reconnection.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x12 + } + return len(dAtA) - i, nil +} func (m *SendStatsRequest) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -240,6 +363,72 @@ func (m *SendStatsRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if vtmsg, ok := m.DeviceState.(interface { + MarshalToVT([]byte) (int, error) + SizeVT() int + }); ok { + { + size := vtmsg.SizeVT() + i -= size + if _, err := vtmsg.MarshalToVT(dAtA[i:]); err != nil { + return 0, err + } + } + } + if m.Telemetry != nil { + size, err := m.Telemetry.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + i-- + dAtA[i] = 0x5a + } + if m.VideoDevices != nil { + if marshalto, ok := interface{}(m.VideoDevices).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.VideoDevices) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x42 + } + if m.AudioDevices != nil { + if marshalto, ok := interface{}(m.AudioDevices).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.AudioDevices) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x3a + } if len(m.SdkVersion) > 0 { i -= len(m.SdkVersion) copy(dAtA[i:], m.SdkVersion) @@ -285,6 +474,68 @@ func (m *SendStatsRequest) MarshalToSizedBufferVT(dAtA []byte) (int, error) { return len(dAtA) - i, nil } +func (m *SendStatsRequest_Android) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *SendStatsRequest_Android) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Android != nil { + if marshalto, ok := interface{}(m.Android).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Android) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x4a + } + return len(dAtA) - i, nil +} +func (m *SendStatsRequest_Apple) MarshalToVT(dAtA []byte) (int, error) { + size := m.SizeVT() + return m.MarshalToSizedBufferVT(dAtA[:size]) +} + +func (m *SendStatsRequest_Apple) MarshalToSizedBufferVT(dAtA []byte) (int, error) { + i := len(dAtA) + if m.Apple != nil { + if marshalto, ok := interface{}(m.Apple).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := marshalto.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = encodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.Apple) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = encodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x52 + } + return len(dAtA) - i, nil +} func (m *SendStatsResponse) MarshalVT() (dAtA []byte, err error) { if m == nil { return nil, nil @@ -1261,6 +1512,60 @@ func (m *StopNoiseCancellationResponse) SizeVT() (n int) { return n } +func (m *Reconnection) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.TimeSeconds != 0 { + n += 5 + } + if m.Strategy != 0 { + n += 1 + sov(uint64(m.Strategy)) + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *Telemetry) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if vtmsg, ok := m.Data.(interface{ SizeVT() int }); ok { + n += vtmsg.SizeVT() + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *Telemetry_ConnectionTimeSeconds) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + n += 5 + return n +} +func (m *Telemetry_Reconnection) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Reconnection != nil { + l = m.Reconnection.SizeVT() + n += 1 + l + sov(uint64(l)) + } + return n +} func (m *SendStatsRequest) SizeVT() (n int) { if m == nil { return 0 @@ -1291,42 +1596,105 @@ func (m *SendStatsRequest) SizeVT() (n int) { if l > 0 { n += 1 + l + sov(uint64(l)) } + if m.AudioDevices != nil { + if size, ok := interface{}(m.AudioDevices).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.AudioDevices) + } + n += 1 + l + sov(uint64(l)) + } + if m.VideoDevices != nil { + if size, ok := interface{}(m.VideoDevices).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.VideoDevices) + } + n += 1 + l + sov(uint64(l)) + } + if vtmsg, ok := m.DeviceState.(interface{ SizeVT() int }); ok { + n += vtmsg.SizeVT() + } + if m.Telemetry != nil { + l = m.Telemetry.SizeVT() + n += 1 + l + sov(uint64(l)) + } if m.unknownFields != nil { n += len(m.unknownFields) } return n } -func (m *SendStatsResponse) SizeVT() (n int) { +func (m *SendStatsRequest_Android) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - if m.Error != nil { - if size, ok := interface{}(m.Error).(interface { + if m.Android != nil { + if size, ok := interface{}(m.Android).(interface { SizeVT() int }); ok { l = size.SizeVT() } else { - l = proto.Size(m.Error) + l = proto.Size(m.Android) } n += 1 + l + sov(uint64(l)) } - if m.unknownFields != nil { - n += len(m.unknownFields) - } return n } - -func (m *ICERestartRequest) SizeVT() (n int) { +func (m *SendStatsRequest_Apple) SizeVT() (n int) { if m == nil { return 0 } var l int _ = l - l = len(m.SessionId) - if l > 0 { + if m.Apple != nil { + if size, ok := interface{}(m.Apple).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Apple) + } + n += 1 + l + sov(uint64(l)) + } + return n +} +func (m *SendStatsResponse) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + if m.Error != nil { + if size, ok := interface{}(m.Error).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(m.Error) + } + n += 1 + l + sov(uint64(l)) + } + if m.unknownFields != nil { + n += len(m.unknownFields) + } + return n +} + +func (m *ICERestartRequest) SizeVT() (n int) { + if m == nil { + return 0 + } + var l int + _ = l + l = len(m.SessionId) + if l > 0 { n += 1 + l + sov(uint64(l)) } if m.PeerType != 0 { @@ -2023,6 +2391,190 @@ func (m *StopNoiseCancellationResponse) UnmarshalVT(dAtA []byte) error { } return nil } +func (m *Reconnection) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Reconnection: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Reconnection: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 5 { + return fmt.Errorf("proto: wrong wireType = %d for field TimeSeconds", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + m.TimeSeconds = float32(math.Float32frombits(v)) + case 2: + if wireType != 0 { + return fmt.Errorf("proto: wrong wireType = %d for field Strategy", wireType) + } + m.Strategy = 0 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + m.Strategy |= models.WebsocketReconnectStrategy(b&0x7F) << shift + if b < 0x80 { + break + } + } + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} +func (m *Telemetry) UnmarshalVT(dAtA []byte) error { + l := len(dAtA) + iNdEx := 0 + for iNdEx < l { + preIndex := iNdEx + var wire uint64 + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + wire |= uint64(b&0x7F) << shift + if b < 0x80 { + break + } + } + fieldNum := int32(wire >> 3) + wireType := int(wire & 0x7) + if wireType == 4 { + return fmt.Errorf("proto: Telemetry: wiretype end group for non-group") + } + if fieldNum <= 0 { + return fmt.Errorf("proto: Telemetry: illegal tag %d (wire type %d)", fieldNum, wire) + } + switch fieldNum { + case 1: + if wireType != 5 { + return fmt.Errorf("proto: wrong wireType = %d for field ConnectionTimeSeconds", wireType) + } + var v uint32 + if (iNdEx + 4) > l { + return io.ErrUnexpectedEOF + } + v = uint32(binary.LittleEndian.Uint32(dAtA[iNdEx:])) + iNdEx += 4 + m.Data = &Telemetry_ConnectionTimeSeconds{float32(math.Float32frombits(v))} + case 2: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Reconnection", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.Data.(*Telemetry_Reconnection); ok { + if err := oneof.Reconnection.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + v := &Reconnection{} + if err := v.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + m.Data = &Telemetry_Reconnection{v} + } + iNdEx = postIndex + default: + iNdEx = preIndex + skippy, err := skip(dAtA[iNdEx:]) + if err != nil { + return err + } + if (skippy < 0) || (iNdEx+skippy) < 0 { + return ErrInvalidLength + } + if (iNdEx + skippy) > l { + return io.ErrUnexpectedEOF + } + m.unknownFields = append(m.unknownFields, dAtA[iNdEx:iNdEx+skippy]...) + iNdEx += skippy + } + } + + if iNdEx > l { + return io.ErrUnexpectedEOF + } + return nil +} func (m *SendStatsRequest) UnmarshalVT(dAtA []byte) error { l := len(dAtA) iNdEx := 0 @@ -2244,6 +2796,244 @@ func (m *SendStatsRequest) UnmarshalVT(dAtA []byte) error { } m.SdkVersion = string(dAtA[iNdEx:postIndex]) iNdEx = postIndex + case 7: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field AudioDevices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.AudioDevices == nil { + m.AudioDevices = &models.InputDevices{} + } + if unmarshal, ok := interface{}(m.AudioDevices).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.AudioDevices); err != nil { + return err + } + } + iNdEx = postIndex + case 8: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field VideoDevices", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.VideoDevices == nil { + m.VideoDevices = &models.InputDevices{} + } + if unmarshal, ok := interface{}(m.VideoDevices).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.VideoDevices); err != nil { + return err + } + } + iNdEx = postIndex + case 9: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Android", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.DeviceState.(*SendStatsRequest_Android); ok { + if unmarshal, ok := interface{}(oneof.Android).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], oneof.Android); err != nil { + return err + } + } + } else { + v := &models.AndroidState{} + if unmarshal, ok := interface{}(v).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil { + return err + } + } + m.DeviceState = &SendStatsRequest_Android{v} + } + iNdEx = postIndex + case 10: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Apple", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if oneof, ok := m.DeviceState.(*SendStatsRequest_Apple); ok { + if unmarshal, ok := interface{}(oneof.Apple).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], oneof.Apple); err != nil { + return err + } + } + } else { + v := &models.AppleState{} + if unmarshal, ok := interface{}(v).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], v); err != nil { + return err + } + } + m.DeviceState = &SendStatsRequest_Apple{v} + } + iNdEx = postIndex + case 11: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field Telemetry", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + if m.Telemetry == nil { + m.Telemetry = &Telemetry{} + } + if err := m.Telemetry.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := skip(dAtA[iNdEx:])