Skip to main content

boon_proto/
proto.rs

1// @generated — DO NOT EDIT.
2
3// This file is @generated by prost-build.
4#[derive(serde::Serialize, serde::Deserialize)]
5#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6pub struct CMsgProtoBufHeader {
7    #[prost(fixed64, optional, tag = "1")]
8    pub client_steam_id: ::core::option::Option<u64>,
9    #[prost(int32, optional, tag = "2")]
10    pub client_session_id: ::core::option::Option<i32>,
11    #[prost(uint32, optional, tag = "3")]
12    pub source_app_id: ::core::option::Option<u32>,
13    #[prost(fixed64, optional, tag = "10", default = "18446744073709551615")]
14    pub job_id_source: ::core::option::Option<u64>,
15    #[prost(fixed64, optional, tag = "11", default = "18446744073709551615")]
16    pub job_id_target: ::core::option::Option<u64>,
17    #[prost(string, optional, tag = "12")]
18    pub target_job_name: ::core::option::Option<::prost::alloc::string::String>,
19    #[prost(int32, optional, tag = "13", default = "2")]
20    pub eresult: ::core::option::Option<i32>,
21    #[prost(string, optional, tag = "14")]
22    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
23    #[prost(
24        enumeration = "GcProtoBufMsgSrc",
25        optional,
26        tag = "200",
27        default = "Unspecified"
28    )]
29    pub gc_msg_src: ::core::option::Option<i32>,
30    #[prost(int32, optional, tag = "201", default = "-1")]
31    pub gc_dir_index_source: ::core::option::Option<i32>,
32}
33#[derive(serde::Serialize, serde::Deserialize)]
34#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
35pub struct CgcSystemMsgGetAccountDetails {
36    #[prost(fixed64, optional, tag = "1")]
37    pub steamid: ::core::option::Option<u64>,
38    #[prost(uint32, optional, tag = "2")]
39    pub appid: ::core::option::Option<u32>,
40}
41#[derive(serde::Serialize, serde::Deserialize)]
42#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
43pub struct CgcSystemMsgGetAccountDetailsResponse {
44    #[prost(uint32, optional, tag = "1", default = "2")]
45    pub eresult_deprecated: ::core::option::Option<u32>,
46    #[prost(string, optional, tag = "2")]
47    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
48    #[prost(string, optional, tag = "3")]
49    pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
50    #[prost(bool, optional, tag = "26")]
51    pub is_profile_created: ::core::option::Option<bool>,
52    #[prost(bool, optional, tag = "4")]
53    pub is_profile_public: ::core::option::Option<bool>,
54    #[prost(bool, optional, tag = "5")]
55    pub is_inventory_public: ::core::option::Option<bool>,
56    #[prost(bool, optional, tag = "7")]
57    pub is_vac_banned: ::core::option::Option<bool>,
58    #[prost(bool, optional, tag = "8")]
59    pub is_cyber_cafe: ::core::option::Option<bool>,
60    #[prost(bool, optional, tag = "9")]
61    pub is_school_account: ::core::option::Option<bool>,
62    #[prost(bool, optional, tag = "10")]
63    pub is_limited: ::core::option::Option<bool>,
64    #[prost(bool, optional, tag = "11")]
65    pub is_subscribed: ::core::option::Option<bool>,
66    #[prost(uint32, optional, tag = "12")]
67    pub package: ::core::option::Option<u32>,
68    #[prost(bool, optional, tag = "13")]
69    pub is_free_trial_account: ::core::option::Option<bool>,
70    #[prost(uint32, optional, tag = "14")]
71    pub free_trial_expiration: ::core::option::Option<u32>,
72    #[prost(bool, optional, tag = "15")]
73    pub is_low_violence: ::core::option::Option<bool>,
74    #[prost(bool, optional, tag = "16")]
75    pub is_account_locked_down: ::core::option::Option<bool>,
76    #[prost(bool, optional, tag = "17")]
77    pub is_community_banned: ::core::option::Option<bool>,
78    #[prost(bool, optional, tag = "18")]
79    pub is_trade_banned: ::core::option::Option<bool>,
80    #[prost(uint32, optional, tag = "19")]
81    pub trade_ban_expiration: ::core::option::Option<u32>,
82    #[prost(uint32, optional, tag = "20")]
83    pub accountid: ::core::option::Option<u32>,
84    #[prost(uint32, optional, tag = "21")]
85    pub suspension_end_time: ::core::option::Option<u32>,
86    #[prost(string, optional, tag = "22")]
87    pub currency: ::core::option::Option<::prost::alloc::string::String>,
88    #[prost(uint32, optional, tag = "23")]
89    pub steam_level: ::core::option::Option<u32>,
90    #[prost(uint32, optional, tag = "24")]
91    pub friend_count: ::core::option::Option<u32>,
92    #[prost(uint32, optional, tag = "25")]
93    pub account_creation_time: ::core::option::Option<u32>,
94    #[prost(bool, optional, tag = "27")]
95    pub is_steamguard_enabled: ::core::option::Option<bool>,
96    #[prost(bool, optional, tag = "28")]
97    pub is_phone_verified: ::core::option::Option<bool>,
98    #[prost(bool, optional, tag = "29")]
99    pub is_two_factor_auth_enabled: ::core::option::Option<bool>,
100    #[prost(uint32, optional, tag = "30")]
101    pub two_factor_enabled_time: ::core::option::Option<u32>,
102    #[prost(uint32, optional, tag = "31")]
103    pub phone_verification_time: ::core::option::Option<u32>,
104    #[prost(uint64, optional, tag = "33")]
105    pub phone_id: ::core::option::Option<u64>,
106    #[prost(bool, optional, tag = "34")]
107    pub is_phone_identifying: ::core::option::Option<bool>,
108    #[prost(uint32, optional, tag = "35")]
109    pub rt_identity_linked: ::core::option::Option<u32>,
110    #[prost(uint32, optional, tag = "36")]
111    pub rt_birth_date: ::core::option::Option<u32>,
112    #[prost(string, optional, tag = "37")]
113    pub txn_country_code: ::core::option::Option<::prost::alloc::string::String>,
114    #[prost(bool, optional, tag = "38")]
115    pub has_accepted_china_ssa: ::core::option::Option<bool>,
116    #[prost(bool, optional, tag = "39")]
117    pub is_banned_steam_china: ::core::option::Option<bool>,
118}
119#[derive(serde::Serialize, serde::Deserialize)]
120#[derive(Clone, PartialEq, ::prost::Message)]
121pub struct CipLocationInfo {
122    #[prost(uint32, optional, tag = "1")]
123    pub ip: ::core::option::Option<u32>,
124    #[prost(float, optional, tag = "2")]
125    pub latitude: ::core::option::Option<f32>,
126    #[prost(float, optional, tag = "3")]
127    pub longitude: ::core::option::Option<f32>,
128    #[prost(string, optional, tag = "4")]
129    pub country: ::core::option::Option<::prost::alloc::string::String>,
130    #[prost(string, optional, tag = "5")]
131    pub state: ::core::option::Option<::prost::alloc::string::String>,
132    #[prost(string, optional, tag = "6")]
133    pub city: ::core::option::Option<::prost::alloc::string::String>,
134}
135#[derive(serde::Serialize, serde::Deserialize)]
136#[derive(Clone, PartialEq, ::prost::Message)]
137pub struct CgcMsgGetIpLocationResponse {
138    #[prost(message, repeated, tag = "1")]
139    pub infos: ::prost::alloc::vec::Vec<CipLocationInfo>,
140}
141#[derive(serde::Serialize, serde::Deserialize)]
142#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
143#[repr(i32)]
144pub enum EgcPlatform {
145    KEGcPlatformNone = 0,
146    KEGcPlatformPc = 1,
147    KEGcPlatformMac = 2,
148    KEGcPlatformLinux = 3,
149    KEGcPlatformAndroid = 4,
150    KEGcPlatformIOs = 5,
151}
152impl EgcPlatform {
153    /// String value of the enum field names used in the ProtoBuf definition.
154    ///
155    /// The values are not transformed in any way and thus are considered stable
156    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
157    pub fn as_str_name(&self) -> &'static str {
158        match self {
159            Self::KEGcPlatformNone => "k_eGCPlatform_None",
160            Self::KEGcPlatformPc => "k_eGCPlatform_PC",
161            Self::KEGcPlatformMac => "k_eGCPlatform_Mac",
162            Self::KEGcPlatformLinux => "k_eGCPlatform_Linux",
163            Self::KEGcPlatformAndroid => "k_eGCPlatform_Android",
164            Self::KEGcPlatformIOs => "k_eGCPlatform_iOS",
165        }
166    }
167    /// Creates an enum from field names used in the ProtoBuf definition.
168    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
169        match value {
170            "k_eGCPlatform_None" => Some(Self::KEGcPlatformNone),
171            "k_eGCPlatform_PC" => Some(Self::KEGcPlatformPc),
172            "k_eGCPlatform_Mac" => Some(Self::KEGcPlatformMac),
173            "k_eGCPlatform_Linux" => Some(Self::KEGcPlatformLinux),
174            "k_eGCPlatform_Android" => Some(Self::KEGcPlatformAndroid),
175            "k_eGCPlatform_iOS" => Some(Self::KEGcPlatformIOs),
176            _ => None,
177        }
178    }
179}
180#[derive(serde::Serialize, serde::Deserialize)]
181#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
182#[repr(i32)]
183pub enum GcProtoBufMsgSrc {
184    Unspecified = 0,
185    FromSystem = 1,
186    FromSteamId = 2,
187    FromGc = 3,
188    ReplySystem = 4,
189    SpoofedSteamId = 5,
190}
191impl GcProtoBufMsgSrc {
192    /// String value of the enum field names used in the ProtoBuf definition.
193    ///
194    /// The values are not transformed in any way and thus are considered stable
195    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
196    pub fn as_str_name(&self) -> &'static str {
197        match self {
198            Self::Unspecified => "GCProtoBufMsgSrc_Unspecified",
199            Self::FromSystem => "GCProtoBufMsgSrc_FromSystem",
200            Self::FromSteamId => "GCProtoBufMsgSrc_FromSteamID",
201            Self::FromGc => "GCProtoBufMsgSrc_FromGC",
202            Self::ReplySystem => "GCProtoBufMsgSrc_ReplySystem",
203            Self::SpoofedSteamId => "GCProtoBufMsgSrc_SpoofedSteamID",
204        }
205    }
206    /// Creates an enum from field names used in the ProtoBuf definition.
207    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
208        match value {
209            "GCProtoBufMsgSrc_Unspecified" => Some(Self::Unspecified),
210            "GCProtoBufMsgSrc_FromSystem" => Some(Self::FromSystem),
211            "GCProtoBufMsgSrc_FromSteamID" => Some(Self::FromSteamId),
212            "GCProtoBufMsgSrc_FromGC" => Some(Self::FromGc),
213            "GCProtoBufMsgSrc_ReplySystem" => Some(Self::ReplySystem),
214            "GCProtoBufMsgSrc_SpoofedSteamID" => Some(Self::SpoofedSteamId),
215            _ => None,
216        }
217    }
218}
219#[derive(serde::Serialize, serde::Deserialize)]
220#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
221#[repr(i32)]
222pub enum EProtoDebugVisiblity {
223    KEProtoDebugVisibilityAlways = 0,
224    KEProtoDebugVisibilityServer = 70,
225    KEProtoDebugVisibilityValveServer = 80,
226    KEProtoDebugVisibilityGc = 90,
227    KEProtoDebugVisibilityNever = 100,
228}
229impl EProtoDebugVisiblity {
230    /// String value of the enum field names used in the ProtoBuf definition.
231    ///
232    /// The values are not transformed in any way and thus are considered stable
233    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
234    pub fn as_str_name(&self) -> &'static str {
235        match self {
236            Self::KEProtoDebugVisibilityAlways => "k_EProtoDebugVisibility_Always",
237            Self::KEProtoDebugVisibilityServer => "k_EProtoDebugVisibility_Server",
238            Self::KEProtoDebugVisibilityValveServer => {
239                "k_EProtoDebugVisibility_ValveServer"
240            }
241            Self::KEProtoDebugVisibilityGc => "k_EProtoDebugVisibility_GC",
242            Self::KEProtoDebugVisibilityNever => "k_EProtoDebugVisibility_Never",
243        }
244    }
245    /// Creates an enum from field names used in the ProtoBuf definition.
246    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
247        match value {
248            "k_EProtoDebugVisibility_Always" => Some(Self::KEProtoDebugVisibilityAlways),
249            "k_EProtoDebugVisibility_Server" => Some(Self::KEProtoDebugVisibilityServer),
250            "k_EProtoDebugVisibility_ValveServer" => {
251                Some(Self::KEProtoDebugVisibilityValveServer)
252            }
253            "k_EProtoDebugVisibility_GC" => Some(Self::KEProtoDebugVisibilityGc),
254            "k_EProtoDebugVisibility_Never" => Some(Self::KEProtoDebugVisibilityNever),
255            _ => None,
256        }
257    }
258}
259#[derive(serde::Serialize, serde::Deserialize)]
260#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
261#[repr(i32)]
262pub enum EProtoExecutionSite {
263    KEProtoExecutionSiteUnknown = 0,
264    KEProtoExecutionSiteSteamClient = 3,
265}
266impl EProtoExecutionSite {
267    /// String value of the enum field names used in the ProtoBuf definition.
268    ///
269    /// The values are not transformed in any way and thus are considered stable
270    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
271    pub fn as_str_name(&self) -> &'static str {
272        match self {
273            Self::KEProtoExecutionSiteUnknown => "k_EProtoExecutionSiteUnknown",
274            Self::KEProtoExecutionSiteSteamClient => "k_EProtoExecutionSiteSteamClient",
275        }
276    }
277    /// Creates an enum from field names used in the ProtoBuf definition.
278    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
279        match value {
280            "k_EProtoExecutionSiteUnknown" => Some(Self::KEProtoExecutionSiteUnknown),
281            "k_EProtoExecutionSiteSteamClient" => {
282                Some(Self::KEProtoExecutionSiteSteamClient)
283            }
284            _ => None,
285        }
286    }
287}
288#[derive(serde::Serialize, serde::Deserialize)]
289#[derive(Clone, PartialEq, ::prost::Message)]
290pub struct CMsgSteamLearnDataSourceDescObject {
291    #[prost(message, repeated, tag = "1")]
292    pub elements: ::prost::alloc::vec::Vec<CMsgSteamLearnDataSourceDescElement>,
293}
294#[derive(serde::Serialize, serde::Deserialize)]
295#[derive(Clone, PartialEq, ::prost::Message)]
296pub struct CMsgSteamLearnDataSourceDescElement {
297    #[prost(string, optional, tag = "1")]
298    pub name: ::core::option::Option<::prost::alloc::string::String>,
299    #[prost(
300        enumeration = "ESteamLearnDataType",
301        optional,
302        tag = "2",
303        default = "SteamlearnDatatypeInvalid"
304    )]
305    pub data_type: ::core::option::Option<i32>,
306    #[prost(message, optional, tag = "3")]
307    pub object: ::core::option::Option<CMsgSteamLearnDataSourceDescObject>,
308    #[prost(uint32, optional, tag = "4")]
309    pub count: ::core::option::Option<u32>,
310}
311#[derive(serde::Serialize, serde::Deserialize)]
312#[derive(Clone, PartialEq, ::prost::Message)]
313pub struct CMsgSteamLearnDataSource {
314    #[prost(uint32, optional, tag = "1")]
315    pub id: ::core::option::Option<u32>,
316    #[prost(string, optional, tag = "2")]
317    pub name: ::core::option::Option<::prost::alloc::string::String>,
318    #[prost(uint32, optional, tag = "3")]
319    pub version: ::core::option::Option<u32>,
320    #[prost(string, optional, tag = "4")]
321    pub source_description: ::core::option::Option<::prost::alloc::string::String>,
322    #[prost(message, optional, tag = "5")]
323    pub structure: ::core::option::Option<CMsgSteamLearnDataSourceDescObject>,
324    #[prost(uint32, optional, tag = "6")]
325    pub structure_crc: ::core::option::Option<u32>,
326    #[prost(uint32, optional, tag = "7")]
327    pub cache_duration_seconds: ::core::option::Option<u32>,
328}
329#[derive(serde::Serialize, serde::Deserialize)]
330#[derive(Clone, PartialEq, ::prost::Message)]
331pub struct CMsgSteamLearnDataObject {
332    #[prost(message, repeated, tag = "1")]
333    pub elements: ::prost::alloc::vec::Vec<CMsgSteamLearnDataElement>,
334}
335#[derive(serde::Serialize, serde::Deserialize)]
336#[derive(Clone, PartialEq, ::prost::Message)]
337pub struct CMsgSteamLearnDataElement {
338    #[prost(string, optional, tag = "1")]
339    pub name: ::core::option::Option<::prost::alloc::string::String>,
340    #[prost(int32, repeated, packed = "false", tag = "20")]
341    pub data_int32s: ::prost::alloc::vec::Vec<i32>,
342    #[prost(float, repeated, packed = "false", tag = "21")]
343    pub data_floats: ::prost::alloc::vec::Vec<f32>,
344    #[prost(bool, repeated, packed = "false", tag = "22")]
345    pub data_bools: ::prost::alloc::vec::Vec<bool>,
346    #[prost(string, repeated, tag = "23")]
347    pub data_strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
348    #[prost(message, repeated, tag = "24")]
349    pub data_objects: ::prost::alloc::vec::Vec<CMsgSteamLearnDataObject>,
350}
351#[derive(serde::Serialize, serde::Deserialize)]
352#[derive(Clone, PartialEq, ::prost::Message)]
353pub struct CMsgSteamLearnData {
354    #[prost(uint32, optional, tag = "1")]
355    pub data_source_id: ::core::option::Option<u32>,
356    #[prost(uint64, repeated, packed = "false", tag = "2")]
357    pub keys: ::prost::alloc::vec::Vec<u64>,
358    #[prost(message, optional, tag = "3")]
359    pub data_object: ::core::option::Option<CMsgSteamLearnDataObject>,
360}
361#[derive(serde::Serialize, serde::Deserialize)]
362#[derive(Clone, PartialEq, ::prost::Message)]
363pub struct CMsgSteamLearnDataList {
364    #[prost(message, repeated, tag = "1")]
365    pub data: ::prost::alloc::vec::Vec<CMsgSteamLearnData>,
366}
367#[derive(serde::Serialize, serde::Deserialize)]
368#[derive(Clone, PartialEq, ::prost::Message)]
369pub struct CMsgSteamLearnRegisterDataSourceRequest {
370    #[prost(string, optional, tag = "1")]
371    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
372    #[prost(message, optional, tag = "3")]
373    pub data_source: ::core::option::Option<CMsgSteamLearnDataSource>,
374}
375#[derive(serde::Serialize, serde::Deserialize)]
376#[derive(Clone, PartialEq, ::prost::Message)]
377pub struct CMsgSteamLearnRegisterDataSourceResponse {
378    #[prost(
379        enumeration = "ESteammLearnRegisterDataSourceResult",
380        optional,
381        tag = "1",
382        default = "SteamlearnRegisterDataSourceResultError"
383    )]
384    pub result: ::core::option::Option<i32>,
385    #[prost(message, optional, tag = "2")]
386    pub data_source: ::core::option::Option<CMsgSteamLearnDataSource>,
387}
388#[derive(serde::Serialize, serde::Deserialize)]
389#[derive(Clone, PartialEq, ::prost::Message)]
390pub struct CMsgSteamLearnCacheDataRequest {
391    #[prost(string, optional, tag = "1")]
392    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
393    #[prost(message, optional, tag = "3")]
394    pub data: ::core::option::Option<CMsgSteamLearnData>,
395}
396#[derive(serde::Serialize, serde::Deserialize)]
397#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
398pub struct CMsgSteamLearnCacheDataResponse {
399    #[prost(
400        enumeration = "ESteamLearnCacheDataResult",
401        optional,
402        tag = "1",
403        default = "SteamlearnCacheDataError"
404    )]
405    pub cache_data_result: ::core::option::Option<i32>,
406}
407#[derive(serde::Serialize, serde::Deserialize)]
408#[derive(Clone, PartialEq, ::prost::Message)]
409pub struct CMsgSteamLearnSnapshotProjectRequest {
410    #[prost(string, optional, tag = "1")]
411    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
412    #[prost(uint32, optional, tag = "3")]
413    pub project_id: ::core::option::Option<u32>,
414    #[prost(uint32, optional, tag = "7")]
415    pub published_version: ::core::option::Option<u32>,
416    #[prost(uint64, repeated, packed = "false", tag = "4")]
417    pub keys: ::prost::alloc::vec::Vec<u64>,
418    #[prost(message, repeated, tag = "5")]
419    pub data: ::prost::alloc::vec::Vec<CMsgSteamLearnData>,
420    #[prost(uint32, optional, tag = "6")]
421    pub pending_data_limit_seconds: ::core::option::Option<u32>,
422}
423#[derive(serde::Serialize, serde::Deserialize)]
424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
425pub struct CMsgSteamLearnSnapshotProjectResponse {
426    #[prost(
427        enumeration = "ESteamLearnSnapshotProjectResult",
428        optional,
429        tag = "1",
430        default = "SteamlearnSnapshotProjectError"
431    )]
432    pub snapshot_result: ::core::option::Option<i32>,
433}
434#[derive(serde::Serialize, serde::Deserialize)]
435#[derive(Clone, PartialEq, ::prost::Message)]
436pub struct CMsgSteamLearnBatchOperationRequest {
437    #[prost(message, repeated, tag = "1")]
438    pub cache_data_requests: ::prost::alloc::vec::Vec<CMsgSteamLearnCacheDataRequest>,
439    #[prost(message, repeated, tag = "2")]
440    pub snapshot_requests: ::prost::alloc::vec::Vec<
441        CMsgSteamLearnSnapshotProjectRequest,
442    >,
443    #[prost(message, repeated, tag = "3")]
444    pub inference_requests: ::prost::alloc::vec::Vec<CMsgSteamLearnInferenceRequest>,
445}
446#[derive(serde::Serialize, serde::Deserialize)]
447#[derive(Clone, PartialEq, ::prost::Message)]
448pub struct CMsgSteamLearnBatchOperationResponse {
449    #[prost(message, repeated, tag = "1")]
450    pub cache_data_responses: ::prost::alloc::vec::Vec<CMsgSteamLearnCacheDataResponse>,
451    #[prost(message, repeated, tag = "2")]
452    pub snapshot_responses: ::prost::alloc::vec::Vec<
453        CMsgSteamLearnSnapshotProjectResponse,
454    >,
455    #[prost(message, repeated, tag = "3")]
456    pub inference_responses: ::prost::alloc::vec::Vec<CMsgSteamLearnInferenceResponse>,
457}
458#[derive(serde::Serialize, serde::Deserialize)]
459#[derive(Clone, PartialEq, ::prost::Message)]
460pub struct CMsgSteamLearnAccessTokens {
461    #[prost(string, optional, tag = "1")]
462    pub register_data_source_access_token: ::core::option::Option<
463        ::prost::alloc::string::String,
464    >,
465    #[prost(message, repeated, tag = "2")]
466    pub cache_data_access_tokens: ::prost::alloc::vec::Vec<
467        c_msg_steam_learn_access_tokens::CacheDataAccessToken,
468    >,
469    #[prost(message, repeated, tag = "3")]
470    pub snapshot_project_access_tokens: ::prost::alloc::vec::Vec<
471        c_msg_steam_learn_access_tokens::SnapshotProjectAccessToken,
472    >,
473    #[prost(message, repeated, tag = "4")]
474    pub inference_access_tokens: ::prost::alloc::vec::Vec<
475        c_msg_steam_learn_access_tokens::InferenceAccessToken,
476    >,
477}
478/// Nested message and enum types in `CMsgSteamLearnAccessTokens`.
479pub mod c_msg_steam_learn_access_tokens {
480    #[derive(serde::Serialize, serde::Deserialize)]
481    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
482    pub struct CacheDataAccessToken {
483        #[prost(uint32, optional, tag = "1")]
484        pub data_source_id: ::core::option::Option<u32>,
485        #[prost(string, optional, tag = "2")]
486        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
487    }
488    #[derive(serde::Serialize, serde::Deserialize)]
489    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
490    pub struct SnapshotProjectAccessToken {
491        #[prost(uint32, optional, tag = "1")]
492        pub project_id: ::core::option::Option<u32>,
493        #[prost(string, optional, tag = "2")]
494        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
495    }
496    #[derive(serde::Serialize, serde::Deserialize)]
497    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
498    pub struct InferenceAccessToken {
499        #[prost(uint32, optional, tag = "1")]
500        pub project_id: ::core::option::Option<u32>,
501        #[prost(string, optional, tag = "2")]
502        pub access_token: ::core::option::Option<::prost::alloc::string::String>,
503    }
504}
505#[derive(serde::Serialize, serde::Deserialize)]
506#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
507pub struct CMsgSteamLearnGetAccessTokensRequest {
508    #[prost(uint32, optional, tag = "1")]
509    pub appid: ::core::option::Option<u32>,
510}
511#[derive(serde::Serialize, serde::Deserialize)]
512#[derive(Clone, PartialEq, ::prost::Message)]
513pub struct CMsgSteamLearnGetAccessTokensResponse {
514    #[prost(
515        enumeration = "ESteamLearnGetAccessTokensResult",
516        optional,
517        tag = "1",
518        default = "SteamlearnGetAccessTokensError"
519    )]
520    pub result: ::core::option::Option<i32>,
521    #[prost(message, optional, tag = "2")]
522    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
523}
524#[derive(serde::Serialize, serde::Deserialize)]
525#[derive(Clone, PartialEq, ::prost::Message)]
526pub struct CMsgInferenceIterateBeamSearch {
527    #[prost(uint32, optional, tag = "1")]
528    pub beam_length: ::core::option::Option<u32>,
529    #[prost(uint32, optional, tag = "2")]
530    pub beam_width: ::core::option::Option<u32>,
531    #[prost(float, optional, tag = "3")]
532    pub item_decay: ::core::option::Option<f32>,
533    #[prost(uint32, optional, tag = "4")]
534    pub next_item_count: ::core::option::Option<u32>,
535    #[prost(message, repeated, tag = "5")]
536    pub item_scalars: ::prost::alloc::vec::Vec<
537        c_msg_inference_iterate_beam_search::CustomItemScalar,
538    >,
539    #[prost(uint32, optional, tag = "7")]
540    pub item_sequence_end: ::core::option::Option<u32>,
541    #[prost(float, optional, tag = "8")]
542    pub item_sequence_end_threshold: ::core::option::Option<f32>,
543    #[prost(float, optional, tag = "9")]
544    pub repeat_multiplier: ::core::option::Option<f32>,
545}
546/// Nested message and enum types in `CMsgInferenceIterateBeamSearch`.
547pub mod c_msg_inference_iterate_beam_search {
548    #[derive(serde::Serialize, serde::Deserialize)]
549    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
550    pub struct CustomItemScalar {
551        #[prost(uint32, optional, tag = "1")]
552        pub item: ::core::option::Option<u32>,
553        #[prost(float, optional, tag = "2")]
554        pub scale: ::core::option::Option<f32>,
555    }
556}
557#[derive(serde::Serialize, serde::Deserialize)]
558#[derive(Clone, PartialEq, ::prost::Message)]
559pub struct CMsgSteamLearnInferenceRequest {
560    #[prost(string, optional, tag = "1")]
561    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
562    #[prost(uint32, optional, tag = "3")]
563    pub project_id: ::core::option::Option<u32>,
564    #[prost(uint32, optional, tag = "4")]
565    pub published_version: ::core::option::Option<u32>,
566    #[prost(uint32, optional, tag = "5")]
567    pub override_train_id: ::core::option::Option<u32>,
568    #[prost(message, optional, tag = "6")]
569    pub data: ::core::option::Option<CMsgSteamLearnDataList>,
570    #[prost(float, repeated, packed = "false", tag = "7")]
571    pub additional_data: ::prost::alloc::vec::Vec<f32>,
572    #[prost(uint64, repeated, packed = "false", tag = "8")]
573    pub keys: ::prost::alloc::vec::Vec<u64>,
574    #[prost(string, optional, tag = "9")]
575    pub named_inference: ::core::option::Option<::prost::alloc::string::String>,
576    #[prost(message, optional, tag = "13")]
577    pub iterate_beam_search: ::core::option::Option<CMsgInferenceIterateBeamSearch>,
578    #[prost(uint32, optional, tag = "14")]
579    pub debug_spew: ::core::option::Option<u32>,
580}
581#[derive(serde::Serialize, serde::Deserialize)]
582#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
583pub struct CMsgSteamLearnInferenceMetadataRequest {
584    #[prost(string, optional, tag = "1")]
585    pub access_token: ::core::option::Option<::prost::alloc::string::String>,
586    #[prost(uint32, optional, tag = "3")]
587    pub project_id: ::core::option::Option<u32>,
588    #[prost(uint32, optional, tag = "4")]
589    pub published_version: ::core::option::Option<u32>,
590    #[prost(uint32, optional, tag = "5")]
591    pub override_train_id: ::core::option::Option<u32>,
592}
593#[derive(serde::Serialize, serde::Deserialize)]
594#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
595pub struct CMsgSteamLearnInferenceMetadataBackendRequest {
596    #[prost(uint32, optional, tag = "1")]
597    pub project_id: ::core::option::Option<u32>,
598    #[prost(uint32, optional, tag = "2")]
599    pub fetch_id: ::core::option::Option<u32>,
600}
601#[derive(serde::Serialize, serde::Deserialize)]
602#[derive(Clone, PartialEq, ::prost::Message)]
603pub struct CMsgSteamLearnInferenceMetadataResponse {
604    #[prost(
605        enumeration = "ESteamLearnInferenceMetadataResult",
606        optional,
607        tag = "1",
608        default = "SteamlearnInferenceMetadataError"
609    )]
610    pub inference_metadata_result: ::core::option::Option<i32>,
611    #[prost(message, optional, tag = "2")]
612    pub row_range: ::core::option::Option<
613        c_msg_steam_learn_inference_metadata_response::RowRange,
614    >,
615    #[prost(message, repeated, tag = "3")]
616    pub ranges: ::prost::alloc::vec::Vec<
617        c_msg_steam_learn_inference_metadata_response::Range,
618    >,
619    #[prost(message, repeated, tag = "4")]
620    pub std_devs: ::prost::alloc::vec::Vec<
621        c_msg_steam_learn_inference_metadata_response::StdDev,
622    >,
623    #[prost(message, repeated, tag = "5")]
624    pub compact_tables: ::prost::alloc::vec::Vec<
625        c_msg_steam_learn_inference_metadata_response::CompactTable,
626    >,
627    #[prost(message, repeated, tag = "9")]
628    pub sequence_tables: ::prost::alloc::vec::Vec<
629        c_msg_steam_learn_inference_metadata_response::SequenceTable,
630    >,
631    #[prost(message, repeated, tag = "6")]
632    pub kmeans: ::prost::alloc::vec::Vec<
633        c_msg_steam_learn_inference_metadata_response::KMeans,
634    >,
635    #[prost(message, repeated, tag = "8")]
636    pub app_info: ::prost::alloc::vec::Vec<
637        c_msg_steam_learn_inference_metadata_response::AppInfoEntry,
638    >,
639    #[prost(message, optional, tag = "7")]
640    pub snapshot_histogram: ::core::option::Option<
641        c_msg_steam_learn_inference_metadata_response::SnapshotHistogram,
642    >,
643}
644/// Nested message and enum types in `CMsgSteamLearn_InferenceMetadata_Response`.
645pub mod c_msg_steam_learn_inference_metadata_response {
646    #[derive(serde::Serialize, serde::Deserialize)]
647    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
648    pub struct RowRange {
649        #[prost(uint64, optional, tag = "1")]
650        pub min_row: ::core::option::Option<u64>,
651        #[prost(uint64, optional, tag = "2")]
652        pub max_row: ::core::option::Option<u64>,
653    }
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive(Clone, PartialEq, ::prost::Message)]
656    pub struct Range {
657        #[prost(string, optional, tag = "1")]
658        pub data_element_path: ::core::option::Option<::prost::alloc::string::String>,
659        #[prost(float, optional, tag = "2")]
660        pub min_value: ::core::option::Option<f32>,
661        #[prost(float, optional, tag = "3")]
662        pub max_value: ::core::option::Option<f32>,
663    }
664    #[derive(serde::Serialize, serde::Deserialize)]
665    #[derive(Clone, PartialEq, ::prost::Message)]
666    pub struct StdDev {
667        #[prost(string, optional, tag = "1")]
668        pub data_element_path: ::core::option::Option<::prost::alloc::string::String>,
669        #[prost(float, optional, tag = "2")]
670        pub mean: ::core::option::Option<f32>,
671        #[prost(float, optional, tag = "3")]
672        pub std_dev: ::core::option::Option<f32>,
673    }
674    #[derive(serde::Serialize, serde::Deserialize)]
675    #[derive(Clone, PartialEq, ::prost::Message)]
676    pub struct CompactTable {
677        #[prost(string, optional, tag = "1")]
678        pub name: ::core::option::Option<::prost::alloc::string::String>,
679        #[prost(message, repeated, tag = "2")]
680        pub map_values: ::prost::alloc::vec::Vec<compact_table::MapValuesEntry>,
681        #[prost(message, repeated, tag = "3")]
682        pub map_mappings: ::prost::alloc::vec::Vec<compact_table::MapMappingsEntry>,
683    }
684    /// Nested message and enum types in `CompactTable`.
685    pub mod compact_table {
686        #[derive(serde::Serialize, serde::Deserialize)]
687        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
688        pub struct Entry {
689            #[prost(uint32, optional, tag = "1")]
690            pub value: ::core::option::Option<u32>,
691            #[prost(uint32, optional, tag = "2")]
692            pub mapping: ::core::option::Option<u32>,
693            #[prost(uint64, optional, tag = "3")]
694            pub count: ::core::option::Option<u64>,
695        }
696        #[derive(serde::Serialize, serde::Deserialize)]
697        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
698        pub struct MapValuesEntry {
699            #[prost(uint32, optional, tag = "1")]
700            pub key: ::core::option::Option<u32>,
701            #[prost(message, optional, tag = "2")]
702            pub value: ::core::option::Option<Entry>,
703        }
704        #[derive(serde::Serialize, serde::Deserialize)]
705        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
706        pub struct MapMappingsEntry {
707            #[prost(uint32, optional, tag = "1")]
708            pub key: ::core::option::Option<u32>,
709            #[prost(message, optional, tag = "2")]
710            pub value: ::core::option::Option<Entry>,
711        }
712    }
713    #[derive(serde::Serialize, serde::Deserialize)]
714    #[derive(Clone, PartialEq, ::prost::Message)]
715    pub struct SequenceTable {
716        #[prost(string, optional, tag = "1")]
717        pub name: ::core::option::Option<::prost::alloc::string::String>,
718        #[prost(message, repeated, tag = "2")]
719        pub map_values: ::prost::alloc::vec::Vec<sequence_table::MapValuesEntry>,
720        #[prost(message, repeated, tag = "3")]
721        pub map_mappings: ::prost::alloc::vec::Vec<sequence_table::MapMappingsEntry>,
722        #[prost(uint64, optional, tag = "4")]
723        pub total_count: ::core::option::Option<u64>,
724    }
725    /// Nested message and enum types in `SequenceTable`.
726    pub mod sequence_table {
727        #[derive(serde::Serialize, serde::Deserialize)]
728        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
729        pub struct Entry {
730            #[prost(uint32, repeated, packed = "false", tag = "1")]
731            pub values: ::prost::alloc::vec::Vec<u32>,
732            #[prost(uint32, optional, tag = "2")]
733            pub crc: ::core::option::Option<u32>,
734            #[prost(uint32, optional, tag = "3")]
735            pub count: ::core::option::Option<u32>,
736        }
737        #[derive(serde::Serialize, serde::Deserialize)]
738        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
739        pub struct MapValuesEntry {
740            #[prost(uint32, optional, tag = "1")]
741            pub key: ::core::option::Option<u32>,
742            #[prost(message, optional, tag = "2")]
743            pub value: ::core::option::Option<Entry>,
744        }
745        #[derive(serde::Serialize, serde::Deserialize)]
746        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
747        pub struct MapMappingsEntry {
748            #[prost(string, optional, tag = "1")]
749            pub key: ::core::option::Option<::prost::alloc::string::String>,
750            #[prost(message, optional, tag = "2")]
751            pub value: ::core::option::Option<Entry>,
752        }
753    }
754    #[derive(serde::Serialize, serde::Deserialize)]
755    #[derive(Clone, PartialEq, ::prost::Message)]
756    pub struct KMeans {
757        #[prost(string, optional, tag = "1")]
758        pub name: ::core::option::Option<::prost::alloc::string::String>,
759        #[prost(message, repeated, tag = "2")]
760        pub clusters: ::prost::alloc::vec::Vec<k_means::Cluster>,
761    }
762    /// Nested message and enum types in `KMeans`.
763    pub mod k_means {
764        #[derive(serde::Serialize, serde::Deserialize)]
765        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
766        pub struct Cluster {
767            #[prost(float, optional, tag = "1")]
768            pub x: ::core::option::Option<f32>,
769            #[prost(float, optional, tag = "2")]
770            pub y: ::core::option::Option<f32>,
771            #[prost(float, optional, tag = "3")]
772            pub radius: ::core::option::Option<f32>,
773            #[prost(float, optional, tag = "4")]
774            pub radius_75pct: ::core::option::Option<f32>,
775            #[prost(float, optional, tag = "5")]
776            pub radius_50pct: ::core::option::Option<f32>,
777            #[prost(float, optional, tag = "6")]
778            pub radius_25pct: ::core::option::Option<f32>,
779        }
780    }
781    #[derive(serde::Serialize, serde::Deserialize)]
782    #[derive(Clone, PartialEq, ::prost::Message)]
783    pub struct SnapshotHistogram {
784        #[prost(float, optional, tag = "1")]
785        pub min_value: ::core::option::Option<f32>,
786        #[prost(float, optional, tag = "2")]
787        pub max_value: ::core::option::Option<f32>,
788        #[prost(uint32, optional, tag = "3")]
789        pub num_buckets: ::core::option::Option<u32>,
790        #[prost(uint32, repeated, packed = "false", tag = "4")]
791        pub bucket_counts: ::prost::alloc::vec::Vec<u32>,
792    }
793    #[derive(serde::Serialize, serde::Deserialize)]
794    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
795    pub struct AppInfo {
796        #[prost(string, optional, tag = "1")]
797        pub country_allow: ::core::option::Option<::prost::alloc::string::String>,
798        #[prost(string, optional, tag = "2")]
799        pub country_deny: ::core::option::Option<::prost::alloc::string::String>,
800        #[prost(bool, optional, tag = "3")]
801        pub platform_win: ::core::option::Option<bool>,
802        #[prost(bool, optional, tag = "4")]
803        pub platform_mac: ::core::option::Option<bool>,
804        #[prost(bool, optional, tag = "5")]
805        pub platform_linux: ::core::option::Option<bool>,
806        #[prost(bool, optional, tag = "6")]
807        pub adult_violence: ::core::option::Option<bool>,
808        #[prost(bool, optional, tag = "7")]
809        pub adult_sex: ::core::option::Option<bool>,
810    }
811    #[derive(serde::Serialize, serde::Deserialize)]
812    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
813    pub struct AppInfoEntry {
814        #[prost(uint32, optional, tag = "1")]
815        pub key: ::core::option::Option<u32>,
816        #[prost(message, optional, tag = "2")]
817        pub value: ::core::option::Option<AppInfo>,
818    }
819}
820#[derive(serde::Serialize, serde::Deserialize)]
821#[derive(Clone, PartialEq, ::prost::Message)]
822pub struct CMsgSteamLearnInferenceBackendResponse {
823    #[prost(message, repeated, tag = "1")]
824    pub outputs: ::prost::alloc::vec::Vec<
825        c_msg_steam_learn_inference_backend_response::Output,
826    >,
827}
828/// Nested message and enum types in `CMsgSteamLearn_InferenceBackend_Response`.
829pub mod c_msg_steam_learn_inference_backend_response {
830    #[derive(serde::Serialize, serde::Deserialize)]
831    #[derive(Clone, PartialEq, ::prost::Message)]
832    pub struct Sequence {
833        #[prost(float, repeated, packed = "false", tag = "1")]
834        pub value: ::prost::alloc::vec::Vec<f32>,
835    }
836    #[derive(serde::Serialize, serde::Deserialize)]
837    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
838    pub struct RegressionOutput {
839        #[prost(float, optional, tag = "2")]
840        pub value: ::core::option::Option<f32>,
841    }
842    #[derive(serde::Serialize, serde::Deserialize)]
843    #[derive(Clone, PartialEq, ::prost::Message)]
844    pub struct NamedInferenceOutput {
845        #[prost(float, repeated, packed = "false", tag = "3")]
846        pub value: ::prost::alloc::vec::Vec<f32>,
847    }
848    #[derive(serde::Serialize, serde::Deserialize)]
849    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
850    pub struct BinaryCrossEntropyOutput {
851        #[prost(float, optional, tag = "1")]
852        pub value: ::core::option::Option<f32>,
853    }
854    #[derive(serde::Serialize, serde::Deserialize)]
855    #[derive(Clone, PartialEq, ::prost::Message)]
856    pub struct MutliBinaryCrossEntropyOutput {
857        #[prost(float, repeated, packed = "false", tag = "1")]
858        pub weight: ::prost::alloc::vec::Vec<f32>,
859        #[prost(float, repeated, packed = "false", tag = "2")]
860        pub value: ::prost::alloc::vec::Vec<f32>,
861        #[prost(message, repeated, tag = "3")]
862        pub value_sequence: ::prost::alloc::vec::Vec<Sequence>,
863    }
864    #[derive(serde::Serialize, serde::Deserialize)]
865    #[derive(Clone, PartialEq, ::prost::Message)]
866    pub struct CategoricalCrossEntropyOutput {
867        #[prost(float, repeated, packed = "false", tag = "1")]
868        pub weight: ::prost::alloc::vec::Vec<f32>,
869        #[prost(float, repeated, packed = "false", tag = "2")]
870        pub value: ::prost::alloc::vec::Vec<f32>,
871        #[prost(message, repeated, tag = "3")]
872        pub value_sequence: ::prost::alloc::vec::Vec<Sequence>,
873    }
874    #[derive(serde::Serialize, serde::Deserialize)]
875    #[derive(Clone, PartialEq, ::prost::Message)]
876    pub struct Output {
877        #[prost(oneof = "output::ResponseType", tags = "1, 2, 3, 4, 5")]
878        pub response_type: ::core::option::Option<output::ResponseType>,
879    }
880    /// Nested message and enum types in `Output`.
881    pub mod output {
882        #[derive(serde::Serialize, serde::Deserialize)]
883        #[derive(Clone, PartialEq, ::prost::Oneof)]
884        pub enum ResponseType {
885            #[prost(message, tag = "1")]
886            BinaryCrossentropy(super::BinaryCrossEntropyOutput),
887            #[prost(message, tag = "2")]
888            CategoricalCrossentropy(super::CategoricalCrossEntropyOutput),
889            #[prost(message, tag = "3")]
890            MultiBinaryCrossentropy(super::MutliBinaryCrossEntropyOutput),
891            #[prost(message, tag = "4")]
892            Regression(super::RegressionOutput),
893            #[prost(message, tag = "5")]
894            NamedInference(super::NamedInferenceOutput),
895        }
896    }
897}
898#[derive(serde::Serialize, serde::Deserialize)]
899#[derive(Clone, PartialEq, ::prost::Message)]
900pub struct CMsgSteamLearnInferenceResponse {
901    #[prost(
902        enumeration = "ESteamLearnInferenceResult",
903        optional,
904        tag = "1",
905        default = "SteamlearnInferenceError"
906    )]
907    pub inference_result: ::core::option::Option<i32>,
908    #[prost(message, optional, tag = "2")]
909    pub backend_response: ::core::option::Option<CMsgSteamLearnInferenceBackendResponse>,
910    #[prost(uint64, repeated, packed = "false", tag = "3")]
911    pub keys: ::prost::alloc::vec::Vec<u64>,
912}
913#[derive(serde::Serialize, serde::Deserialize)]
914#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
915#[repr(i32)]
916pub enum ESteamLearnDataType {
917    SteamlearnDatatypeInvalid = 0,
918    SteamlearnDatatypeInt32 = 1,
919    SteamlearnDatatypeFloat32 = 2,
920    SteamlearnDatatypeBool = 3,
921    SteamlearnDatatypeString = 4,
922    SteamlearnDatatypeObject = 5,
923}
924impl ESteamLearnDataType {
925    /// String value of the enum field names used in the ProtoBuf definition.
926    ///
927    /// The values are not transformed in any way and thus are considered stable
928    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
929    pub fn as_str_name(&self) -> &'static str {
930        match self {
931            Self::SteamlearnDatatypeInvalid => "STEAMLEARN_DATATYPE_INVALID",
932            Self::SteamlearnDatatypeInt32 => "STEAMLEARN_DATATYPE_INT32",
933            Self::SteamlearnDatatypeFloat32 => "STEAMLEARN_DATATYPE_FLOAT32",
934            Self::SteamlearnDatatypeBool => "STEAMLEARN_DATATYPE_BOOL",
935            Self::SteamlearnDatatypeString => "STEAMLEARN_DATATYPE_STRING",
936            Self::SteamlearnDatatypeObject => "STEAMLEARN_DATATYPE_OBJECT",
937        }
938    }
939    /// Creates an enum from field names used in the ProtoBuf definition.
940    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
941        match value {
942            "STEAMLEARN_DATATYPE_INVALID" => Some(Self::SteamlearnDatatypeInvalid),
943            "STEAMLEARN_DATATYPE_INT32" => Some(Self::SteamlearnDatatypeInt32),
944            "STEAMLEARN_DATATYPE_FLOAT32" => Some(Self::SteamlearnDatatypeFloat32),
945            "STEAMLEARN_DATATYPE_BOOL" => Some(Self::SteamlearnDatatypeBool),
946            "STEAMLEARN_DATATYPE_STRING" => Some(Self::SteamlearnDatatypeString),
947            "STEAMLEARN_DATATYPE_OBJECT" => Some(Self::SteamlearnDatatypeObject),
948            _ => None,
949        }
950    }
951}
952#[derive(serde::Serialize, serde::Deserialize)]
953#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
954#[repr(i32)]
955pub enum ESteammLearnRegisterDataSourceResult {
956    SteamlearnRegisterDataSourceResultError = 0,
957    SteamlearnRegisterDataSourceResultSuccessCreated = 1,
958    SteamlearnRegisterDataSourceResultSuccessFound = 2,
959    SteamlearnRegisterDataSourceResultErrorGeneric = 3,
960    SteamlearnRegisterDataSourceResultErrorInvalidName = 4,
961    SteamlearnRegisterDataSourceResultErrorInvalidVersion = 5,
962    SteamlearnRegisterDataSourceResultErrorDataChanged = 6,
963    SteamlearnRegisterDataSourceResultErrorDataInvalid = 7,
964    SteamlearnRegisterDataSourceResultErrorForbidden = 8,
965    SteamlearnRegisterDataSourceResultErrorInvalidTimestamp = 9,
966    SteamlearnRegisterDataSourceResultDisabled = 10,
967}
968impl ESteammLearnRegisterDataSourceResult {
969    /// String value of the enum field names used in the ProtoBuf definition.
970    ///
971    /// The values are not transformed in any way and thus are considered stable
972    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
973    pub fn as_str_name(&self) -> &'static str {
974        match self {
975            Self::SteamlearnRegisterDataSourceResultError => {
976                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR"
977            }
978            Self::SteamlearnRegisterDataSourceResultSuccessCreated => {
979                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_CREATED"
980            }
981            Self::SteamlearnRegisterDataSourceResultSuccessFound => {
982                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_FOUND"
983            }
984            Self::SteamlearnRegisterDataSourceResultErrorGeneric => {
985                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_GENERIC"
986            }
987            Self::SteamlearnRegisterDataSourceResultErrorInvalidName => {
988                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_NAME"
989            }
990            Self::SteamlearnRegisterDataSourceResultErrorInvalidVersion => {
991                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_VERSION"
992            }
993            Self::SteamlearnRegisterDataSourceResultErrorDataChanged => {
994                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_CHANGED"
995            }
996            Self::SteamlearnRegisterDataSourceResultErrorDataInvalid => {
997                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_INVALID"
998            }
999            Self::SteamlearnRegisterDataSourceResultErrorForbidden => {
1000                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_FORBIDDEN"
1001            }
1002            Self::SteamlearnRegisterDataSourceResultErrorInvalidTimestamp => {
1003                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_TIMESTAMP"
1004            }
1005            Self::SteamlearnRegisterDataSourceResultDisabled => {
1006                "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_DISABLED"
1007            }
1008        }
1009    }
1010    /// Creates an enum from field names used in the ProtoBuf definition.
1011    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1012        match value {
1013            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR" => {
1014                Some(Self::SteamlearnRegisterDataSourceResultError)
1015            }
1016            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_CREATED" => {
1017                Some(Self::SteamlearnRegisterDataSourceResultSuccessCreated)
1018            }
1019            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_SUCCESS_FOUND" => {
1020                Some(Self::SteamlearnRegisterDataSourceResultSuccessFound)
1021            }
1022            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_GENERIC" => {
1023                Some(Self::SteamlearnRegisterDataSourceResultErrorGeneric)
1024            }
1025            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_NAME" => {
1026                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidName)
1027            }
1028            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_VERSION" => {
1029                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidVersion)
1030            }
1031            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_CHANGED" => {
1032                Some(Self::SteamlearnRegisterDataSourceResultErrorDataChanged)
1033            }
1034            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_DATA_INVALID" => {
1035                Some(Self::SteamlearnRegisterDataSourceResultErrorDataInvalid)
1036            }
1037            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_FORBIDDEN" => {
1038                Some(Self::SteamlearnRegisterDataSourceResultErrorForbidden)
1039            }
1040            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_ERROR_INVALID_TIMESTAMP" => {
1041                Some(Self::SteamlearnRegisterDataSourceResultErrorInvalidTimestamp)
1042            }
1043            "STEAMLEARN_REGISTER_DATA_SOURCE_RESULT_DISABLED" => {
1044                Some(Self::SteamlearnRegisterDataSourceResultDisabled)
1045            }
1046            _ => None,
1047        }
1048    }
1049}
1050#[derive(serde::Serialize, serde::Deserialize)]
1051#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1052#[repr(i32)]
1053pub enum ESteamLearnCacheDataResult {
1054    SteamlearnCacheDataError = 0,
1055    SteamlearnCacheDataSuccess = 1,
1056    SteamlearnCacheDataErrorUnknownDataSource = 2,
1057    SteamlearnCacheDataErrorUncachedDataSource = 3,
1058    SteamlearnCacheDataErrorInvalidKeys = 4,
1059    SteamlearnCacheDataErrorForbidden = 5,
1060    SteamlearnCacheDataErrorInvalidTimestamp = 6,
1061    SteamlearnCacheDataDisabled = 7,
1062}
1063impl ESteamLearnCacheDataResult {
1064    /// String value of the enum field names used in the ProtoBuf definition.
1065    ///
1066    /// The values are not transformed in any way and thus are considered stable
1067    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1068    pub fn as_str_name(&self) -> &'static str {
1069        match self {
1070            Self::SteamlearnCacheDataError => "STEAMLEARN_CACHE_DATA_ERROR",
1071            Self::SteamlearnCacheDataSuccess => "STEAMLEARN_CACHE_DATA_SUCCESS",
1072            Self::SteamlearnCacheDataErrorUnknownDataSource => {
1073                "STEAMLEARN_CACHE_DATA_ERROR_UNKNOWN_DATA_SOURCE"
1074            }
1075            Self::SteamlearnCacheDataErrorUncachedDataSource => {
1076                "STEAMLEARN_CACHE_DATA_ERROR_UNCACHED_DATA_SOURCE"
1077            }
1078            Self::SteamlearnCacheDataErrorInvalidKeys => {
1079                "STEAMLEARN_CACHE_DATA_ERROR_INVALID_KEYS"
1080            }
1081            Self::SteamlearnCacheDataErrorForbidden => {
1082                "STEAMLEARN_CACHE_DATA_ERROR_FORBIDDEN"
1083            }
1084            Self::SteamlearnCacheDataErrorInvalidTimestamp => {
1085                "STEAMLEARN_CACHE_DATA_ERROR_INVALID_TIMESTAMP"
1086            }
1087            Self::SteamlearnCacheDataDisabled => "STEAMLEARN_CACHE_DATA_DISABLED",
1088        }
1089    }
1090    /// Creates an enum from field names used in the ProtoBuf definition.
1091    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1092        match value {
1093            "STEAMLEARN_CACHE_DATA_ERROR" => Some(Self::SteamlearnCacheDataError),
1094            "STEAMLEARN_CACHE_DATA_SUCCESS" => Some(Self::SteamlearnCacheDataSuccess),
1095            "STEAMLEARN_CACHE_DATA_ERROR_UNKNOWN_DATA_SOURCE" => {
1096                Some(Self::SteamlearnCacheDataErrorUnknownDataSource)
1097            }
1098            "STEAMLEARN_CACHE_DATA_ERROR_UNCACHED_DATA_SOURCE" => {
1099                Some(Self::SteamlearnCacheDataErrorUncachedDataSource)
1100            }
1101            "STEAMLEARN_CACHE_DATA_ERROR_INVALID_KEYS" => {
1102                Some(Self::SteamlearnCacheDataErrorInvalidKeys)
1103            }
1104            "STEAMLEARN_CACHE_DATA_ERROR_FORBIDDEN" => {
1105                Some(Self::SteamlearnCacheDataErrorForbidden)
1106            }
1107            "STEAMLEARN_CACHE_DATA_ERROR_INVALID_TIMESTAMP" => {
1108                Some(Self::SteamlearnCacheDataErrorInvalidTimestamp)
1109            }
1110            "STEAMLEARN_CACHE_DATA_DISABLED" => Some(Self::SteamlearnCacheDataDisabled),
1111            _ => None,
1112        }
1113    }
1114}
1115#[derive(serde::Serialize, serde::Deserialize)]
1116#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1117#[repr(i32)]
1118pub enum ESteamLearnSnapshotProjectResult {
1119    SteamlearnSnapshotProjectError = 0,
1120    SteamlearnSnapshotProjectSuccessStored = 1,
1121    SteamlearnSnapshotProjectSuccessQueued = 2,
1122    SteamlearnSnapshotProjectErrorInvalidProjectId = 3,
1123    SteamlearnSnapshotProjectErrorUnknownDataSource = 4,
1124    SteamlearnSnapshotProjectErrorInvalidDataSourceKey = 5,
1125    SteamlearnSnapshotProjectErrorMissingCacheDuration = 6,
1126    SteamlearnSnapshotProjectErrorNoPublishedConfig = 7,
1127    SteamlearnSnapshotProjectErrorForbidden = 8,
1128    SteamlearnSnapshotProjectErrorInvalidTimestamp = 9,
1129    SteamlearnSnapshotProjectErrorInternalDataSourceError = 10,
1130    SteamlearnSnapshotProjectDisabled = 11,
1131    SteamlearnSnapshotProjectErrorInvalidPublishedVersion = 12,
1132}
1133impl ESteamLearnSnapshotProjectResult {
1134    /// String value of the enum field names used in the ProtoBuf definition.
1135    ///
1136    /// The values are not transformed in any way and thus are considered stable
1137    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1138    pub fn as_str_name(&self) -> &'static str {
1139        match self {
1140            Self::SteamlearnSnapshotProjectError => "STEAMLEARN_SNAPSHOT_PROJECT_ERROR",
1141            Self::SteamlearnSnapshotProjectSuccessStored => {
1142                "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_STORED"
1143            }
1144            Self::SteamlearnSnapshotProjectSuccessQueued => {
1145                "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_QUEUED"
1146            }
1147            Self::SteamlearnSnapshotProjectErrorInvalidProjectId => {
1148                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PROJECT_ID"
1149            }
1150            Self::SteamlearnSnapshotProjectErrorUnknownDataSource => {
1151                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_UNKNOWN_DATA_SOURCE"
1152            }
1153            Self::SteamlearnSnapshotProjectErrorInvalidDataSourceKey => {
1154                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_DATA_SOURCE_KEY"
1155            }
1156            Self::SteamlearnSnapshotProjectErrorMissingCacheDuration => {
1157                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_MISSING_CACHE_DURATION"
1158            }
1159            Self::SteamlearnSnapshotProjectErrorNoPublishedConfig => {
1160                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_NO_PUBLISHED_CONFIG"
1161            }
1162            Self::SteamlearnSnapshotProjectErrorForbidden => {
1163                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_FORBIDDEN"
1164            }
1165            Self::SteamlearnSnapshotProjectErrorInvalidTimestamp => {
1166                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_TIMESTAMP"
1167            }
1168            Self::SteamlearnSnapshotProjectErrorInternalDataSourceError => {
1169                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INTERNAL_DATA_SOURCE_ERROR"
1170            }
1171            Self::SteamlearnSnapshotProjectDisabled => {
1172                "STEAMLEARN_SNAPSHOT_PROJECT_DISABLED"
1173            }
1174            Self::SteamlearnSnapshotProjectErrorInvalidPublishedVersion => {
1175                "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PUBLISHED_VERSION"
1176            }
1177        }
1178    }
1179    /// Creates an enum from field names used in the ProtoBuf definition.
1180    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1181        match value {
1182            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR" => {
1183                Some(Self::SteamlearnSnapshotProjectError)
1184            }
1185            "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_STORED" => {
1186                Some(Self::SteamlearnSnapshotProjectSuccessStored)
1187            }
1188            "STEAMLEARN_SNAPSHOT_PROJECT_SUCCESS_QUEUED" => {
1189                Some(Self::SteamlearnSnapshotProjectSuccessQueued)
1190            }
1191            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PROJECT_ID" => {
1192                Some(Self::SteamlearnSnapshotProjectErrorInvalidProjectId)
1193            }
1194            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_UNKNOWN_DATA_SOURCE" => {
1195                Some(Self::SteamlearnSnapshotProjectErrorUnknownDataSource)
1196            }
1197            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_DATA_SOURCE_KEY" => {
1198                Some(Self::SteamlearnSnapshotProjectErrorInvalidDataSourceKey)
1199            }
1200            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_MISSING_CACHE_DURATION" => {
1201                Some(Self::SteamlearnSnapshotProjectErrorMissingCacheDuration)
1202            }
1203            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_NO_PUBLISHED_CONFIG" => {
1204                Some(Self::SteamlearnSnapshotProjectErrorNoPublishedConfig)
1205            }
1206            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_FORBIDDEN" => {
1207                Some(Self::SteamlearnSnapshotProjectErrorForbidden)
1208            }
1209            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_TIMESTAMP" => {
1210                Some(Self::SteamlearnSnapshotProjectErrorInvalidTimestamp)
1211            }
1212            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INTERNAL_DATA_SOURCE_ERROR" => {
1213                Some(Self::SteamlearnSnapshotProjectErrorInternalDataSourceError)
1214            }
1215            "STEAMLEARN_SNAPSHOT_PROJECT_DISABLED" => {
1216                Some(Self::SteamlearnSnapshotProjectDisabled)
1217            }
1218            "STEAMLEARN_SNAPSHOT_PROJECT_ERROR_INVALID_PUBLISHED_VERSION" => {
1219                Some(Self::SteamlearnSnapshotProjectErrorInvalidPublishedVersion)
1220            }
1221            _ => None,
1222        }
1223    }
1224}
1225#[derive(serde::Serialize, serde::Deserialize)]
1226#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1227#[repr(i32)]
1228pub enum ESteamLearnGetAccessTokensResult {
1229    SteamlearnGetAccessTokensError = 0,
1230    SteamlearnGetAccessTokensSuccess = 1,
1231}
1232impl ESteamLearnGetAccessTokensResult {
1233    /// String value of the enum field names used in the ProtoBuf definition.
1234    ///
1235    /// The values are not transformed in any way and thus are considered stable
1236    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1237    pub fn as_str_name(&self) -> &'static str {
1238        match self {
1239            Self::SteamlearnGetAccessTokensError => "STEAMLEARN_GET_ACCESS_TOKENS_ERROR",
1240            Self::SteamlearnGetAccessTokensSuccess => {
1241                "STEAMLEARN_GET_ACCESS_TOKENS_SUCCESS"
1242            }
1243        }
1244    }
1245    /// Creates an enum from field names used in the ProtoBuf definition.
1246    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1247        match value {
1248            "STEAMLEARN_GET_ACCESS_TOKENS_ERROR" => {
1249                Some(Self::SteamlearnGetAccessTokensError)
1250            }
1251            "STEAMLEARN_GET_ACCESS_TOKENS_SUCCESS" => {
1252                Some(Self::SteamlearnGetAccessTokensSuccess)
1253            }
1254            _ => None,
1255        }
1256    }
1257}
1258#[derive(serde::Serialize, serde::Deserialize)]
1259#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1260#[repr(i32)]
1261pub enum ESteamLearnInferenceResult {
1262    SteamlearnInferenceError = 0,
1263    SteamlearnInferenceSuccess = 1,
1264    SteamlearnInferenceErrorInvalidProjectId = 2,
1265    SteamlearnInferenceErrorMissingCachedSchemaData = 3,
1266    SteamlearnInferenceErrorNoPublishedConfig = 4,
1267    SteamlearnInferenceErrorForbidden = 5,
1268    SteamlearnInferenceErrorInvalidTimestamp = 6,
1269    SteamlearnInferenceErrorInvalidPublishedVersion = 7,
1270    SteamlearnInferenceErrorNoFetchIdFound = 8,
1271    SteamlearnInferenceErrorTooBusy = 9,
1272    SteamlearnInferenceErrorUnsuppliedDataFail = 10,
1273    SteamlearnInferenceErrorUnsuppliedDataNoKeys = 11,
1274    SteamlearnInferenceDisabled = 12,
1275    SteamlearnInferenceErrorNoOutput = 13,
1276    SteamlearnInferenceErrorInvalidNamedInference = 14,
1277}
1278impl ESteamLearnInferenceResult {
1279    /// String value of the enum field names used in the ProtoBuf definition.
1280    ///
1281    /// The values are not transformed in any way and thus are considered stable
1282    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1283    pub fn as_str_name(&self) -> &'static str {
1284        match self {
1285            Self::SteamlearnInferenceError => "STEAMLEARN_INFERENCE_ERROR",
1286            Self::SteamlearnInferenceSuccess => "STEAMLEARN_INFERENCE_SUCCESS",
1287            Self::SteamlearnInferenceErrorInvalidProjectId => {
1288                "STEAMLEARN_INFERENCE_ERROR_INVALID_PROJECT_ID"
1289            }
1290            Self::SteamlearnInferenceErrorMissingCachedSchemaData => {
1291                "STEAMLEARN_INFERENCE_ERROR_MISSING_CACHED_SCHEMA_DATA"
1292            }
1293            Self::SteamlearnInferenceErrorNoPublishedConfig => {
1294                "STEAMLEARN_INFERENCE_ERROR_NO_PUBLISHED_CONFIG"
1295            }
1296            Self::SteamlearnInferenceErrorForbidden => {
1297                "STEAMLEARN_INFERENCE_ERROR_FORBIDDEN"
1298            }
1299            Self::SteamlearnInferenceErrorInvalidTimestamp => {
1300                "STEAMLEARN_INFERENCE_ERROR_INVALID_TIMESTAMP"
1301            }
1302            Self::SteamlearnInferenceErrorInvalidPublishedVersion => {
1303                "STEAMLEARN_INFERENCE_ERROR_INVALID_PUBLISHED_VERSION"
1304            }
1305            Self::SteamlearnInferenceErrorNoFetchIdFound => {
1306                "STEAMLEARN_INFERENCE_ERROR_NO_FETCH_ID_FOUND"
1307            }
1308            Self::SteamlearnInferenceErrorTooBusy => {
1309                "STEAMLEARN_INFERENCE_ERROR_TOO_BUSY"
1310            }
1311            Self::SteamlearnInferenceErrorUnsuppliedDataFail => {
1312                "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_FAIL"
1313            }
1314            Self::SteamlearnInferenceErrorUnsuppliedDataNoKeys => {
1315                "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_NO_KEYS"
1316            }
1317            Self::SteamlearnInferenceDisabled => "STEAMLEARN_INFERENCE_DISABLED",
1318            Self::SteamlearnInferenceErrorNoOutput => {
1319                "STEAMLEARN_INFERENCE_ERROR_NO_OUTPUT"
1320            }
1321            Self::SteamlearnInferenceErrorInvalidNamedInference => {
1322                "STEAMLEARN_INFERENCE_ERROR_INVALID_NAMED_INFERENCE"
1323            }
1324        }
1325    }
1326    /// Creates an enum from field names used in the ProtoBuf definition.
1327    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1328        match value {
1329            "STEAMLEARN_INFERENCE_ERROR" => Some(Self::SteamlearnInferenceError),
1330            "STEAMLEARN_INFERENCE_SUCCESS" => Some(Self::SteamlearnInferenceSuccess),
1331            "STEAMLEARN_INFERENCE_ERROR_INVALID_PROJECT_ID" => {
1332                Some(Self::SteamlearnInferenceErrorInvalidProjectId)
1333            }
1334            "STEAMLEARN_INFERENCE_ERROR_MISSING_CACHED_SCHEMA_DATA" => {
1335                Some(Self::SteamlearnInferenceErrorMissingCachedSchemaData)
1336            }
1337            "STEAMLEARN_INFERENCE_ERROR_NO_PUBLISHED_CONFIG" => {
1338                Some(Self::SteamlearnInferenceErrorNoPublishedConfig)
1339            }
1340            "STEAMLEARN_INFERENCE_ERROR_FORBIDDEN" => {
1341                Some(Self::SteamlearnInferenceErrorForbidden)
1342            }
1343            "STEAMLEARN_INFERENCE_ERROR_INVALID_TIMESTAMP" => {
1344                Some(Self::SteamlearnInferenceErrorInvalidTimestamp)
1345            }
1346            "STEAMLEARN_INFERENCE_ERROR_INVALID_PUBLISHED_VERSION" => {
1347                Some(Self::SteamlearnInferenceErrorInvalidPublishedVersion)
1348            }
1349            "STEAMLEARN_INFERENCE_ERROR_NO_FETCH_ID_FOUND" => {
1350                Some(Self::SteamlearnInferenceErrorNoFetchIdFound)
1351            }
1352            "STEAMLEARN_INFERENCE_ERROR_TOO_BUSY" => {
1353                Some(Self::SteamlearnInferenceErrorTooBusy)
1354            }
1355            "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_FAIL" => {
1356                Some(Self::SteamlearnInferenceErrorUnsuppliedDataFail)
1357            }
1358            "STEAMLEARN_INFERENCE_ERROR_UNSUPPLIED_DATA_NO_KEYS" => {
1359                Some(Self::SteamlearnInferenceErrorUnsuppliedDataNoKeys)
1360            }
1361            "STEAMLEARN_INFERENCE_DISABLED" => Some(Self::SteamlearnInferenceDisabled),
1362            "STEAMLEARN_INFERENCE_ERROR_NO_OUTPUT" => {
1363                Some(Self::SteamlearnInferenceErrorNoOutput)
1364            }
1365            "STEAMLEARN_INFERENCE_ERROR_INVALID_NAMED_INFERENCE" => {
1366                Some(Self::SteamlearnInferenceErrorInvalidNamedInference)
1367            }
1368            _ => None,
1369        }
1370    }
1371}
1372#[derive(serde::Serialize, serde::Deserialize)]
1373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
1374#[repr(i32)]
1375pub enum ESteamLearnInferenceMetadataResult {
1376    SteamlearnInferenceMetadataError = 0,
1377    SteamlearnInferenceMetadataSuccess = 1,
1378    SteamlearnInferenceMetadataErrorInvalidProjectId = 2,
1379    SteamlearnInferenceMetadataErrorNoPublishedConfig = 3,
1380    SteamlearnInferenceMetadataErrorForbidden = 4,
1381    SteamlearnInferenceMetadataErrorInvalidTimestamp = 5,
1382    SteamlearnInferenceMetadataErrorInvalidPublishedVersion = 6,
1383    SteamlearnInferenceMetadataErrorNoFetchIdFound = 7,
1384}
1385impl ESteamLearnInferenceMetadataResult {
1386    /// String value of the enum field names used in the ProtoBuf definition.
1387    ///
1388    /// The values are not transformed in any way and thus are considered stable
1389    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
1390    pub fn as_str_name(&self) -> &'static str {
1391        match self {
1392            Self::SteamlearnInferenceMetadataError => {
1393                "STEAMLEARN_INFERENCE_METADATA_ERROR"
1394            }
1395            Self::SteamlearnInferenceMetadataSuccess => {
1396                "STEAMLEARN_INFERENCE_METADATA_SUCCESS"
1397            }
1398            Self::SteamlearnInferenceMetadataErrorInvalidProjectId => {
1399                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PROJECT_ID"
1400            }
1401            Self::SteamlearnInferenceMetadataErrorNoPublishedConfig => {
1402                "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_PUBLISHED_CONFIG"
1403            }
1404            Self::SteamlearnInferenceMetadataErrorForbidden => {
1405                "STEAMLEARN_INFERENCE_METADATA_ERROR_FORBIDDEN"
1406            }
1407            Self::SteamlearnInferenceMetadataErrorInvalidTimestamp => {
1408                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_TIMESTAMP"
1409            }
1410            Self::SteamlearnInferenceMetadataErrorInvalidPublishedVersion => {
1411                "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PUBLISHED_VERSION"
1412            }
1413            Self::SteamlearnInferenceMetadataErrorNoFetchIdFound => {
1414                "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_FETCH_ID_FOUND"
1415            }
1416        }
1417    }
1418    /// Creates an enum from field names used in the ProtoBuf definition.
1419    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
1420        match value {
1421            "STEAMLEARN_INFERENCE_METADATA_ERROR" => {
1422                Some(Self::SteamlearnInferenceMetadataError)
1423            }
1424            "STEAMLEARN_INFERENCE_METADATA_SUCCESS" => {
1425                Some(Self::SteamlearnInferenceMetadataSuccess)
1426            }
1427            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PROJECT_ID" => {
1428                Some(Self::SteamlearnInferenceMetadataErrorInvalidProjectId)
1429            }
1430            "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_PUBLISHED_CONFIG" => {
1431                Some(Self::SteamlearnInferenceMetadataErrorNoPublishedConfig)
1432            }
1433            "STEAMLEARN_INFERENCE_METADATA_ERROR_FORBIDDEN" => {
1434                Some(Self::SteamlearnInferenceMetadataErrorForbidden)
1435            }
1436            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_TIMESTAMP" => {
1437                Some(Self::SteamlearnInferenceMetadataErrorInvalidTimestamp)
1438            }
1439            "STEAMLEARN_INFERENCE_METADATA_ERROR_INVALID_PUBLISHED_VERSION" => {
1440                Some(Self::SteamlearnInferenceMetadataErrorInvalidPublishedVersion)
1441            }
1442            "STEAMLEARN_INFERENCE_METADATA_ERROR_NO_FETCH_ID_FOUND" => {
1443                Some(Self::SteamlearnInferenceMetadataErrorNoFetchIdFound)
1444            }
1445            _ => None,
1446        }
1447    }
1448}
1449#[derive(serde::Serialize, serde::Deserialize)]
1450#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1451pub struct CExtraMsgBlock {
1452    #[prost(uint32, optional, tag = "1")]
1453    pub msg_type: ::core::option::Option<u32>,
1454    #[prost(bytes = "vec", optional, tag = "2")]
1455    pub contents: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1456    #[prost(uint64, optional, tag = "3")]
1457    pub msg_key: ::core::option::Option<u64>,
1458    #[prost(bool, optional, tag = "4")]
1459    pub is_compressed: ::core::option::Option<bool>,
1460}
1461#[derive(serde::Serialize, serde::Deserialize)]
1462#[derive(Clone, PartialEq, ::prost::Message)]
1463pub struct CMsgSteamLearnServerInfo {
1464    #[prost(message, optional, tag = "4")]
1465    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
1466    #[prost(message, repeated, tag = "5")]
1467    pub project_infos: ::prost::alloc::vec::Vec<
1468        c_msg_steam_learn_server_info::ProjectInfo,
1469    >,
1470}
1471/// Nested message and enum types in `CMsgSteamLearnServerInfo`.
1472pub mod c_msg_steam_learn_server_info {
1473    #[derive(serde::Serialize, serde::Deserialize)]
1474    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1475    pub struct ProjectInfo {
1476        #[prost(uint32, optional, tag = "1")]
1477        pub project_id: ::core::option::Option<u32>,
1478        #[prost(uint32, optional, tag = "2")]
1479        pub snapshot_published_version: ::core::option::Option<u32>,
1480        #[prost(uint32, optional, tag = "3")]
1481        pub inference_published_version: ::core::option::Option<u32>,
1482        #[prost(uint32, optional, tag = "6")]
1483        pub snapshot_percentage: ::core::option::Option<u32>,
1484        #[prost(bool, optional, tag = "7")]
1485        pub snapshot_enabled: ::core::option::Option<bool>,
1486    }
1487}
1488#[derive(serde::Serialize, serde::Deserialize)]
1489#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1490pub struct CMsgGcAssertJobData {
1491    #[prost(string, optional, tag = "1")]
1492    pub message_type: ::core::option::Option<::prost::alloc::string::String>,
1493    #[prost(bytes = "vec", optional, tag = "2")]
1494    pub message_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1495}
1496#[derive(serde::Serialize, serde::Deserialize)]
1497#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1498pub struct CMsgGcConCommand {
1499    #[prost(string, optional, tag = "1")]
1500    pub command: ::core::option::Option<::prost::alloc::string::String>,
1501}
1502#[derive(serde::Serialize, serde::Deserialize)]
1503#[derive(Clone, PartialEq, ::prost::Message)]
1504pub struct CMsgSdoAssert {
1505    #[prost(int32, optional, tag = "1")]
1506    pub sdo_type: ::core::option::Option<i32>,
1507    #[prost(message, repeated, tag = "2")]
1508    pub requests: ::prost::alloc::vec::Vec<c_msg_sdo_assert::Request>,
1509}
1510/// Nested message and enum types in `CMsgSDOAssert`.
1511pub mod c_msg_sdo_assert {
1512    #[derive(serde::Serialize, serde::Deserialize)]
1513    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1514    pub struct Request {
1515        #[prost(uint64, repeated, packed = "false", tag = "1")]
1516        pub key: ::prost::alloc::vec::Vec<u64>,
1517        #[prost(string, optional, tag = "2")]
1518        pub requesting_job: ::core::option::Option<::prost::alloc::string::String>,
1519    }
1520}
1521#[derive(serde::Serialize, serde::Deserialize)]
1522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1523pub struct CMsgSoidOwner {
1524    #[prost(uint32, optional, tag = "1")]
1525    pub r#type: ::core::option::Option<u32>,
1526    #[prost(uint64, optional, tag = "2")]
1527    pub id: ::core::option::Option<u64>,
1528}
1529#[derive(serde::Serialize, serde::Deserialize)]
1530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1531pub struct CMsgSoSingleObject {
1532    #[prost(int32, optional, tag = "2")]
1533    pub type_id: ::core::option::Option<i32>,
1534    #[prost(bytes = "vec", optional, tag = "3")]
1535    pub object_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1536    #[prost(fixed64, optional, tag = "4")]
1537    pub version: ::core::option::Option<u64>,
1538    #[prost(message, optional, tag = "5")]
1539    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1540    #[prost(uint32, optional, tag = "6")]
1541    pub service_id: ::core::option::Option<u32>,
1542}
1543#[derive(serde::Serialize, serde::Deserialize)]
1544#[derive(Clone, PartialEq, ::prost::Message)]
1545pub struct CMsgSoMultipleObjects {
1546    #[prost(message, repeated, tag = "2")]
1547    pub objects_modified: ::prost::alloc::vec::Vec<
1548        c_msg_so_multiple_objects::SingleObject,
1549    >,
1550    #[prost(fixed64, optional, tag = "3")]
1551    pub version: ::core::option::Option<u64>,
1552    #[prost(message, repeated, tag = "4")]
1553    pub objects_added: ::prost::alloc::vec::Vec<c_msg_so_multiple_objects::SingleObject>,
1554    #[prost(message, repeated, tag = "5")]
1555    pub objects_removed: ::prost::alloc::vec::Vec<
1556        c_msg_so_multiple_objects::SingleObject,
1557    >,
1558    #[prost(message, optional, tag = "6")]
1559    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1560    #[prost(uint32, optional, tag = "7")]
1561    pub service_id: ::core::option::Option<u32>,
1562}
1563/// Nested message and enum types in `CMsgSOMultipleObjects`.
1564pub mod c_msg_so_multiple_objects {
1565    #[derive(serde::Serialize, serde::Deserialize)]
1566    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1567    pub struct SingleObject {
1568        #[prost(int32, optional, tag = "1")]
1569        pub type_id: ::core::option::Option<i32>,
1570        #[prost(bytes = "vec", optional, tag = "2")]
1571        pub object_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1572    }
1573}
1574#[derive(serde::Serialize, serde::Deserialize)]
1575#[derive(Clone, PartialEq, ::prost::Message)]
1576pub struct CMsgSoCacheSubscribed {
1577    #[prost(message, repeated, tag = "2")]
1578    pub objects: ::prost::alloc::vec::Vec<c_msg_so_cache_subscribed::SubscribedType>,
1579    #[prost(fixed64, optional, tag = "3")]
1580    pub version: ::core::option::Option<u64>,
1581    #[prost(message, optional, tag = "4")]
1582    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1583    #[prost(uint32, optional, tag = "5")]
1584    pub service_id: ::core::option::Option<u32>,
1585    #[prost(uint32, repeated, packed = "false", tag = "6")]
1586    pub service_list: ::prost::alloc::vec::Vec<u32>,
1587    #[prost(fixed64, optional, tag = "7")]
1588    pub sync_version: ::core::option::Option<u64>,
1589}
1590/// Nested message and enum types in `CMsgSOCacheSubscribed`.
1591pub mod c_msg_so_cache_subscribed {
1592    #[derive(serde::Serialize, serde::Deserialize)]
1593    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1594    pub struct SubscribedType {
1595        #[prost(int32, optional, tag = "1")]
1596        pub type_id: ::core::option::Option<i32>,
1597        #[prost(bytes = "vec", repeated, tag = "2")]
1598        pub object_data: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
1599    }
1600}
1601#[derive(serde::Serialize, serde::Deserialize)]
1602#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1603pub struct CMsgSoCacheSubscribedUpToDate {
1604    #[prost(fixed64, optional, tag = "1")]
1605    pub version: ::core::option::Option<u64>,
1606    #[prost(message, optional, tag = "2")]
1607    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1608    #[prost(uint32, optional, tag = "3")]
1609    pub service_id: ::core::option::Option<u32>,
1610    #[prost(uint32, repeated, packed = "false", tag = "4")]
1611    pub service_list: ::prost::alloc::vec::Vec<u32>,
1612    #[prost(fixed64, optional, tag = "5")]
1613    pub sync_version: ::core::option::Option<u64>,
1614}
1615#[derive(serde::Serialize, serde::Deserialize)]
1616#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1617pub struct CMsgSoCacheUnsubscribed {
1618    #[prost(message, optional, tag = "2")]
1619    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1620}
1621#[derive(serde::Serialize, serde::Deserialize)]
1622#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1623pub struct CMsgSoCacheSubscriptionCheck {
1624    #[prost(fixed64, optional, tag = "2")]
1625    pub version: ::core::option::Option<u64>,
1626    #[prost(message, optional, tag = "3")]
1627    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1628    #[prost(uint32, optional, tag = "4")]
1629    pub service_id: ::core::option::Option<u32>,
1630    #[prost(uint32, repeated, packed = "false", tag = "5")]
1631    pub service_list: ::prost::alloc::vec::Vec<u32>,
1632    #[prost(fixed64, optional, tag = "6")]
1633    pub sync_version: ::core::option::Option<u64>,
1634}
1635#[derive(serde::Serialize, serde::Deserialize)]
1636#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1637pub struct CMsgSoCacheSubscriptionRefresh {
1638    #[prost(message, optional, tag = "2")]
1639    pub owner_soid: ::core::option::Option<CMsgSoidOwner>,
1640}
1641#[derive(serde::Serialize, serde::Deserialize)]
1642#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1643pub struct CMsgSoCacheVersion {
1644    #[prost(fixed64, optional, tag = "1")]
1645    pub version: ::core::option::Option<u64>,
1646}
1647#[derive(serde::Serialize, serde::Deserialize)]
1648#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1649pub struct CMsgGcMultiplexMessage {
1650    #[prost(uint32, optional, tag = "1")]
1651    pub msgtype: ::core::option::Option<u32>,
1652    #[prost(bytes = "vec", optional, tag = "2")]
1653    pub payload: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1654    #[prost(fixed64, repeated, packed = "false", tag = "3")]
1655    pub steamids: ::prost::alloc::vec::Vec<u64>,
1656}
1657#[derive(serde::Serialize, serde::Deserialize)]
1658#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1659pub struct CMsgGcToGcSubGcStarting {
1660    #[prost(int32, optional, tag = "1", default = "-1")]
1661    pub dir_index: ::core::option::Option<i32>,
1662}
1663#[derive(serde::Serialize, serde::Deserialize)]
1664#[derive(Clone, PartialEq, ::prost::Message)]
1665pub struct CgcToGcMsgMasterAck {
1666    #[prost(int32, optional, tag = "1", default = "-1")]
1667    pub dir_index: ::core::option::Option<i32>,
1668    #[prost(string, optional, tag = "3")]
1669    pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
1670    #[prost(string, optional, tag = "4")]
1671    pub process_name: ::core::option::Option<::prost::alloc::string::String>,
1672    #[prost(message, repeated, tag = "6")]
1673    pub directory: ::prost::alloc::vec::Vec<cgc_to_gc_msg_master_ack::Process>,
1674}
1675/// Nested message and enum types in `CGCToGCMsgMasterAck`.
1676pub mod cgc_to_gc_msg_master_ack {
1677    #[derive(serde::Serialize, serde::Deserialize)]
1678    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1679    pub struct Process {
1680        #[prost(int32, optional, tag = "1", default = "-1")]
1681        pub dir_index: ::core::option::Option<i32>,
1682        #[prost(uint32, repeated, packed = "false", tag = "2")]
1683        pub type_instances: ::prost::alloc::vec::Vec<u32>,
1684    }
1685}
1686#[derive(serde::Serialize, serde::Deserialize)]
1687#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1688pub struct CgcToGcMsgMasterAckResponse {
1689    #[prost(int32, optional, tag = "1", default = "2")]
1690    pub eresult: ::core::option::Option<i32>,
1691}
1692#[derive(serde::Serialize, serde::Deserialize)]
1693#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1694pub struct CMsgGcToGcUniverseStartup {
1695    #[prost(bool, optional, tag = "1")]
1696    pub is_initial_startup: ::core::option::Option<bool>,
1697}
1698#[derive(serde::Serialize, serde::Deserialize)]
1699#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1700pub struct CMsgGcToGcUniverseStartupResponse {
1701    #[prost(int32, optional, tag = "1")]
1702    pub eresult: ::core::option::Option<i32>,
1703}
1704#[derive(serde::Serialize, serde::Deserialize)]
1705#[derive(Clone, PartialEq, ::prost::Message)]
1706pub struct CgcToGcMsgMasterStartupComplete {
1707    #[prost(message, repeated, tag = "1")]
1708    pub gc_info: ::prost::alloc::vec::Vec<cgc_to_gc_msg_master_startup_complete::GcInfo>,
1709}
1710/// Nested message and enum types in `CGCToGCMsgMasterStartupComplete`.
1711pub mod cgc_to_gc_msg_master_startup_complete {
1712    #[derive(serde::Serialize, serde::Deserialize)]
1713    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1714    pub struct GcInfo {
1715        #[prost(int32, optional, tag = "1", default = "-1")]
1716        pub dir_index: ::core::option::Option<i32>,
1717        #[prost(string, optional, tag = "2")]
1718        pub machine_name: ::core::option::Option<::prost::alloc::string::String>,
1719    }
1720}
1721#[derive(serde::Serialize, serde::Deserialize)]
1722#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1723pub struct CgcToGcMsgRouted {
1724    #[prost(uint32, optional, tag = "1")]
1725    pub msg_type: ::core::option::Option<u32>,
1726    #[prost(fixed64, optional, tag = "2")]
1727    pub sender_id: ::core::option::Option<u64>,
1728    #[prost(bytes = "vec", optional, tag = "3")]
1729    pub net_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1730}
1731#[derive(serde::Serialize, serde::Deserialize)]
1732#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1733pub struct CgcToGcMsgRoutedReply {
1734    #[prost(uint32, optional, tag = "1")]
1735    pub msg_type: ::core::option::Option<u32>,
1736    #[prost(bytes = "vec", optional, tag = "2")]
1737    pub net_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1738}
1739#[derive(serde::Serialize, serde::Deserialize)]
1740#[derive(Clone, PartialEq, ::prost::Message)]
1741pub struct CMsgGcUpdateSubGcSessionInfo {
1742    #[prost(message, repeated, tag = "1")]
1743    pub updates: ::prost::alloc::vec::Vec<
1744        c_msg_gc_update_sub_gc_session_info::CMsgUpdate,
1745    >,
1746}
1747/// Nested message and enum types in `CMsgGCUpdateSubGCSessionInfo`.
1748pub mod c_msg_gc_update_sub_gc_session_info {
1749    #[derive(serde::Serialize, serde::Deserialize)]
1750    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1751    pub struct CMsgUpdate {
1752        #[prost(fixed64, optional, tag = "1")]
1753        pub steamid: ::core::option::Option<u64>,
1754        #[prost(fixed32, optional, tag = "2")]
1755        pub ip: ::core::option::Option<u32>,
1756        #[prost(bool, optional, tag = "3")]
1757        pub trusted: ::core::option::Option<bool>,
1758    }
1759}
1760#[derive(serde::Serialize, serde::Deserialize)]
1761#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1762pub struct CMsgGcRequestSubGcSessionInfo {
1763    #[prost(fixed64, optional, tag = "1")]
1764    pub steamid: ::core::option::Option<u64>,
1765}
1766#[derive(serde::Serialize, serde::Deserialize)]
1767#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1768pub struct CMsgGcRequestSubGcSessionInfoResponse {
1769    #[prost(fixed32, optional, tag = "1")]
1770    pub ip: ::core::option::Option<u32>,
1771    #[prost(bool, optional, tag = "2")]
1772    pub trusted: ::core::option::Option<bool>,
1773    #[prost(uint32, optional, tag = "3")]
1774    pub port: ::core::option::Option<u32>,
1775    #[prost(bool, optional, tag = "4")]
1776    pub success: ::core::option::Option<bool>,
1777}
1778#[derive(serde::Serialize, serde::Deserialize)]
1779#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1780pub struct CMsgSoCacheHaveVersion {
1781    #[prost(message, optional, tag = "1")]
1782    pub soid: ::core::option::Option<CMsgSoidOwner>,
1783    #[prost(fixed64, optional, tag = "2")]
1784    pub version: ::core::option::Option<u64>,
1785    #[prost(uint32, optional, tag = "3")]
1786    pub service_id: ::core::option::Option<u32>,
1787    #[prost(uint32, optional, tag = "4")]
1788    pub cached_file_version: ::core::option::Option<u32>,
1789}
1790#[derive(serde::Serialize, serde::Deserialize)]
1791#[derive(Clone, PartialEq, ::prost::Message)]
1792pub struct CMsgClientHello {
1793    #[prost(uint32, optional, tag = "1")]
1794    pub version: ::core::option::Option<u32>,
1795    #[prost(message, repeated, tag = "2")]
1796    pub socache_have_versions: ::prost::alloc::vec::Vec<CMsgSoCacheHaveVersion>,
1797    #[prost(uint32, optional, tag = "3")]
1798    pub client_session_need: ::core::option::Option<u32>,
1799    #[prost(
1800        enumeration = "PartnerAccountType",
1801        optional,
1802        tag = "4",
1803        default = "PartnerNone"
1804    )]
1805    pub client_launcher: ::core::option::Option<i32>,
1806    #[prost(string, optional, tag = "5")]
1807    pub secret_key: ::core::option::Option<::prost::alloc::string::String>,
1808    #[prost(uint32, optional, tag = "6")]
1809    pub client_language: ::core::option::Option<u32>,
1810    #[prost(enumeration = "ESourceEngine", optional, tag = "7", default = "KEseSource1")]
1811    pub engine: ::core::option::Option<i32>,
1812    #[prost(bytes = "vec", optional, tag = "8")]
1813    pub steamdatagram_login: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1814    #[prost(uint32, optional, tag = "9")]
1815    pub platform_id: ::core::option::Option<u32>,
1816    #[prost(bytes = "vec", optional, tag = "10")]
1817    pub game_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1818    #[prost(int32, optional, tag = "11")]
1819    pub os_type: ::core::option::Option<i32>,
1820    #[prost(uint32, optional, tag = "12")]
1821    pub render_system: ::core::option::Option<u32>,
1822    #[prost(uint32, optional, tag = "13")]
1823    pub render_system_req: ::core::option::Option<u32>,
1824    #[prost(uint32, optional, tag = "14")]
1825    pub screen_width: ::core::option::Option<u32>,
1826    #[prost(uint32, optional, tag = "15")]
1827    pub screen_height: ::core::option::Option<u32>,
1828    #[prost(uint32, optional, tag = "16")]
1829    pub screen_refresh: ::core::option::Option<u32>,
1830    #[prost(uint32, optional, tag = "17")]
1831    pub render_width: ::core::option::Option<u32>,
1832    #[prost(uint32, optional, tag = "18")]
1833    pub render_height: ::core::option::Option<u32>,
1834    #[prost(uint32, optional, tag = "19")]
1835    pub swap_width: ::core::option::Option<u32>,
1836    #[prost(uint32, optional, tag = "20")]
1837    pub swap_height: ::core::option::Option<u32>,
1838    #[prost(bool, optional, tag = "22")]
1839    pub is_steam_china: ::core::option::Option<bool>,
1840    #[prost(bool, optional, tag = "24")]
1841    pub is_steam_china_client: ::core::option::Option<bool>,
1842    #[prost(string, optional, tag = "23")]
1843    pub platform_name: ::core::option::Option<::prost::alloc::string::String>,
1844}
1845#[derive(serde::Serialize, serde::Deserialize)]
1846#[derive(Clone, PartialEq, ::prost::Message)]
1847pub struct CMsgClientWelcome {
1848    #[prost(uint32, optional, tag = "1")]
1849    pub version: ::core::option::Option<u32>,
1850    #[prost(bytes = "vec", optional, tag = "2")]
1851    pub game_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1852    #[prost(message, repeated, tag = "3")]
1853    pub outofdate_subscribed_caches: ::prost::alloc::vec::Vec<CMsgSoCacheSubscribed>,
1854    #[prost(message, repeated, tag = "4")]
1855    pub uptodate_subscribed_caches: ::prost::alloc::vec::Vec<
1856        CMsgSoCacheSubscriptionCheck,
1857    >,
1858    #[prost(message, optional, tag = "5")]
1859    pub location: ::core::option::Option<c_msg_client_welcome::Location>,
1860    #[prost(uint32, optional, tag = "9")]
1861    pub gc_socache_file_version: ::core::option::Option<u32>,
1862    #[prost(string, optional, tag = "10")]
1863    pub txn_country_code: ::core::option::Option<::prost::alloc::string::String>,
1864    #[prost(bytes = "vec", optional, tag = "11")]
1865    pub game_data2: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
1866    #[prost(uint32, optional, tag = "12")]
1867    pub rtime32_gc_welcome_timestamp: ::core::option::Option<u32>,
1868    #[prost(uint32, optional, tag = "13")]
1869    pub currency: ::core::option::Option<u32>,
1870    #[prost(uint32, optional, tag = "14")]
1871    pub balance: ::core::option::Option<u32>,
1872    #[prost(string, optional, tag = "15")]
1873    pub balance_url: ::core::option::Option<::prost::alloc::string::String>,
1874    #[prost(bool, optional, tag = "16")]
1875    pub has_accepted_china_ssa: ::core::option::Option<bool>,
1876    #[prost(bool, optional, tag = "17")]
1877    pub is_banned_steam_china: ::core::option::Option<bool>,
1878    #[prost(message, optional, tag = "18")]
1879    pub additional_welcome_msgs: ::core::option::Option<CExtraMsgBlock>,
1880    #[prost(message, optional, tag = "20")]
1881    pub steam_learn_server_info: ::core::option::Option<CMsgSteamLearnServerInfo>,
1882}
1883/// Nested message and enum types in `CMsgClientWelcome`.
1884pub mod c_msg_client_welcome {
1885    #[derive(serde::Serialize, serde::Deserialize)]
1886    #[derive(Clone, PartialEq, ::prost::Message)]
1887    pub struct Location {
1888        #[prost(float, optional, tag = "1")]
1889        pub latitude: ::core::option::Option<f32>,
1890        #[prost(float, optional, tag = "2")]
1891        pub longitude: ::core::option::Option<f32>,
1892        #[prost(string, optional, tag = "3")]
1893        pub country: ::core::option::Option<::prost::alloc::string::String>,
1894    }
1895}
1896#[derive(serde::Serialize, serde::Deserialize)]
1897#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1898pub struct CMsgConnectionStatus {
1899    #[prost(
1900        enumeration = "GcConnectionStatus",
1901        optional,
1902        tag = "1",
1903        default = "HaveSession"
1904    )]
1905    pub status: ::core::option::Option<i32>,
1906    #[prost(uint32, optional, tag = "2")]
1907    pub client_session_need: ::core::option::Option<u32>,
1908    #[prost(int32, optional, tag = "3")]
1909    pub queue_position: ::core::option::Option<i32>,
1910    #[prost(int32, optional, tag = "4")]
1911    pub queue_size: ::core::option::Option<i32>,
1912    #[prost(int32, optional, tag = "5")]
1913    pub wait_seconds: ::core::option::Option<i32>,
1914    #[prost(int32, optional, tag = "6")]
1915    pub estimated_wait_seconds_remaining: ::core::option::Option<i32>,
1916}
1917#[derive(serde::Serialize, serde::Deserialize)]
1918#[derive(Clone, PartialEq, ::prost::Message)]
1919pub struct CMsgGcToGcsoCacheSubscribe {
1920    #[prost(fixed64, optional, tag = "1")]
1921    pub subscriber: ::core::option::Option<u64>,
1922    #[prost(fixed64, optional, tag = "2")]
1923    pub subscribe_to_id: ::core::option::Option<u64>,
1924    #[prost(fixed64, optional, tag = "3")]
1925    pub sync_version: ::core::option::Option<u64>,
1926    #[prost(message, repeated, tag = "4")]
1927    pub have_versions: ::prost::alloc::vec::Vec<
1928        c_msg_gc_to_gcso_cache_subscribe::CMsgHaveVersions,
1929    >,
1930    #[prost(uint32, optional, tag = "5")]
1931    pub subscribe_to_type: ::core::option::Option<u32>,
1932}
1933/// Nested message and enum types in `CMsgGCToGCSOCacheSubscribe`.
1934pub mod c_msg_gc_to_gcso_cache_subscribe {
1935    #[derive(serde::Serialize, serde::Deserialize)]
1936    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1937    pub struct CMsgHaveVersions {
1938        #[prost(uint32, optional, tag = "1")]
1939        pub service_id: ::core::option::Option<u32>,
1940        #[prost(uint64, optional, tag = "2")]
1941        pub version: ::core::option::Option<u64>,
1942    }
1943}
1944#[derive(serde::Serialize, serde::Deserialize)]
1945#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1946pub struct CMsgGcToGcsoCacheUnsubscribe {
1947    #[prost(fixed64, optional, tag = "1")]
1948    pub subscriber: ::core::option::Option<u64>,
1949    #[prost(fixed64, optional, tag = "2")]
1950    pub unsubscribe_from_id: ::core::option::Option<u64>,
1951    #[prost(uint32, optional, tag = "3")]
1952    pub unsubscribe_from_type: ::core::option::Option<u32>,
1953}
1954#[derive(serde::Serialize, serde::Deserialize)]
1955#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1956pub struct CMsgGcClientPing {}
1957#[derive(serde::Serialize, serde::Deserialize)]
1958#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1959pub struct CMsgGcToGcForwardAccountDetails {
1960    #[prost(fixed64, optional, tag = "1")]
1961    pub steamid: ::core::option::Option<u64>,
1962    #[prost(message, optional, tag = "2")]
1963    pub account_details: ::core::option::Option<CgcSystemMsgGetAccountDetailsResponse>,
1964    #[prost(uint32, optional, tag = "3")]
1965    pub age_seconds: ::core::option::Option<u32>,
1966}
1967#[derive(serde::Serialize, serde::Deserialize)]
1968#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
1969pub struct CMsgGcToGcLoadSessionSoCache {
1970    #[prost(uint32, optional, tag = "1")]
1971    pub account_id: ::core::option::Option<u32>,
1972    #[prost(message, optional, tag = "2")]
1973    pub forward_account_details: ::core::option::Option<CMsgGcToGcForwardAccountDetails>,
1974}
1975#[derive(serde::Serialize, serde::Deserialize)]
1976#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1977pub struct CMsgGcToGcLoadSessionSoCacheResponse {}
1978#[derive(serde::Serialize, serde::Deserialize)]
1979#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1980pub struct CMsgGcToGcUpdateSessionStats {
1981    #[prost(uint32, optional, tag = "1")]
1982    pub user_sessions: ::core::option::Option<u32>,
1983    #[prost(uint32, optional, tag = "2")]
1984    pub server_sessions: ::core::option::Option<u32>,
1985    #[prost(bool, optional, tag = "3")]
1986    pub in_logon_surge: ::core::option::Option<bool>,
1987}
1988#[derive(serde::Serialize, serde::Deserialize)]
1989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
1990pub struct CMsgGcToClientRequestDropped {}
1991#[derive(serde::Serialize, serde::Deserialize)]
1992#[derive(Clone, PartialEq, ::prost::Message)]
1993pub struct CWorkshopPopulateItemDescriptionsRequest {
1994    #[prost(uint32, optional, tag = "1")]
1995    pub appid: ::core::option::Option<u32>,
1996    #[prost(message, repeated, tag = "2")]
1997    pub languages: ::prost::alloc::vec::Vec<
1998        c_workshop_populate_item_descriptions_request::ItemDescriptionsLanguageBlock,
1999    >,
2000}
2001/// Nested message and enum types in `CWorkshop_PopulateItemDescriptions_Request`.
2002pub mod c_workshop_populate_item_descriptions_request {
2003    #[derive(serde::Serialize, serde::Deserialize)]
2004    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2005    pub struct SingleItemDescription {
2006        #[prost(uint32, optional, tag = "1")]
2007        pub gameitemid: ::core::option::Option<u32>,
2008        #[prost(string, optional, tag = "2")]
2009        pub item_description: ::core::option::Option<::prost::alloc::string::String>,
2010    }
2011    #[derive(serde::Serialize, serde::Deserialize)]
2012    #[derive(Clone, PartialEq, ::prost::Message)]
2013    pub struct ItemDescriptionsLanguageBlock {
2014        #[prost(string, optional, tag = "1")]
2015        pub language: ::core::option::Option<::prost::alloc::string::String>,
2016        #[prost(message, repeated, tag = "2")]
2017        pub descriptions: ::prost::alloc::vec::Vec<SingleItemDescription>,
2018    }
2019}
2020#[derive(serde::Serialize, serde::Deserialize)]
2021#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2022pub struct CWorkshopGetContributorsRequest {
2023    #[prost(uint32, optional, tag = "1")]
2024    pub appid: ::core::option::Option<u32>,
2025    #[prost(uint32, optional, tag = "2")]
2026    pub gameitemid: ::core::option::Option<u32>,
2027}
2028#[derive(serde::Serialize, serde::Deserialize)]
2029#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2030pub struct CWorkshopGetContributorsResponse {
2031    #[prost(fixed64, repeated, packed = "false", tag = "1")]
2032    pub contributors: ::prost::alloc::vec::Vec<u64>,
2033}
2034#[derive(serde::Serialize, serde::Deserialize)]
2035#[derive(Clone, PartialEq, ::prost::Message)]
2036pub struct CWorkshopSetItemPaymentRulesRequest {
2037    #[prost(uint32, optional, tag = "1")]
2038    pub appid: ::core::option::Option<u32>,
2039    #[prost(uint32, optional, tag = "2")]
2040    pub gameitemid: ::core::option::Option<u32>,
2041    #[prost(message, repeated, tag = "3")]
2042    pub associated_workshop_files: ::prost::alloc::vec::Vec<
2043        c_workshop_set_item_payment_rules_request::WorkshopItemPaymentRule,
2044    >,
2045    #[prost(message, repeated, tag = "4")]
2046    pub partner_accounts: ::prost::alloc::vec::Vec<
2047        c_workshop_set_item_payment_rules_request::PartnerItemPaymentRule,
2048    >,
2049    #[prost(bool, optional, tag = "5")]
2050    pub validate_only: ::core::option::Option<bool>,
2051    #[prost(bool, optional, tag = "6")]
2052    pub make_workshop_files_subscribable: ::core::option::Option<bool>,
2053    #[prost(message, optional, tag = "7")]
2054    pub associated_workshop_file_for_direct_payments: ::core::option::Option<
2055        c_workshop_set_item_payment_rules_request::WorkshopDirectPaymentRule,
2056    >,
2057}
2058/// Nested message and enum types in `CWorkshop_SetItemPaymentRules_Request`.
2059pub mod c_workshop_set_item_payment_rules_request {
2060    #[derive(serde::Serialize, serde::Deserialize)]
2061    #[derive(Clone, PartialEq, ::prost::Message)]
2062    pub struct WorkshopItemPaymentRule {
2063        #[prost(uint64, optional, tag = "1")]
2064        pub workshop_file_id: ::core::option::Option<u64>,
2065        #[prost(float, optional, tag = "2")]
2066        pub revenue_percentage: ::core::option::Option<f32>,
2067        #[prost(string, optional, tag = "3")]
2068        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2069        #[prost(uint32, optional, tag = "4", default = "1")]
2070        pub rule_type: ::core::option::Option<u32>,
2071    }
2072    #[derive(serde::Serialize, serde::Deserialize)]
2073    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2074    pub struct WorkshopDirectPaymentRule {
2075        #[prost(uint64, optional, tag = "1")]
2076        pub workshop_file_id: ::core::option::Option<u64>,
2077        #[prost(string, optional, tag = "2")]
2078        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2079    }
2080    #[derive(serde::Serialize, serde::Deserialize)]
2081    #[derive(Clone, PartialEq, ::prost::Message)]
2082    pub struct PartnerItemPaymentRule {
2083        #[prost(uint32, optional, tag = "1")]
2084        pub account_id: ::core::option::Option<u32>,
2085        #[prost(float, optional, tag = "2")]
2086        pub revenue_percentage: ::core::option::Option<f32>,
2087        #[prost(string, optional, tag = "3")]
2088        pub rule_description: ::core::option::Option<::prost::alloc::string::String>,
2089    }
2090}
2091#[derive(serde::Serialize, serde::Deserialize)]
2092#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2093pub struct CWorkshopSetItemPaymentRulesResponse {
2094    #[prost(string, repeated, tag = "1")]
2095    pub validation_errors: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2096}
2097#[derive(serde::Serialize, serde::Deserialize)]
2098#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2099pub struct CCommunityClanAnnouncementInfo {
2100    #[prost(uint64, optional, tag = "1")]
2101    pub gid: ::core::option::Option<u64>,
2102    #[prost(uint64, optional, tag = "2")]
2103    pub clanid: ::core::option::Option<u64>,
2104    #[prost(uint64, optional, tag = "3")]
2105    pub posterid: ::core::option::Option<u64>,
2106    #[prost(string, optional, tag = "4")]
2107    pub headline: ::core::option::Option<::prost::alloc::string::String>,
2108    #[prost(uint32, optional, tag = "5")]
2109    pub posttime: ::core::option::Option<u32>,
2110    #[prost(uint32, optional, tag = "6")]
2111    pub updatetime: ::core::option::Option<u32>,
2112    #[prost(string, optional, tag = "7")]
2113    pub body: ::core::option::Option<::prost::alloc::string::String>,
2114    #[prost(int32, optional, tag = "8")]
2115    pub commentcount: ::core::option::Option<i32>,
2116    #[prost(string, repeated, tag = "9")]
2117    pub tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2118    #[prost(int32, optional, tag = "10")]
2119    pub language: ::core::option::Option<i32>,
2120    #[prost(bool, optional, tag = "11")]
2121    pub hidden: ::core::option::Option<bool>,
2122    #[prost(fixed64, optional, tag = "12")]
2123    pub forum_topic_id: ::core::option::Option<u64>,
2124}
2125#[derive(serde::Serialize, serde::Deserialize)]
2126#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2127pub struct CCommunityGetClanAnnouncementsRequest {
2128    #[prost(uint64, optional, tag = "1")]
2129    pub steamid: ::core::option::Option<u64>,
2130    #[prost(uint32, optional, tag = "2")]
2131    pub offset: ::core::option::Option<u32>,
2132    #[prost(uint32, optional, tag = "3")]
2133    pub count: ::core::option::Option<u32>,
2134    #[prost(uint32, optional, tag = "4")]
2135    pub maxchars: ::core::option::Option<u32>,
2136    #[prost(bool, optional, tag = "5")]
2137    pub strip_html: ::core::option::Option<bool>,
2138    #[prost(string, repeated, tag = "6")]
2139    pub required_tags: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
2140    #[prost(bool, optional, tag = "7")]
2141    pub require_no_tags: ::core::option::Option<bool>,
2142    #[prost(uint32, repeated, packed = "false", tag = "8")]
2143    pub language_preference: ::prost::alloc::vec::Vec<u32>,
2144    #[prost(bool, optional, tag = "9")]
2145    pub hidden_only: ::core::option::Option<bool>,
2146    #[prost(bool, optional, tag = "10")]
2147    pub only_gid: ::core::option::Option<bool>,
2148    #[prost(uint32, optional, tag = "11")]
2149    pub rtime_oldest_date: ::core::option::Option<u32>,
2150    #[prost(bool, optional, tag = "12")]
2151    pub include_hidden: ::core::option::Option<bool>,
2152    #[prost(bool, optional, tag = "13")]
2153    pub include_partner_events: ::core::option::Option<bool>,
2154}
2155#[derive(serde::Serialize, serde::Deserialize)]
2156#[derive(Clone, PartialEq, ::prost::Message)]
2157pub struct CCommunityGetClanAnnouncementsResponse {
2158    #[prost(uint32, optional, tag = "1")]
2159    pub maxchars: ::core::option::Option<u32>,
2160    #[prost(bool, optional, tag = "2")]
2161    pub strip_html: ::core::option::Option<bool>,
2162    #[prost(message, repeated, tag = "3")]
2163    pub announcements: ::prost::alloc::vec::Vec<CCommunityClanAnnouncementInfo>,
2164}
2165#[derive(serde::Serialize, serde::Deserialize)]
2166#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2167pub struct CBroadcastPostGameDataFrameRequest {
2168    #[prost(uint32, optional, tag = "1")]
2169    pub appid: ::core::option::Option<u32>,
2170    #[prost(fixed64, optional, tag = "2")]
2171    pub steamid: ::core::option::Option<u64>,
2172    #[prost(fixed64, optional, tag = "3")]
2173    pub broadcast_id: ::core::option::Option<u64>,
2174    #[prost(bytes = "vec", optional, tag = "4")]
2175    pub frame_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2176}
2177#[derive(serde::Serialize, serde::Deserialize)]
2178#[derive(Clone, PartialEq, ::prost::Message)]
2179pub struct CMsgSerializedSoCache {
2180    #[prost(uint32, optional, tag = "1")]
2181    pub file_version: ::core::option::Option<u32>,
2182    #[prost(message, repeated, tag = "2")]
2183    pub caches: ::prost::alloc::vec::Vec<c_msg_serialized_so_cache::Cache>,
2184    #[prost(uint32, optional, tag = "3")]
2185    pub gc_socache_file_version: ::core::option::Option<u32>,
2186}
2187/// Nested message and enum types in `CMsgSerializedSOCache`.
2188pub mod c_msg_serialized_so_cache {
2189    #[derive(serde::Serialize, serde::Deserialize)]
2190    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2191    pub struct TypeCache {
2192        #[prost(uint32, optional, tag = "1")]
2193        pub r#type: ::core::option::Option<u32>,
2194        #[prost(bytes = "vec", repeated, tag = "2")]
2195        pub objects: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
2196        #[prost(uint32, optional, tag = "3")]
2197        pub service_id: ::core::option::Option<u32>,
2198    }
2199    #[derive(serde::Serialize, serde::Deserialize)]
2200    #[derive(Clone, PartialEq, ::prost::Message)]
2201    pub struct Cache {
2202        #[prost(uint32, optional, tag = "1")]
2203        pub r#type: ::core::option::Option<u32>,
2204        #[prost(uint64, optional, tag = "2")]
2205        pub id: ::core::option::Option<u64>,
2206        #[prost(message, repeated, tag = "3")]
2207        pub versions: ::prost::alloc::vec::Vec<cache::Version>,
2208        #[prost(message, repeated, tag = "4")]
2209        pub type_caches: ::prost::alloc::vec::Vec<TypeCache>,
2210    }
2211    /// Nested message and enum types in `Cache`.
2212    pub mod cache {
2213        #[derive(serde::Serialize, serde::Deserialize)]
2214        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2215        pub struct Version {
2216            #[prost(uint32, optional, tag = "1")]
2217            pub service: ::core::option::Option<u32>,
2218            #[prost(uint64, optional, tag = "2")]
2219            pub version: ::core::option::Option<u64>,
2220        }
2221    }
2222}
2223#[derive(serde::Serialize, serde::Deserialize)]
2224#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2225pub struct CMsgGcToClientPollConvarRequest {
2226    #[prost(string, optional, tag = "1")]
2227    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
2228    #[prost(uint32, optional, tag = "2")]
2229    pub poll_id: ::core::option::Option<u32>,
2230}
2231#[derive(serde::Serialize, serde::Deserialize)]
2232#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2233pub struct CMsgGcToClientPollConvarResponse {
2234    #[prost(uint32, optional, tag = "1")]
2235    pub poll_id: ::core::option::Option<u32>,
2236    #[prost(string, optional, tag = "2")]
2237    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
2238}
2239#[derive(serde::Serialize, serde::Deserialize)]
2240#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2241pub struct CgcMsgCompressedMsgToClient {
2242    #[prost(uint32, optional, tag = "1")]
2243    pub msg_id: ::core::option::Option<u32>,
2244    #[prost(bytes = "vec", optional, tag = "2")]
2245    pub compressed_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2246}
2247#[derive(serde::Serialize, serde::Deserialize)]
2248#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2249pub struct CMsgGcToGcMasterBroadcastMessage {
2250    #[prost(uint32, optional, tag = "1")]
2251    pub users_per_second: ::core::option::Option<u32>,
2252    #[prost(bool, optional, tag = "2")]
2253    pub send_to_users: ::core::option::Option<bool>,
2254    #[prost(bool, optional, tag = "3")]
2255    pub send_to_servers: ::core::option::Option<bool>,
2256    #[prost(uint32, optional, tag = "4")]
2257    pub msg_id: ::core::option::Option<u32>,
2258    #[prost(bytes = "vec", optional, tag = "5")]
2259    pub msg_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2260    #[prost(bool, optional, tag = "6")]
2261    pub trusted_servers_only: ::core::option::Option<bool>,
2262}
2263#[derive(serde::Serialize, serde::Deserialize)]
2264#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2265pub struct CMsgGcToGcMasterSubscribeToCache {
2266    #[prost(uint32, optional, tag = "1")]
2267    pub soid_type: ::core::option::Option<u32>,
2268    #[prost(fixed64, optional, tag = "2")]
2269    pub soid_id: ::core::option::Option<u64>,
2270    #[prost(uint32, repeated, packed = "false", tag = "3")]
2271    pub account_ids: ::prost::alloc::vec::Vec<u32>,
2272    #[prost(fixed64, repeated, packed = "false", tag = "4")]
2273    pub steam_ids: ::prost::alloc::vec::Vec<u64>,
2274}
2275#[derive(serde::Serialize, serde::Deserialize)]
2276#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2277pub struct CMsgGcToGcMasterSubscribeToCacheResponse {}
2278#[derive(serde::Serialize, serde::Deserialize)]
2279#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2280pub struct CMsgGcToGcMasterSubscribeToCacheAsync {
2281    #[prost(message, optional, tag = "1")]
2282    pub subscribe_msg: ::core::option::Option<CMsgGcToGcMasterSubscribeToCache>,
2283}
2284#[derive(serde::Serialize, serde::Deserialize)]
2285#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2286pub struct CMsgGcToGcMasterUnsubscribeFromCache {
2287    #[prost(uint32, optional, tag = "1")]
2288    pub soid_type: ::core::option::Option<u32>,
2289    #[prost(fixed64, optional, tag = "2")]
2290    pub soid_id: ::core::option::Option<u64>,
2291    #[prost(uint32, repeated, packed = "false", tag = "3")]
2292    pub account_ids: ::prost::alloc::vec::Vec<u32>,
2293    #[prost(fixed64, repeated, packed = "false", tag = "4")]
2294    pub steam_ids: ::prost::alloc::vec::Vec<u64>,
2295}
2296#[derive(serde::Serialize, serde::Deserialize)]
2297#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2298pub struct CMsgGcToGcMasterDestroyCache {
2299    #[prost(uint32, optional, tag = "1")]
2300    pub soid_type: ::core::option::Option<u32>,
2301    #[prost(fixed64, optional, tag = "2")]
2302    pub soid_id: ::core::option::Option<u64>,
2303}
2304#[derive(serde::Serialize, serde::Deserialize)]
2305#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2306#[repr(i32)]
2307pub enum ESourceEngine {
2308    KEseSource1 = 0,
2309    KEseSource2 = 1,
2310}
2311impl ESourceEngine {
2312    /// String value of the enum field names used in the ProtoBuf definition.
2313    ///
2314    /// The values are not transformed in any way and thus are considered stable
2315    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2316    pub fn as_str_name(&self) -> &'static str {
2317        match self {
2318            Self::KEseSource1 => "k_ESE_Source1",
2319            Self::KEseSource2 => "k_ESE_Source2",
2320        }
2321    }
2322    /// Creates an enum from field names used in the ProtoBuf definition.
2323    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2324        match value {
2325            "k_ESE_Source1" => Some(Self::KEseSource1),
2326            "k_ESE_Source2" => Some(Self::KEseSource2),
2327            _ => None,
2328        }
2329    }
2330}
2331#[derive(serde::Serialize, serde::Deserialize)]
2332#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2333#[repr(i32)]
2334pub enum PartnerAccountType {
2335    PartnerNone = 0,
2336    PartnerPerfectWorld = 1,
2337    PartnerInvalid = 3,
2338}
2339impl PartnerAccountType {
2340    /// String value of the enum field names used in the ProtoBuf definition.
2341    ///
2342    /// The values are not transformed in any way and thus are considered stable
2343    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2344    pub fn as_str_name(&self) -> &'static str {
2345        match self {
2346            Self::PartnerNone => "PARTNER_NONE",
2347            Self::PartnerPerfectWorld => "PARTNER_PERFECT_WORLD",
2348            Self::PartnerInvalid => "PARTNER_INVALID",
2349        }
2350    }
2351    /// Creates an enum from field names used in the ProtoBuf definition.
2352    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2353        match value {
2354            "PARTNER_NONE" => Some(Self::PartnerNone),
2355            "PARTNER_PERFECT_WORLD" => Some(Self::PartnerPerfectWorld),
2356            "PARTNER_INVALID" => Some(Self::PartnerInvalid),
2357            _ => None,
2358        }
2359    }
2360}
2361#[derive(serde::Serialize, serde::Deserialize)]
2362#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
2363#[repr(i32)]
2364pub enum GcConnectionStatus {
2365    HaveSession = 0,
2366    GcGoingDown = 1,
2367    NoSession = 2,
2368    NoSessionInLogonQueue = 3,
2369    NoSteam = 4,
2370    Suspended = 5,
2371    SteamGoingDown = 6,
2372}
2373impl GcConnectionStatus {
2374    /// String value of the enum field names used in the ProtoBuf definition.
2375    ///
2376    /// The values are not transformed in any way and thus are considered stable
2377    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2378    pub fn as_str_name(&self) -> &'static str {
2379        match self {
2380            Self::HaveSession => "GCConnectionStatus_HAVE_SESSION",
2381            Self::GcGoingDown => "GCConnectionStatus_GC_GOING_DOWN",
2382            Self::NoSession => "GCConnectionStatus_NO_SESSION",
2383            Self::NoSessionInLogonQueue => "GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE",
2384            Self::NoSteam => "GCConnectionStatus_NO_STEAM",
2385            Self::Suspended => "GCConnectionStatus_SUSPENDED",
2386            Self::SteamGoingDown => "GCConnectionStatus_STEAM_GOING_DOWN",
2387        }
2388    }
2389    /// Creates an enum from field names used in the ProtoBuf definition.
2390    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2391        match value {
2392            "GCConnectionStatus_HAVE_SESSION" => Some(Self::HaveSession),
2393            "GCConnectionStatus_GC_GOING_DOWN" => Some(Self::GcGoingDown),
2394            "GCConnectionStatus_NO_SESSION" => Some(Self::NoSession),
2395            "GCConnectionStatus_NO_SESSION_IN_LOGON_QUEUE" => {
2396                Some(Self::NoSessionInLogonQueue)
2397            }
2398            "GCConnectionStatus_NO_STEAM" => Some(Self::NoSteam),
2399            "GCConnectionStatus_SUSPENDED" => Some(Self::Suspended),
2400            "GCConnectionStatus_STEAM_GOING_DOWN" => Some(Self::SteamGoingDown),
2401            _ => None,
2402        }
2403    }
2404}
2405#[derive(serde::Serialize, serde::Deserialize)]
2406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2407pub struct CgcStorePurchaseInitLineItem {
2408    #[prost(uint32, optional, tag = "1")]
2409    pub item_def_id: ::core::option::Option<u32>,
2410    #[prost(uint32, optional, tag = "2")]
2411    pub quantity: ::core::option::Option<u32>,
2412    #[prost(uint32, optional, tag = "3")]
2413    pub cost_in_local_currency: ::core::option::Option<u32>,
2414    #[prost(uint32, optional, tag = "4")]
2415    pub purchase_type: ::core::option::Option<u32>,
2416    #[prost(uint64, optional, tag = "5")]
2417    pub source_reference_id: ::core::option::Option<u64>,
2418    #[prost(int32, optional, tag = "6")]
2419    pub price_index: ::core::option::Option<i32>,
2420}
2421#[derive(serde::Serialize, serde::Deserialize)]
2422#[derive(Clone, PartialEq, ::prost::Message)]
2423pub struct CMsgGcStorePurchaseInit {
2424    #[prost(string, optional, tag = "1")]
2425    pub country: ::core::option::Option<::prost::alloc::string::String>,
2426    #[prost(int32, optional, tag = "2")]
2427    pub language: ::core::option::Option<i32>,
2428    #[prost(int32, optional, tag = "3")]
2429    pub currency: ::core::option::Option<i32>,
2430    #[prost(message, repeated, tag = "4")]
2431    pub line_items: ::prost::alloc::vec::Vec<CgcStorePurchaseInitLineItem>,
2432}
2433#[derive(serde::Serialize, serde::Deserialize)]
2434#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2435pub struct CMsgGcStorePurchaseInitResponse {
2436    #[prost(int32, optional, tag = "1")]
2437    pub result: ::core::option::Option<i32>,
2438    #[prost(uint64, optional, tag = "2")]
2439    pub txn_id: ::core::option::Option<u64>,
2440}
2441#[derive(serde::Serialize, serde::Deserialize)]
2442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2443pub struct CMsgClientPingData {
2444    #[prost(fixed32, repeated, tag = "4")]
2445    pub relay_codes: ::prost::alloc::vec::Vec<u32>,
2446    #[prost(uint32, repeated, tag = "5")]
2447    pub relay_pings: ::prost::alloc::vec::Vec<u32>,
2448    #[prost(uint32, repeated, tag = "8")]
2449    pub region_codes: ::prost::alloc::vec::Vec<u32>,
2450    #[prost(uint32, repeated, tag = "9")]
2451    pub region_pings: ::prost::alloc::vec::Vec<u32>,
2452    #[prost(uint32, optional, tag = "10")]
2453    pub region_ping_failed_bitmask: ::core::option::Option<u32>,
2454}
2455#[derive(serde::Serialize, serde::Deserialize)]
2456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2457pub struct CMsgInviteToParty {
2458    #[prost(fixed64, optional, tag = "1")]
2459    pub steam_id: ::core::option::Option<u64>,
2460    #[prost(uint32, optional, tag = "2")]
2461    pub client_version: ::core::option::Option<u32>,
2462    #[prost(uint32, optional, tag = "3")]
2463    pub team_id: ::core::option::Option<u32>,
2464    #[prost(bool, optional, tag = "4")]
2465    pub as_coach: ::core::option::Option<bool>,
2466    #[prost(message, optional, tag = "5")]
2467    pub ping_data: ::core::option::Option<CMsgClientPingData>,
2468}
2469#[derive(serde::Serialize, serde::Deserialize)]
2470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2471pub struct CMsgInviteToLobby {
2472    #[prost(fixed64, optional, tag = "1")]
2473    pub steam_id: ::core::option::Option<u64>,
2474    #[prost(uint32, optional, tag = "2")]
2475    pub client_version: ::core::option::Option<u32>,
2476}
2477#[derive(serde::Serialize, serde::Deserialize)]
2478#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2479pub struct CMsgInvitationCreated {
2480    #[prost(uint64, optional, tag = "1")]
2481    pub group_id: ::core::option::Option<u64>,
2482    #[prost(fixed64, optional, tag = "2")]
2483    pub steam_id: ::core::option::Option<u64>,
2484    #[prost(bool, optional, tag = "3")]
2485    pub user_offline: ::core::option::Option<bool>,
2486}
2487#[derive(serde::Serialize, serde::Deserialize)]
2488#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2489pub struct CMsgPartyInviteResponse {
2490    #[prost(uint64, optional, tag = "1")]
2491    pub party_id: ::core::option::Option<u64>,
2492    #[prost(bool, optional, tag = "2")]
2493    pub accept: ::core::option::Option<bool>,
2494    #[prost(uint32, optional, tag = "3")]
2495    pub client_version: ::core::option::Option<u32>,
2496    #[prost(message, optional, tag = "8")]
2497    pub ping_data: ::core::option::Option<CMsgClientPingData>,
2498}
2499#[derive(serde::Serialize, serde::Deserialize)]
2500#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2501pub struct CMsgLobbyInviteResponse {
2502    #[prost(fixed64, optional, tag = "1")]
2503    pub lobby_id: ::core::option::Option<u64>,
2504    #[prost(bool, optional, tag = "2")]
2505    pub accept: ::core::option::Option<bool>,
2506    #[prost(uint32, optional, tag = "3")]
2507    pub client_version: ::core::option::Option<u32>,
2508    #[prost(fixed64, optional, tag = "6")]
2509    pub custom_game_crc: ::core::option::Option<u64>,
2510    #[prost(fixed32, optional, tag = "7")]
2511    pub custom_game_timestamp: ::core::option::Option<u32>,
2512}
2513#[derive(serde::Serialize, serde::Deserialize)]
2514#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2515pub struct CMsgKickFromParty {
2516    #[prost(fixed64, optional, tag = "1")]
2517    pub steam_id: ::core::option::Option<u64>,
2518}
2519#[derive(serde::Serialize, serde::Deserialize)]
2520#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2521pub struct CMsgLeaveParty {}
2522#[derive(serde::Serialize, serde::Deserialize)]
2523#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2524pub struct CMsgCustomGameInstallStatus {
2525    #[prost(
2526        enumeration = "ECustomGameInstallStatus",
2527        optional,
2528        tag = "1",
2529        default = "KECustomGameInstallStatusUnknown"
2530    )]
2531    pub status: ::core::option::Option<i32>,
2532    #[prost(string, optional, tag = "2")]
2533    pub message: ::core::option::Option<::prost::alloc::string::String>,
2534    #[prost(fixed32, optional, tag = "3")]
2535    pub latest_timestamp_from_steam: ::core::option::Option<u32>,
2536}
2537#[derive(serde::Serialize, serde::Deserialize)]
2538#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2539pub struct CMsgServerAvailable {
2540    #[prost(message, optional, tag = "1")]
2541    pub custom_game_install_status: ::core::option::Option<CMsgCustomGameInstallStatus>,
2542}
2543#[derive(serde::Serialize, serde::Deserialize)]
2544#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2545pub struct CMsgLanServerAvailable {
2546    #[prost(fixed64, optional, tag = "1")]
2547    pub lobby_id: ::core::option::Option<u64>,
2548}
2549#[derive(serde::Serialize, serde::Deserialize)]
2550#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2551pub struct CsoEconGameAccountClient {
2552    #[prost(uint32, optional, tag = "1", default = "0")]
2553    pub additional_backpack_slots: ::core::option::Option<u32>,
2554    #[prost(bool, optional, tag = "2", default = "false")]
2555    pub trial_account: ::core::option::Option<bool>,
2556    #[prost(bool, optional, tag = "3", default = "true")]
2557    pub eligible_for_online_play: ::core::option::Option<bool>,
2558    #[prost(bool, optional, tag = "4")]
2559    pub need_to_choose_most_helpful_friend: ::core::option::Option<bool>,
2560    #[prost(bool, optional, tag = "5")]
2561    pub in_coaches_list: ::core::option::Option<bool>,
2562    #[prost(fixed32, optional, tag = "6")]
2563    pub trade_ban_expiration: ::core::option::Option<u32>,
2564    #[prost(fixed32, optional, tag = "7")]
2565    pub duel_ban_expiration: ::core::option::Option<u32>,
2566    #[prost(bool, optional, tag = "9", default = "false")]
2567    pub made_first_purchase: ::core::option::Option<bool>,
2568}
2569#[derive(serde::Serialize, serde::Deserialize)]
2570#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2571pub struct CMsgApplyStrangePart {
2572    #[prost(uint64, optional, tag = "1")]
2573    pub strange_part_item_id: ::core::option::Option<u64>,
2574    #[prost(uint64, optional, tag = "2")]
2575    pub item_item_id: ::core::option::Option<u64>,
2576}
2577#[derive(serde::Serialize, serde::Deserialize)]
2578#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2579pub struct CMsgApplyPennantUpgrade {
2580    #[prost(uint64, optional, tag = "1")]
2581    pub upgrade_item_id: ::core::option::Option<u64>,
2582    #[prost(uint64, optional, tag = "2")]
2583    pub pennant_item_id: ::core::option::Option<u64>,
2584}
2585#[derive(serde::Serialize, serde::Deserialize)]
2586#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2587pub struct CMsgApplyEggEssence {
2588    #[prost(uint64, optional, tag = "1")]
2589    pub essence_item_id: ::core::option::Option<u64>,
2590    #[prost(uint64, optional, tag = "2")]
2591    pub egg_item_id: ::core::option::Option<u64>,
2592}
2593#[derive(serde::Serialize, serde::Deserialize)]
2594#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2595pub struct CsoEconItemAttribute {
2596    #[prost(uint32, optional, tag = "1", default = "65535")]
2597    pub def_index: ::core::option::Option<u32>,
2598    #[prost(uint32, optional, tag = "2")]
2599    pub value: ::core::option::Option<u32>,
2600    #[prost(bytes = "vec", optional, tag = "3")]
2601    pub value_bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
2602}
2603#[derive(serde::Serialize, serde::Deserialize)]
2604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2605pub struct CsoEconItemEquipped {
2606    #[prost(uint32, optional, tag = "1")]
2607    pub new_class: ::core::option::Option<u32>,
2608    #[prost(uint32, optional, tag = "2")]
2609    pub new_slot: ::core::option::Option<u32>,
2610}
2611#[derive(serde::Serialize, serde::Deserialize)]
2612#[derive(Clone, PartialEq, ::prost::Message)]
2613pub struct CsoEconItem {
2614    #[prost(uint64, optional, tag = "1")]
2615    pub id: ::core::option::Option<u64>,
2616    #[prost(uint32, optional, tag = "2")]
2617    pub account_id: ::core::option::Option<u32>,
2618    #[prost(uint32, optional, tag = "3")]
2619    pub inventory: ::core::option::Option<u32>,
2620    #[prost(uint32, optional, tag = "4")]
2621    pub def_index: ::core::option::Option<u32>,
2622    #[prost(uint32, optional, tag = "5", default = "1")]
2623    pub quantity: ::core::option::Option<u32>,
2624    #[prost(uint32, optional, tag = "6", default = "1")]
2625    pub level: ::core::option::Option<u32>,
2626    #[prost(uint32, optional, tag = "7", default = "4")]
2627    pub quality: ::core::option::Option<u32>,
2628    #[prost(uint32, optional, tag = "8", default = "0")]
2629    pub flags: ::core::option::Option<u32>,
2630    #[prost(uint32, optional, tag = "9", default = "0")]
2631    pub origin: ::core::option::Option<u32>,
2632    #[prost(message, repeated, tag = "12")]
2633    pub attribute: ::prost::alloc::vec::Vec<CsoEconItemAttribute>,
2634    #[prost(message, optional, boxed, tag = "13")]
2635    pub interior_item: ::core::option::Option<::prost::alloc::boxed::Box<CsoEconItem>>,
2636    #[prost(uint32, optional, tag = "15", default = "0")]
2637    pub style: ::core::option::Option<u32>,
2638    #[prost(uint64, optional, tag = "16")]
2639    pub original_id: ::core::option::Option<u64>,
2640    #[prost(message, repeated, tag = "18")]
2641    pub equipped_state: ::prost::alloc::vec::Vec<CsoEconItemEquipped>,
2642}
2643#[derive(serde::Serialize, serde::Deserialize)]
2644#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2645pub struct CMsgSortItems {
2646    #[prost(uint32, optional, tag = "1")]
2647    pub sort_type: ::core::option::Option<u32>,
2648}
2649#[derive(serde::Serialize, serde::Deserialize)]
2650#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2651pub struct CMsgItemAcknowledged {
2652    #[prost(uint32, optional, tag = "1")]
2653    pub account_id: ::core::option::Option<u32>,
2654    #[prost(uint32, optional, tag = "2")]
2655    pub inventory: ::core::option::Option<u32>,
2656    #[prost(uint32, optional, tag = "3")]
2657    pub def_index: ::core::option::Option<u32>,
2658    #[prost(uint32, optional, tag = "4")]
2659    pub quality: ::core::option::Option<u32>,
2660    #[prost(uint32, optional, tag = "5")]
2661    pub rarity: ::core::option::Option<u32>,
2662    #[prost(uint32, optional, tag = "6")]
2663    pub origin: ::core::option::Option<u32>,
2664}
2665#[derive(serde::Serialize, serde::Deserialize)]
2666#[derive(Clone, PartialEq, ::prost::Message)]
2667pub struct CMsgSetItemPositions {
2668    #[prost(message, repeated, tag = "1")]
2669    pub item_positions: ::prost::alloc::vec::Vec<c_msg_set_item_positions::ItemPosition>,
2670}
2671/// Nested message and enum types in `CMsgSetItemPositions`.
2672pub mod c_msg_set_item_positions {
2673    #[derive(serde::Serialize, serde::Deserialize)]
2674    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2675    pub struct ItemPosition {
2676        #[prost(uint64, optional, tag = "1")]
2677        pub item_id: ::core::option::Option<u64>,
2678        #[prost(uint32, optional, tag = "2")]
2679        pub position: ::core::option::Option<u32>,
2680    }
2681}
2682#[derive(serde::Serialize, serde::Deserialize)]
2683#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2684pub struct CMsgGcStorePurchaseCancel {
2685    #[prost(uint64, optional, tag = "1")]
2686    pub txn_id: ::core::option::Option<u64>,
2687}
2688#[derive(serde::Serialize, serde::Deserialize)]
2689#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2690pub struct CMsgGcStorePurchaseCancelResponse {
2691    #[prost(uint32, optional, tag = "1")]
2692    pub result: ::core::option::Option<u32>,
2693}
2694#[derive(serde::Serialize, serde::Deserialize)]
2695#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2696pub struct CMsgGcStorePurchaseFinalize {
2697    #[prost(uint64, optional, tag = "1")]
2698    pub txn_id: ::core::option::Option<u64>,
2699}
2700#[derive(serde::Serialize, serde::Deserialize)]
2701#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2702pub struct CMsgGcStorePurchaseFinalizeResponse {
2703    #[prost(uint32, optional, tag = "1")]
2704    pub result: ::core::option::Option<u32>,
2705    #[prost(uint64, repeated, packed = "false", tag = "2")]
2706    pub item_ids: ::prost::alloc::vec::Vec<u64>,
2707}
2708#[derive(serde::Serialize, serde::Deserialize)]
2709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2710pub struct CMsgGcToGcBannedWordListUpdated {
2711    #[prost(uint32, optional, tag = "1")]
2712    pub group_id: ::core::option::Option<u32>,
2713}
2714#[derive(serde::Serialize, serde::Deserialize)]
2715#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2716pub struct CMsgGcToGcDirtySdoCache {
2717    #[prost(uint32, optional, tag = "1")]
2718    pub sdo_type: ::core::option::Option<u32>,
2719    #[prost(uint64, optional, tag = "2")]
2720    pub key_uint64: ::core::option::Option<u64>,
2721}
2722#[derive(serde::Serialize, serde::Deserialize)]
2723#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2724pub struct CMsgSdoNoMemcached {}
2725#[derive(serde::Serialize, serde::Deserialize)]
2726#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2727pub struct CMsgGcToGcUpdateSqlKeyValue {
2728    #[prost(string, optional, tag = "1")]
2729    pub key_name: ::core::option::Option<::prost::alloc::string::String>,
2730}
2731#[derive(serde::Serialize, serde::Deserialize)]
2732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2733pub struct CMsgGcServerVersionUpdated {
2734    #[prost(uint32, optional, tag = "1")]
2735    pub server_version: ::core::option::Option<u32>,
2736}
2737#[derive(serde::Serialize, serde::Deserialize)]
2738#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2739pub struct CMsgGcClientVersionUpdated {
2740    #[prost(uint32, optional, tag = "1")]
2741    pub client_version: ::core::option::Option<u32>,
2742}
2743#[derive(serde::Serialize, serde::Deserialize)]
2744#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2745pub struct CMsgGcToGcWebApiAccountChanged {}
2746#[derive(serde::Serialize, serde::Deserialize)]
2747#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2748pub struct CMsgExtractGems {
2749    #[prost(uint64, optional, tag = "1")]
2750    pub tool_item_id: ::core::option::Option<u64>,
2751    #[prost(uint64, optional, tag = "2")]
2752    pub item_item_id: ::core::option::Option<u64>,
2753    #[prost(uint32, optional, tag = "3", default = "65535")]
2754    pub item_socket_id: ::core::option::Option<u32>,
2755}
2756#[derive(serde::Serialize, serde::Deserialize)]
2757#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2758pub struct CMsgExtractGemsResponse {
2759    #[prost(uint64, optional, tag = "1")]
2760    pub item_id: ::core::option::Option<u64>,
2761    #[prost(
2762        enumeration = "c_msg_extract_gems_response::EExtractGems",
2763        optional,
2764        tag = "2",
2765        default = "KExtractGemsSucceeded"
2766    )]
2767    pub response: ::core::option::Option<i32>,
2768}
2769/// Nested message and enum types in `CMsgExtractGemsResponse`.
2770pub mod c_msg_extract_gems_response {
2771    #[derive(serde::Serialize, serde::Deserialize)]
2772    #[derive(
2773        Clone,
2774        Copy,
2775        Debug,
2776        PartialEq,
2777        Eq,
2778        Hash,
2779        PartialOrd,
2780        Ord,
2781        ::prost::Enumeration
2782    )]
2783    #[repr(i32)]
2784    pub enum EExtractGems {
2785        KExtractGemsSucceeded = 0,
2786        KExtractGemsFailedToolIsInvalid = 1,
2787        KExtractGemsFailedItemIsInvalid = 2,
2788        KExtractGemsFailedToolCannotRemoveGem = 3,
2789        KExtractGemsFailedFailedToRemoveGem = 4,
2790    }
2791    impl EExtractGems {
2792        /// String value of the enum field names used in the ProtoBuf definition.
2793        ///
2794        /// The values are not transformed in any way and thus are considered stable
2795        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2796        pub fn as_str_name(&self) -> &'static str {
2797            match self {
2798                Self::KExtractGemsSucceeded => "k_ExtractGems_Succeeded",
2799                Self::KExtractGemsFailedToolIsInvalid => {
2800                    "k_ExtractGems_Failed_ToolIsInvalid"
2801                }
2802                Self::KExtractGemsFailedItemIsInvalid => {
2803                    "k_ExtractGems_Failed_ItemIsInvalid"
2804                }
2805                Self::KExtractGemsFailedToolCannotRemoveGem => {
2806                    "k_ExtractGems_Failed_ToolCannotRemoveGem"
2807                }
2808                Self::KExtractGemsFailedFailedToRemoveGem => {
2809                    "k_ExtractGems_Failed_FailedToRemoveGem"
2810                }
2811            }
2812        }
2813        /// Creates an enum from field names used in the ProtoBuf definition.
2814        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2815            match value {
2816                "k_ExtractGems_Succeeded" => Some(Self::KExtractGemsSucceeded),
2817                "k_ExtractGems_Failed_ToolIsInvalid" => {
2818                    Some(Self::KExtractGemsFailedToolIsInvalid)
2819                }
2820                "k_ExtractGems_Failed_ItemIsInvalid" => {
2821                    Some(Self::KExtractGemsFailedItemIsInvalid)
2822                }
2823                "k_ExtractGems_Failed_ToolCannotRemoveGem" => {
2824                    Some(Self::KExtractGemsFailedToolCannotRemoveGem)
2825                }
2826                "k_ExtractGems_Failed_FailedToRemoveGem" => {
2827                    Some(Self::KExtractGemsFailedFailedToRemoveGem)
2828                }
2829                _ => None,
2830            }
2831        }
2832    }
2833}
2834#[derive(serde::Serialize, serde::Deserialize)]
2835#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2836pub struct CMsgAddSocket {
2837    #[prost(uint64, optional, tag = "1")]
2838    pub tool_item_id: ::core::option::Option<u64>,
2839    #[prost(uint64, optional, tag = "2")]
2840    pub item_item_id: ::core::option::Option<u64>,
2841    #[prost(bool, optional, tag = "3")]
2842    pub unusual: ::core::option::Option<bool>,
2843}
2844#[derive(serde::Serialize, serde::Deserialize)]
2845#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2846pub struct CMsgAddSocketResponse {
2847    #[prost(uint64, optional, tag = "1")]
2848    pub item_id: ::core::option::Option<u64>,
2849    #[prost(uint32, repeated, packed = "false", tag = "2")]
2850    pub updated_socket_index: ::prost::alloc::vec::Vec<u32>,
2851    #[prost(
2852        enumeration = "c_msg_add_socket_response::EAddSocket",
2853        optional,
2854        tag = "3",
2855        default = "KAddSocketSucceeded"
2856    )]
2857    pub response: ::core::option::Option<i32>,
2858}
2859/// Nested message and enum types in `CMsgAddSocketResponse`.
2860pub mod c_msg_add_socket_response {
2861    #[derive(serde::Serialize, serde::Deserialize)]
2862    #[derive(
2863        Clone,
2864        Copy,
2865        Debug,
2866        PartialEq,
2867        Eq,
2868        Hash,
2869        PartialOrd,
2870        Ord,
2871        ::prost::Enumeration
2872    )]
2873    #[repr(i32)]
2874    pub enum EAddSocket {
2875        KAddSocketSucceeded = 0,
2876        KAddSocketFailedToolIsInvalid = 1,
2877        KAddSocketFailedItemCannotBeSocketed = 2,
2878        KAddSocketFailedFailedToAddSocket = 3,
2879    }
2880    impl EAddSocket {
2881        /// String value of the enum field names used in the ProtoBuf definition.
2882        ///
2883        /// The values are not transformed in any way and thus are considered stable
2884        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2885        pub fn as_str_name(&self) -> &'static str {
2886            match self {
2887                Self::KAddSocketSucceeded => "k_AddSocket_Succeeded",
2888                Self::KAddSocketFailedToolIsInvalid => "k_AddSocket_Failed_ToolIsInvalid",
2889                Self::KAddSocketFailedItemCannotBeSocketed => {
2890                    "k_AddSocket_Failed_ItemCannotBeSocketed"
2891                }
2892                Self::KAddSocketFailedFailedToAddSocket => {
2893                    "k_AddSocket_Failed_FailedToAddSocket"
2894                }
2895            }
2896        }
2897        /// Creates an enum from field names used in the ProtoBuf definition.
2898        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2899            match value {
2900                "k_AddSocket_Succeeded" => Some(Self::KAddSocketSucceeded),
2901                "k_AddSocket_Failed_ToolIsInvalid" => {
2902                    Some(Self::KAddSocketFailedToolIsInvalid)
2903                }
2904                "k_AddSocket_Failed_ItemCannotBeSocketed" => {
2905                    Some(Self::KAddSocketFailedItemCannotBeSocketed)
2906                }
2907                "k_AddSocket_Failed_FailedToAddSocket" => {
2908                    Some(Self::KAddSocketFailedFailedToAddSocket)
2909                }
2910                _ => None,
2911            }
2912        }
2913    }
2914}
2915#[derive(serde::Serialize, serde::Deserialize)]
2916#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
2917pub struct CMsgAddItemToSocketData {
2918    #[prost(uint64, optional, tag = "1")]
2919    pub gem_item_id: ::core::option::Option<u64>,
2920    #[prost(uint32, optional, tag = "2", default = "65535")]
2921    pub socket_index: ::core::option::Option<u32>,
2922}
2923#[derive(serde::Serialize, serde::Deserialize)]
2924#[derive(Clone, PartialEq, ::prost::Message)]
2925pub struct CMsgAddItemToSocket {
2926    #[prost(uint64, optional, tag = "1")]
2927    pub item_item_id: ::core::option::Option<u64>,
2928    #[prost(message, repeated, tag = "2")]
2929    pub gems_to_socket: ::prost::alloc::vec::Vec<CMsgAddItemToSocketData>,
2930}
2931#[derive(serde::Serialize, serde::Deserialize)]
2932#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
2933pub struct CMsgAddItemToSocketResponse {
2934    #[prost(uint64, optional, tag = "1")]
2935    pub item_item_id: ::core::option::Option<u64>,
2936    #[prost(uint32, repeated, packed = "false", tag = "2")]
2937    pub updated_socket_index: ::prost::alloc::vec::Vec<u32>,
2938    #[prost(
2939        enumeration = "c_msg_add_item_to_socket_response::EAddGem",
2940        optional,
2941        tag = "3",
2942        default = "KAddGemSucceeded"
2943    )]
2944    pub response: ::core::option::Option<i32>,
2945}
2946/// Nested message and enum types in `CMsgAddItemToSocketResponse`.
2947pub mod c_msg_add_item_to_socket_response {
2948    #[derive(serde::Serialize, serde::Deserialize)]
2949    #[derive(
2950        Clone,
2951        Copy,
2952        Debug,
2953        PartialEq,
2954        Eq,
2955        Hash,
2956        PartialOrd,
2957        Ord,
2958        ::prost::Enumeration
2959    )]
2960    #[repr(i32)]
2961    pub enum EAddGem {
2962        KAddGemSucceeded = 0,
2963        KAddGemFailedGemIsInvalid = 1,
2964        KAddGemFailedItemIsInvalid = 2,
2965        KAddGemFailedFailedToAddGem = 3,
2966        KAddGemFailedInvalidGemTypeForSocket = 4,
2967        KAddGemFailedInvalidGemTypeForHero = 5,
2968        KAddGemFailedInvalidGemTypeForSlot = 6,
2969        KAddGemFailedSocketContainsUnremovableGem = 7,
2970    }
2971    impl EAddGem {
2972        /// String value of the enum field names used in the ProtoBuf definition.
2973        ///
2974        /// The values are not transformed in any way and thus are considered stable
2975        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
2976        pub fn as_str_name(&self) -> &'static str {
2977            match self {
2978                Self::KAddGemSucceeded => "k_AddGem_Succeeded",
2979                Self::KAddGemFailedGemIsInvalid => "k_AddGem_Failed_GemIsInvalid",
2980                Self::KAddGemFailedItemIsInvalid => "k_AddGem_Failed_ItemIsInvalid",
2981                Self::KAddGemFailedFailedToAddGem => "k_AddGem_Failed_FailedToAddGem",
2982                Self::KAddGemFailedInvalidGemTypeForSocket => {
2983                    "k_AddGem_Failed_InvalidGemTypeForSocket"
2984                }
2985                Self::KAddGemFailedInvalidGemTypeForHero => {
2986                    "k_AddGem_Failed_InvalidGemTypeForHero"
2987                }
2988                Self::KAddGemFailedInvalidGemTypeForSlot => {
2989                    "k_AddGem_Failed_InvalidGemTypeForSlot"
2990                }
2991                Self::KAddGemFailedSocketContainsUnremovableGem => {
2992                    "k_AddGem_Failed_SocketContainsUnremovableGem"
2993                }
2994            }
2995        }
2996        /// Creates an enum from field names used in the ProtoBuf definition.
2997        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
2998            match value {
2999                "k_AddGem_Succeeded" => Some(Self::KAddGemSucceeded),
3000                "k_AddGem_Failed_GemIsInvalid" => Some(Self::KAddGemFailedGemIsInvalid),
3001                "k_AddGem_Failed_ItemIsInvalid" => Some(Self::KAddGemFailedItemIsInvalid),
3002                "k_AddGem_Failed_FailedToAddGem" => {
3003                    Some(Self::KAddGemFailedFailedToAddGem)
3004                }
3005                "k_AddGem_Failed_InvalidGemTypeForSocket" => {
3006                    Some(Self::KAddGemFailedInvalidGemTypeForSocket)
3007                }
3008                "k_AddGem_Failed_InvalidGemTypeForHero" => {
3009                    Some(Self::KAddGemFailedInvalidGemTypeForHero)
3010                }
3011                "k_AddGem_Failed_InvalidGemTypeForSlot" => {
3012                    Some(Self::KAddGemFailedInvalidGemTypeForSlot)
3013                }
3014                "k_AddGem_Failed_SocketContainsUnremovableGem" => {
3015                    Some(Self::KAddGemFailedSocketContainsUnremovableGem)
3016                }
3017                _ => None,
3018            }
3019        }
3020    }
3021}
3022#[derive(serde::Serialize, serde::Deserialize)]
3023#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3024pub struct CMsgResetStrangeGemCount {
3025    #[prost(uint64, optional, tag = "1")]
3026    pub item_item_id: ::core::option::Option<u64>,
3027    #[prost(uint32, optional, tag = "2", default = "65535")]
3028    pub socket_index: ::core::option::Option<u32>,
3029}
3030#[derive(serde::Serialize, serde::Deserialize)]
3031#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3032pub struct CMsgResetStrangeGemCountResponse {
3033    #[prost(
3034        enumeration = "c_msg_reset_strange_gem_count_response::EResetGem",
3035        optional,
3036        tag = "1",
3037        default = "KResetGemSucceeded"
3038    )]
3039    pub response: ::core::option::Option<i32>,
3040}
3041/// Nested message and enum types in `CMsgResetStrangeGemCountResponse`.
3042pub mod c_msg_reset_strange_gem_count_response {
3043    #[derive(serde::Serialize, serde::Deserialize)]
3044    #[derive(
3045        Clone,
3046        Copy,
3047        Debug,
3048        PartialEq,
3049        Eq,
3050        Hash,
3051        PartialOrd,
3052        Ord,
3053        ::prost::Enumeration
3054    )]
3055    #[repr(i32)]
3056    pub enum EResetGem {
3057        KResetGemSucceeded = 0,
3058        KResetGemFailedFailedToResetGem = 1,
3059        KResetGemFailedItemIsInvalid = 2,
3060        KResetGemFailedInvalidSocketId = 3,
3061        KResetGemFailedSocketCannotBeReset = 4,
3062    }
3063    impl EResetGem {
3064        /// String value of the enum field names used in the ProtoBuf definition.
3065        ///
3066        /// The values are not transformed in any way and thus are considered stable
3067        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3068        pub fn as_str_name(&self) -> &'static str {
3069            match self {
3070                Self::KResetGemSucceeded => "k_ResetGem_Succeeded",
3071                Self::KResetGemFailedFailedToResetGem => {
3072                    "k_ResetGem_Failed_FailedToResetGem"
3073                }
3074                Self::KResetGemFailedItemIsInvalid => "k_ResetGem_Failed_ItemIsInvalid",
3075                Self::KResetGemFailedInvalidSocketId => {
3076                    "k_ResetGem_Failed_InvalidSocketId"
3077                }
3078                Self::KResetGemFailedSocketCannotBeReset => {
3079                    "k_ResetGem_Failed_SocketCannotBeReset"
3080                }
3081            }
3082        }
3083        /// Creates an enum from field names used in the ProtoBuf definition.
3084        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3085            match value {
3086                "k_ResetGem_Succeeded" => Some(Self::KResetGemSucceeded),
3087                "k_ResetGem_Failed_FailedToResetGem" => {
3088                    Some(Self::KResetGemFailedFailedToResetGem)
3089                }
3090                "k_ResetGem_Failed_ItemIsInvalid" => {
3091                    Some(Self::KResetGemFailedItemIsInvalid)
3092                }
3093                "k_ResetGem_Failed_InvalidSocketId" => {
3094                    Some(Self::KResetGemFailedInvalidSocketId)
3095                }
3096                "k_ResetGem_Failed_SocketCannotBeReset" => {
3097                    Some(Self::KResetGemFailedSocketCannotBeReset)
3098                }
3099                _ => None,
3100            }
3101        }
3102    }
3103}
3104#[derive(serde::Serialize, serde::Deserialize)]
3105#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3106pub struct CMsgGcToClientPollFileRequest {
3107    #[prost(string, optional, tag = "1")]
3108    pub file_name: ::core::option::Option<::prost::alloc::string::String>,
3109    #[prost(uint32, optional, tag = "2")]
3110    pub client_version: ::core::option::Option<u32>,
3111    #[prost(uint32, optional, tag = "3")]
3112    pub poll_id: ::core::option::Option<u32>,
3113}
3114#[derive(serde::Serialize, serde::Deserialize)]
3115#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3116pub struct CMsgGcToClientPollFileResponse {
3117    #[prost(uint32, optional, tag = "1")]
3118    pub poll_id: ::core::option::Option<u32>,
3119    #[prost(uint32, optional, tag = "2")]
3120    pub file_size: ::core::option::Option<u32>,
3121    #[prost(uint32, optional, tag = "3")]
3122    pub file_crc: ::core::option::Option<u32>,
3123}
3124#[derive(serde::Serialize, serde::Deserialize)]
3125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3126pub struct CMsgGcToGcPerformManualOp {
3127    #[prost(uint64, optional, tag = "1")]
3128    pub op_id: ::core::option::Option<u64>,
3129    #[prost(uint32, optional, tag = "2")]
3130    pub group_code: ::core::option::Option<u32>,
3131}
3132#[derive(serde::Serialize, serde::Deserialize)]
3133#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3134pub struct CMsgGcToGcPerformManualOpCompleted {
3135    #[prost(bool, optional, tag = "1")]
3136    pub success: ::core::option::Option<bool>,
3137    #[prost(int32, optional, tag = "2", default = "-1")]
3138    pub source_gc: ::core::option::Option<i32>,
3139}
3140#[derive(serde::Serialize, serde::Deserialize)]
3141#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3142pub struct CMsgGcToGcReloadServerRegionSettings {}
3143#[derive(serde::Serialize, serde::Deserialize)]
3144#[derive(Clone, PartialEq, ::prost::Message)]
3145pub struct CMsgGcAdditionalWelcomeMsgList {
3146    #[prost(message, repeated, tag = "1")]
3147    pub welcome_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
3148}
3149#[derive(serde::Serialize, serde::Deserialize)]
3150#[derive(Clone, PartialEq, ::prost::Message)]
3151pub struct CMsgApplyRemoteConVars {
3152    #[prost(message, repeated, tag = "1")]
3153    pub con_vars: ::prost::alloc::vec::Vec<c_msg_apply_remote_con_vars::ConVar>,
3154}
3155/// Nested message and enum types in `CMsgApplyRemoteConVars`.
3156pub mod c_msg_apply_remote_con_vars {
3157    #[derive(serde::Serialize, serde::Deserialize)]
3158    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3159    pub struct ConVar {
3160        #[prost(string, optional, tag = "1")]
3161        pub name: ::core::option::Option<::prost::alloc::string::String>,
3162        #[prost(string, optional, tag = "2")]
3163        pub value: ::core::option::Option<::prost::alloc::string::String>,
3164        #[prost(uint32, optional, tag = "3")]
3165        pub version_min: ::core::option::Option<u32>,
3166        #[prost(uint32, optional, tag = "4")]
3167        pub version_max: ::core::option::Option<u32>,
3168        #[prost(
3169            enumeration = "super::EgcPlatform",
3170            optional,
3171            tag = "5",
3172            default = "KEGcPlatformNone"
3173        )]
3174        pub platform: ::core::option::Option<i32>,
3175    }
3176}
3177#[derive(serde::Serialize, serde::Deserialize)]
3178#[derive(Clone, PartialEq, ::prost::Message)]
3179pub struct CMsgGcToClientApplyRemoteConVars {
3180    #[prost(message, optional, tag = "1")]
3181    pub msg: ::core::option::Option<CMsgApplyRemoteConVars>,
3182}
3183#[derive(serde::Serialize, serde::Deserialize)]
3184#[derive(Clone, PartialEq, ::prost::Message)]
3185pub struct CMsgGcToServerApplyRemoteConVars {
3186    #[prost(message, optional, tag = "1")]
3187    pub msg: ::core::option::Option<CMsgApplyRemoteConVars>,
3188}
3189#[derive(serde::Serialize, serde::Deserialize)]
3190#[derive(Clone, PartialEq, ::prost::Message)]
3191pub struct CMsgClientToGcIntegrityStatus {
3192    #[prost(string, optional, tag = "1")]
3193    pub report: ::core::option::Option<::prost::alloc::string::String>,
3194    #[prost(bool, optional, tag = "2")]
3195    pub secure_allowed: ::core::option::Option<bool>,
3196    #[prost(message, repeated, tag = "3")]
3197    pub diagnostics: ::prost::alloc::vec::Vec<
3198        c_msg_client_to_gc_integrity_status::Keyvalue,
3199    >,
3200}
3201/// Nested message and enum types in `CMsgClientToGCIntegrityStatus`.
3202pub mod c_msg_client_to_gc_integrity_status {
3203    #[derive(serde::Serialize, serde::Deserialize)]
3204    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3205    pub struct Keyvalue {
3206        #[prost(uint32, optional, tag = "1")]
3207        pub id: ::core::option::Option<u32>,
3208        #[prost(uint32, optional, tag = "2")]
3209        pub extended: ::core::option::Option<u32>,
3210        #[prost(uint64, optional, tag = "3")]
3211        pub value: ::core::option::Option<u64>,
3212        #[prost(string, optional, tag = "4")]
3213        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
3214    }
3215}
3216#[derive(serde::Serialize, serde::Deserialize)]
3217#[derive(Clone, PartialEq, ::prost::Message)]
3218pub struct CMsgClientToGcAggregateMetrics {
3219    #[prost(message, repeated, tag = "1")]
3220    pub metrics: ::prost::alloc::vec::Vec<
3221        c_msg_client_to_gc_aggregate_metrics::SingleMetric,
3222    >,
3223}
3224/// Nested message and enum types in `CMsgClientToGCAggregateMetrics`.
3225pub mod c_msg_client_to_gc_aggregate_metrics {
3226    #[derive(serde::Serialize, serde::Deserialize)]
3227    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
3228    pub struct SingleMetric {
3229        #[prost(string, optional, tag = "1")]
3230        pub metric_name: ::core::option::Option<::prost::alloc::string::String>,
3231        #[prost(uint32, optional, tag = "2")]
3232        pub metric_count: ::core::option::Option<u32>,
3233    }
3234}
3235#[derive(serde::Serialize, serde::Deserialize)]
3236#[derive(Clone, Copy, PartialEq, ::prost::Message)]
3237pub struct CMsgGcToClientAggregateMetricsBackoff {
3238    #[prost(float, optional, tag = "1")]
3239    pub upload_rate_modifier: ::core::option::Option<f32>,
3240}
3241#[derive(serde::Serialize, serde::Deserialize)]
3242#[derive(Clone, PartialEq, ::prost::Message)]
3243pub struct CMsgGcToServerSteamLearnAccessTokensChanged {
3244    #[prost(message, optional, tag = "1")]
3245    pub access_tokens: ::core::option::Option<CMsgSteamLearnAccessTokens>,
3246}
3247#[derive(serde::Serialize, serde::Deserialize)]
3248#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
3249pub struct CMsgGcToServerSteamLearnUseHttp {
3250    #[prost(bool, optional, tag = "1")]
3251    pub use_http: ::core::option::Option<bool>,
3252}
3253#[derive(serde::Serialize, serde::Deserialize)]
3254#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3255#[repr(i32)]
3256pub enum EgcBaseMsg {
3257    KEMsgGcInviteToParty = 4501,
3258    KEMsgGcInvitationCreated = 4502,
3259    KEMsgGcPartyInviteResponse = 4503,
3260    KEMsgGcKickFromParty = 4504,
3261    KEMsgGcLeaveParty = 4505,
3262    KEMsgGcServerAvailable = 4506,
3263    KEMsgGcClientConnectToServer = 4507,
3264    KEMsgGcGameServerInfo = 4508,
3265    KEMsgGclanServerAvailable = 4511,
3266    KEMsgGcInviteToLobby = 4512,
3267    KEMsgGcLobbyInviteResponse = 4513,
3268    KEMsgGcToClientPollFileRequest = 4514,
3269    KEMsgGcToClientPollFileResponse = 4515,
3270    KEMsgGcToGcPerformManualOp = 4516,
3271    KEMsgGcToGcPerformManualOpCompleted = 4517,
3272    KEMsgGcToGcReloadServerRegionSettings = 4518,
3273    KEMsgGcAdditionalWelcomeMsgList = 4519,
3274    KEMsgGcToClientApplyRemoteConVars = 4520,
3275    KEMsgGcToServerApplyRemoteConVars = 4521,
3276    KEMsgClientToGcIntegrityStatus = 4522,
3277    KEMsgClientToGcAggregateMetrics = 4523,
3278    KEMsgGcToClientAggregateMetricsBackoff = 4524,
3279    KEMsgGcToServerSteamLearnAccessTokensChanged = 4525,
3280    KEMsgGcToServerSteamLearnUseHttp = 4526,
3281}
3282impl EgcBaseMsg {
3283    /// String value of the enum field names used in the ProtoBuf definition.
3284    ///
3285    /// The values are not transformed in any way and thus are considered stable
3286    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3287    pub fn as_str_name(&self) -> &'static str {
3288        match self {
3289            Self::KEMsgGcInviteToParty => "k_EMsgGCInviteToParty",
3290            Self::KEMsgGcInvitationCreated => "k_EMsgGCInvitationCreated",
3291            Self::KEMsgGcPartyInviteResponse => "k_EMsgGCPartyInviteResponse",
3292            Self::KEMsgGcKickFromParty => "k_EMsgGCKickFromParty",
3293            Self::KEMsgGcLeaveParty => "k_EMsgGCLeaveParty",
3294            Self::KEMsgGcServerAvailable => "k_EMsgGCServerAvailable",
3295            Self::KEMsgGcClientConnectToServer => "k_EMsgGCClientConnectToServer",
3296            Self::KEMsgGcGameServerInfo => "k_EMsgGCGameServerInfo",
3297            Self::KEMsgGclanServerAvailable => "k_EMsgGCLANServerAvailable",
3298            Self::KEMsgGcInviteToLobby => "k_EMsgGCInviteToLobby",
3299            Self::KEMsgGcLobbyInviteResponse => "k_EMsgGCLobbyInviteResponse",
3300            Self::KEMsgGcToClientPollFileRequest => "k_EMsgGCToClientPollFileRequest",
3301            Self::KEMsgGcToClientPollFileResponse => "k_EMsgGCToClientPollFileResponse",
3302            Self::KEMsgGcToGcPerformManualOp => "k_EMsgGCToGCPerformManualOp",
3303            Self::KEMsgGcToGcPerformManualOpCompleted => {
3304                "k_EMsgGCToGCPerformManualOpCompleted"
3305            }
3306            Self::KEMsgGcToGcReloadServerRegionSettings => {
3307                "k_EMsgGCToGCReloadServerRegionSettings"
3308            }
3309            Self::KEMsgGcAdditionalWelcomeMsgList => "k_EMsgGCAdditionalWelcomeMsgList",
3310            Self::KEMsgGcToClientApplyRemoteConVars => {
3311                "k_EMsgGCToClientApplyRemoteConVars"
3312            }
3313            Self::KEMsgGcToServerApplyRemoteConVars => {
3314                "k_EMsgGCToServerApplyRemoteConVars"
3315            }
3316            Self::KEMsgClientToGcIntegrityStatus => "k_EMsgClientToGCIntegrityStatus",
3317            Self::KEMsgClientToGcAggregateMetrics => "k_EMsgClientToGCAggregateMetrics",
3318            Self::KEMsgGcToClientAggregateMetricsBackoff => {
3319                "k_EMsgGCToClientAggregateMetricsBackoff"
3320            }
3321            Self::KEMsgGcToServerSteamLearnAccessTokensChanged => {
3322                "k_EMsgGCToServerSteamLearnAccessTokensChanged"
3323            }
3324            Self::KEMsgGcToServerSteamLearnUseHttp => "k_EMsgGCToServerSteamLearnUseHTTP",
3325        }
3326    }
3327    /// Creates an enum from field names used in the ProtoBuf definition.
3328    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3329        match value {
3330            "k_EMsgGCInviteToParty" => Some(Self::KEMsgGcInviteToParty),
3331            "k_EMsgGCInvitationCreated" => Some(Self::KEMsgGcInvitationCreated),
3332            "k_EMsgGCPartyInviteResponse" => Some(Self::KEMsgGcPartyInviteResponse),
3333            "k_EMsgGCKickFromParty" => Some(Self::KEMsgGcKickFromParty),
3334            "k_EMsgGCLeaveParty" => Some(Self::KEMsgGcLeaveParty),
3335            "k_EMsgGCServerAvailable" => Some(Self::KEMsgGcServerAvailable),
3336            "k_EMsgGCClientConnectToServer" => Some(Self::KEMsgGcClientConnectToServer),
3337            "k_EMsgGCGameServerInfo" => Some(Self::KEMsgGcGameServerInfo),
3338            "k_EMsgGCLANServerAvailable" => Some(Self::KEMsgGclanServerAvailable),
3339            "k_EMsgGCInviteToLobby" => Some(Self::KEMsgGcInviteToLobby),
3340            "k_EMsgGCLobbyInviteResponse" => Some(Self::KEMsgGcLobbyInviteResponse),
3341            "k_EMsgGCToClientPollFileRequest" => {
3342                Some(Self::KEMsgGcToClientPollFileRequest)
3343            }
3344            "k_EMsgGCToClientPollFileResponse" => {
3345                Some(Self::KEMsgGcToClientPollFileResponse)
3346            }
3347            "k_EMsgGCToGCPerformManualOp" => Some(Self::KEMsgGcToGcPerformManualOp),
3348            "k_EMsgGCToGCPerformManualOpCompleted" => {
3349                Some(Self::KEMsgGcToGcPerformManualOpCompleted)
3350            }
3351            "k_EMsgGCToGCReloadServerRegionSettings" => {
3352                Some(Self::KEMsgGcToGcReloadServerRegionSettings)
3353            }
3354            "k_EMsgGCAdditionalWelcomeMsgList" => {
3355                Some(Self::KEMsgGcAdditionalWelcomeMsgList)
3356            }
3357            "k_EMsgGCToClientApplyRemoteConVars" => {
3358                Some(Self::KEMsgGcToClientApplyRemoteConVars)
3359            }
3360            "k_EMsgGCToServerApplyRemoteConVars" => {
3361                Some(Self::KEMsgGcToServerApplyRemoteConVars)
3362            }
3363            "k_EMsgClientToGCIntegrityStatus" => {
3364                Some(Self::KEMsgClientToGcIntegrityStatus)
3365            }
3366            "k_EMsgClientToGCAggregateMetrics" => {
3367                Some(Self::KEMsgClientToGcAggregateMetrics)
3368            }
3369            "k_EMsgGCToClientAggregateMetricsBackoff" => {
3370                Some(Self::KEMsgGcToClientAggregateMetricsBackoff)
3371            }
3372            "k_EMsgGCToServerSteamLearnAccessTokensChanged" => {
3373                Some(Self::KEMsgGcToServerSteamLearnAccessTokensChanged)
3374            }
3375            "k_EMsgGCToServerSteamLearnUseHTTP" => {
3376                Some(Self::KEMsgGcToServerSteamLearnUseHttp)
3377            }
3378            _ => None,
3379        }
3380    }
3381}
3382#[derive(serde::Serialize, serde::Deserialize)]
3383#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3384#[repr(i32)]
3385pub enum ECustomGameInstallStatus {
3386    KECustomGameInstallStatusUnknown = 0,
3387    KECustomGameInstallStatusReady = 1,
3388    KECustomGameInstallStatusBusy = 2,
3389    KECustomGameInstallStatusFailedGeneric = 101,
3390    KECustomGameInstallStatusFailedInternalError = 102,
3391    KECustomGameInstallStatusRequestedTimestampTooOld = 103,
3392    KECustomGameInstallStatusRequestedTimestampTooNew = 104,
3393    KECustomGameInstallStatusCrcMismatch = 105,
3394    KECustomGameInstallStatusFailedSteam = 106,
3395    KECustomGameInstallStatusFailedCanceled = 107,
3396}
3397impl ECustomGameInstallStatus {
3398    /// String value of the enum field names used in the ProtoBuf definition.
3399    ///
3400    /// The values are not transformed in any way and thus are considered stable
3401    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3402    pub fn as_str_name(&self) -> &'static str {
3403        match self {
3404            Self::KECustomGameInstallStatusUnknown => {
3405                "k_ECustomGameInstallStatus_Unknown"
3406            }
3407            Self::KECustomGameInstallStatusReady => "k_ECustomGameInstallStatus_Ready",
3408            Self::KECustomGameInstallStatusBusy => "k_ECustomGameInstallStatus_Busy",
3409            Self::KECustomGameInstallStatusFailedGeneric => {
3410                "k_ECustomGameInstallStatus_FailedGeneric"
3411            }
3412            Self::KECustomGameInstallStatusFailedInternalError => {
3413                "k_ECustomGameInstallStatus_FailedInternalError"
3414            }
3415            Self::KECustomGameInstallStatusRequestedTimestampTooOld => {
3416                "k_ECustomGameInstallStatus_RequestedTimestampTooOld"
3417            }
3418            Self::KECustomGameInstallStatusRequestedTimestampTooNew => {
3419                "k_ECustomGameInstallStatus_RequestedTimestampTooNew"
3420            }
3421            Self::KECustomGameInstallStatusCrcMismatch => {
3422                "k_ECustomGameInstallStatus_CRCMismatch"
3423            }
3424            Self::KECustomGameInstallStatusFailedSteam => {
3425                "k_ECustomGameInstallStatus_FailedSteam"
3426            }
3427            Self::KECustomGameInstallStatusFailedCanceled => {
3428                "k_ECustomGameInstallStatus_FailedCanceled"
3429            }
3430        }
3431    }
3432    /// Creates an enum from field names used in the ProtoBuf definition.
3433    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3434        match value {
3435            "k_ECustomGameInstallStatus_Unknown" => {
3436                Some(Self::KECustomGameInstallStatusUnknown)
3437            }
3438            "k_ECustomGameInstallStatus_Ready" => {
3439                Some(Self::KECustomGameInstallStatusReady)
3440            }
3441            "k_ECustomGameInstallStatus_Busy" => {
3442                Some(Self::KECustomGameInstallStatusBusy)
3443            }
3444            "k_ECustomGameInstallStatus_FailedGeneric" => {
3445                Some(Self::KECustomGameInstallStatusFailedGeneric)
3446            }
3447            "k_ECustomGameInstallStatus_FailedInternalError" => {
3448                Some(Self::KECustomGameInstallStatusFailedInternalError)
3449            }
3450            "k_ECustomGameInstallStatus_RequestedTimestampTooOld" => {
3451                Some(Self::KECustomGameInstallStatusRequestedTimestampTooOld)
3452            }
3453            "k_ECustomGameInstallStatus_RequestedTimestampTooNew" => {
3454                Some(Self::KECustomGameInstallStatusRequestedTimestampTooNew)
3455            }
3456            "k_ECustomGameInstallStatus_CRCMismatch" => {
3457                Some(Self::KECustomGameInstallStatusCrcMismatch)
3458            }
3459            "k_ECustomGameInstallStatus_FailedSteam" => {
3460                Some(Self::KECustomGameInstallStatusFailedSteam)
3461            }
3462            "k_ECustomGameInstallStatus_FailedCanceled" => {
3463                Some(Self::KECustomGameInstallStatusFailedCanceled)
3464            }
3465            _ => None,
3466        }
3467    }
3468}
3469#[derive(serde::Serialize, serde::Deserialize)]
3470#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
3471#[repr(i32)]
3472pub enum ENetworkDisconnectionReason {
3473    NetworkDisconnectInvalid = 0,
3474    NetworkDisconnectShutdown = 1,
3475    NetworkDisconnectDisconnectByUser = 2,
3476    NetworkDisconnectDisconnectByServer = 3,
3477    NetworkDisconnectLost = 4,
3478    NetworkDisconnectOverflow = 5,
3479    NetworkDisconnectSteamBanned = 6,
3480    NetworkDisconnectSteamInuse = 7,
3481    NetworkDisconnectSteamTicket = 8,
3482    NetworkDisconnectSteamLogon = 9,
3483    NetworkDisconnectSteamAuthcancelled = 10,
3484    NetworkDisconnectSteamAuthalreadyused = 11,
3485    NetworkDisconnectSteamAuthinvalid = 12,
3486    NetworkDisconnectSteamVacbanstate = 13,
3487    NetworkDisconnectSteamLoggedInElsewhere = 14,
3488    NetworkDisconnectSteamVacCheckTimedout = 15,
3489    NetworkDisconnectSteamDropped = 16,
3490    NetworkDisconnectSteamOwnership = 17,
3491    NetworkDisconnectServerinfoOverflow = 18,
3492    NetworkDisconnectTickmsgOverflow = 19,
3493    NetworkDisconnectStringtablemsgOverflow = 20,
3494    NetworkDisconnectDeltaentmsgOverflow = 21,
3495    NetworkDisconnectTempentmsgOverflow = 22,
3496    NetworkDisconnectSoundsmsgOverflow = 23,
3497    NetworkDisconnectSnapshotoverflow = 24,
3498    NetworkDisconnectSnapshoterror = 25,
3499    NetworkDisconnectReliableoverflow = 26,
3500    NetworkDisconnectBaddeltatick = 27,
3501    NetworkDisconnectNomoresplits = 28,
3502    NetworkDisconnectTimedout = 29,
3503    NetworkDisconnectDisconnected = 30,
3504    NetworkDisconnectLeavingsplit = 31,
3505    NetworkDisconnectDifferentclasstables = 32,
3506    NetworkDisconnectBadrelaypassword = 33,
3507    NetworkDisconnectBadspectatorpassword = 34,
3508    NetworkDisconnectHltvrestricted = 35,
3509    NetworkDisconnectNospectators = 36,
3510    NetworkDisconnectHltvunavailable = 37,
3511    NetworkDisconnectHltvstop = 38,
3512    NetworkDisconnectKicked = 39,
3513    NetworkDisconnectBanadded = 40,
3514    NetworkDisconnectKickbanadded = 41,
3515    NetworkDisconnectHltvdirect = 42,
3516    NetworkDisconnectPureserverClientextra = 43,
3517    NetworkDisconnectPureserverMismatch = 44,
3518    NetworkDisconnectUsercmd = 45,
3519    NetworkDisconnectRejectedByGame = 46,
3520    NetworkDisconnectMessageParseError = 47,
3521    NetworkDisconnectInvalidMessageError = 48,
3522    NetworkDisconnectBadServerPassword = 49,
3523    NetworkDisconnectDirectConnectReservation = 50,
3524    NetworkDisconnectConnectionFailure = 51,
3525    NetworkDisconnectNoPeerGroupHandlers = 52,
3526    NetworkDisconnectReconnection = 53,
3527    NetworkDisconnectLoopshutdown = 54,
3528    NetworkDisconnectLoopdeactivate = 55,
3529    NetworkDisconnectHostEndgame = 56,
3530    NetworkDisconnectLoopLevelloadActivate = 57,
3531    NetworkDisconnectCreateServerFailed = 58,
3532    NetworkDisconnectExiting = 59,
3533    NetworkDisconnectRequestHoststateIdle = 60,
3534    NetworkDisconnectRequestHoststateHltvrelay = 61,
3535    NetworkDisconnectClientConsistencyFail = 62,
3536    NetworkDisconnectClientUnableToCrcMap = 63,
3537    NetworkDisconnectClientNoMap = 64,
3538    NetworkDisconnectClientDifferentMap = 65,
3539    NetworkDisconnectServerRequiresSteam = 66,
3540    NetworkDisconnectSteamDenyMisc = 67,
3541    NetworkDisconnectSteamDenyBadAntiCheat = 68,
3542    NetworkDisconnectServerShutdown = 69,
3543    NetworkDisconnectReplayIncompatible = 71,
3544    NetworkDisconnectConnectRequestTimedout = 72,
3545    NetworkDisconnectServerIncompatible = 73,
3546    NetworkDisconnectLocalproblemManyrelays = 74,
3547    NetworkDisconnectLocalproblemHostedserverprimaryrelay = 75,
3548    NetworkDisconnectLocalproblemNetworkconfig = 76,
3549    NetworkDisconnectLocalproblemOther = 77,
3550    NetworkDisconnectRemoteTimeout = 79,
3551    NetworkDisconnectRemoteTimeoutConnecting = 80,
3552    NetworkDisconnectRemoteOther = 81,
3553    NetworkDisconnectRemoteBadcrypt = 82,
3554    NetworkDisconnectRemoteCertnottrusted = 83,
3555    NetworkDisconnectUnusual = 84,
3556    NetworkDisconnectInternalError = 85,
3557    NetworkDisconnectRejectBadchallenge = 128,
3558    NetworkDisconnectRejectNolobby = 129,
3559    NetworkDisconnectRejectBackgroundMap = 130,
3560    NetworkDisconnectRejectSinglePlayer = 131,
3561    NetworkDisconnectRejectHiddenGame = 132,
3562    NetworkDisconnectRejectLanrestrict = 133,
3563    NetworkDisconnectRejectBadpassword = 134,
3564    NetworkDisconnectRejectServerfull = 135,
3565    NetworkDisconnectRejectInvalidreservation = 136,
3566    NetworkDisconnectRejectFailedchannel = 137,
3567    NetworkDisconnectRejectConnectFromLobby = 138,
3568    NetworkDisconnectRejectReservedForLobby = 139,
3569    NetworkDisconnectRejectInvalidkeylength = 140,
3570    NetworkDisconnectRejectOldprotocol = 141,
3571    NetworkDisconnectRejectNewprotocol = 142,
3572    NetworkDisconnectRejectInvalidconnection = 143,
3573    NetworkDisconnectRejectInvalidcertlen = 144,
3574    NetworkDisconnectRejectInvalidsteamcertlen = 145,
3575    NetworkDisconnectRejectSteam = 146,
3576    NetworkDisconnectRejectServerauthdisabled = 147,
3577    NetworkDisconnectRejectServercdkeyauthinvalid = 148,
3578    NetworkDisconnectRejectBanned = 149,
3579    NetworkDisconnectKickedTeamkilling = 150,
3580    NetworkDisconnectKickedTkStart = 151,
3581    NetworkDisconnectKickedUntrustedaccount = 152,
3582    NetworkDisconnectKickedConvictedaccount = 153,
3583    NetworkDisconnectKickedCompetitivecooldown = 154,
3584    NetworkDisconnectKickedTeamhurting = 155,
3585    NetworkDisconnectKickedHostagekilling = 156,
3586    NetworkDisconnectKickedVotedoff = 157,
3587    NetworkDisconnectKickedIdle = 158,
3588    NetworkDisconnectKickedSuicide = 159,
3589    NetworkDisconnectKickedNosteamlogin = 160,
3590    NetworkDisconnectKickedNosteamticket = 161,
3591    NetworkDisconnectKickedInputautomation = 162,
3592    NetworkDisconnectKickedVacnetabnormalbehavior = 163,
3593    NetworkDisconnectKickedInsecureclient = 164,
3594}
3595impl ENetworkDisconnectionReason {
3596    /// String value of the enum field names used in the ProtoBuf definition.
3597    ///
3598    /// The values are not transformed in any way and thus are considered stable
3599    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
3600    pub fn as_str_name(&self) -> &'static str {
3601        match self {
3602            Self::NetworkDisconnectInvalid => "NETWORK_DISCONNECT_INVALID",
3603            Self::NetworkDisconnectShutdown => "NETWORK_DISCONNECT_SHUTDOWN",
3604            Self::NetworkDisconnectDisconnectByUser => {
3605                "NETWORK_DISCONNECT_DISCONNECT_BY_USER"
3606            }
3607            Self::NetworkDisconnectDisconnectByServer => {
3608                "NETWORK_DISCONNECT_DISCONNECT_BY_SERVER"
3609            }
3610            Self::NetworkDisconnectLost => "NETWORK_DISCONNECT_LOST",
3611            Self::NetworkDisconnectOverflow => "NETWORK_DISCONNECT_OVERFLOW",
3612            Self::NetworkDisconnectSteamBanned => "NETWORK_DISCONNECT_STEAM_BANNED",
3613            Self::NetworkDisconnectSteamInuse => "NETWORK_DISCONNECT_STEAM_INUSE",
3614            Self::NetworkDisconnectSteamTicket => "NETWORK_DISCONNECT_STEAM_TICKET",
3615            Self::NetworkDisconnectSteamLogon => "NETWORK_DISCONNECT_STEAM_LOGON",
3616            Self::NetworkDisconnectSteamAuthcancelled => {
3617                "NETWORK_DISCONNECT_STEAM_AUTHCANCELLED"
3618            }
3619            Self::NetworkDisconnectSteamAuthalreadyused => {
3620                "NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED"
3621            }
3622            Self::NetworkDisconnectSteamAuthinvalid => {
3623                "NETWORK_DISCONNECT_STEAM_AUTHINVALID"
3624            }
3625            Self::NetworkDisconnectSteamVacbanstate => {
3626                "NETWORK_DISCONNECT_STEAM_VACBANSTATE"
3627            }
3628            Self::NetworkDisconnectSteamLoggedInElsewhere => {
3629                "NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE"
3630            }
3631            Self::NetworkDisconnectSteamVacCheckTimedout => {
3632                "NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT"
3633            }
3634            Self::NetworkDisconnectSteamDropped => "NETWORK_DISCONNECT_STEAM_DROPPED",
3635            Self::NetworkDisconnectSteamOwnership => "NETWORK_DISCONNECT_STEAM_OWNERSHIP",
3636            Self::NetworkDisconnectServerinfoOverflow => {
3637                "NETWORK_DISCONNECT_SERVERINFO_OVERFLOW"
3638            }
3639            Self::NetworkDisconnectTickmsgOverflow => {
3640                "NETWORK_DISCONNECT_TICKMSG_OVERFLOW"
3641            }
3642            Self::NetworkDisconnectStringtablemsgOverflow => {
3643                "NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW"
3644            }
3645            Self::NetworkDisconnectDeltaentmsgOverflow => {
3646                "NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW"
3647            }
3648            Self::NetworkDisconnectTempentmsgOverflow => {
3649                "NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW"
3650            }
3651            Self::NetworkDisconnectSoundsmsgOverflow => {
3652                "NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW"
3653            }
3654            Self::NetworkDisconnectSnapshotoverflow => {
3655                "NETWORK_DISCONNECT_SNAPSHOTOVERFLOW"
3656            }
3657            Self::NetworkDisconnectSnapshoterror => "NETWORK_DISCONNECT_SNAPSHOTERROR",
3658            Self::NetworkDisconnectReliableoverflow => {
3659                "NETWORK_DISCONNECT_RELIABLEOVERFLOW"
3660            }
3661            Self::NetworkDisconnectBaddeltatick => "NETWORK_DISCONNECT_BADDELTATICK",
3662            Self::NetworkDisconnectNomoresplits => "NETWORK_DISCONNECT_NOMORESPLITS",
3663            Self::NetworkDisconnectTimedout => "NETWORK_DISCONNECT_TIMEDOUT",
3664            Self::NetworkDisconnectDisconnected => "NETWORK_DISCONNECT_DISCONNECTED",
3665            Self::NetworkDisconnectLeavingsplit => "NETWORK_DISCONNECT_LEAVINGSPLIT",
3666            Self::NetworkDisconnectDifferentclasstables => {
3667                "NETWORK_DISCONNECT_DIFFERENTCLASSTABLES"
3668            }
3669            Self::NetworkDisconnectBadrelaypassword => {
3670                "NETWORK_DISCONNECT_BADRELAYPASSWORD"
3671            }
3672            Self::NetworkDisconnectBadspectatorpassword => {
3673                "NETWORK_DISCONNECT_BADSPECTATORPASSWORD"
3674            }
3675            Self::NetworkDisconnectHltvrestricted => "NETWORK_DISCONNECT_HLTVRESTRICTED",
3676            Self::NetworkDisconnectNospectators => "NETWORK_DISCONNECT_NOSPECTATORS",
3677            Self::NetworkDisconnectHltvunavailable => {
3678                "NETWORK_DISCONNECT_HLTVUNAVAILABLE"
3679            }
3680            Self::NetworkDisconnectHltvstop => "NETWORK_DISCONNECT_HLTVSTOP",
3681            Self::NetworkDisconnectKicked => "NETWORK_DISCONNECT_KICKED",
3682            Self::NetworkDisconnectBanadded => "NETWORK_DISCONNECT_BANADDED",
3683            Self::NetworkDisconnectKickbanadded => "NETWORK_DISCONNECT_KICKBANADDED",
3684            Self::NetworkDisconnectHltvdirect => "NETWORK_DISCONNECT_HLTVDIRECT",
3685            Self::NetworkDisconnectPureserverClientextra => {
3686                "NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA"
3687            }
3688            Self::NetworkDisconnectPureserverMismatch => {
3689                "NETWORK_DISCONNECT_PURESERVER_MISMATCH"
3690            }
3691            Self::NetworkDisconnectUsercmd => "NETWORK_DISCONNECT_USERCMD",
3692            Self::NetworkDisconnectRejectedByGame => {
3693                "NETWORK_DISCONNECT_REJECTED_BY_GAME"
3694            }
3695            Self::NetworkDisconnectMessageParseError => {
3696                "NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR"
3697            }
3698            Self::NetworkDisconnectInvalidMessageError => {
3699                "NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR"
3700            }
3701            Self::NetworkDisconnectBadServerPassword => {
3702                "NETWORK_DISCONNECT_BAD_SERVER_PASSWORD"
3703            }
3704            Self::NetworkDisconnectDirectConnectReservation => {
3705                "NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION"
3706            }
3707            Self::NetworkDisconnectConnectionFailure => {
3708                "NETWORK_DISCONNECT_CONNECTION_FAILURE"
3709            }
3710            Self::NetworkDisconnectNoPeerGroupHandlers => {
3711                "NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS"
3712            }
3713            Self::NetworkDisconnectReconnection => "NETWORK_DISCONNECT_RECONNECTION",
3714            Self::NetworkDisconnectLoopshutdown => "NETWORK_DISCONNECT_LOOPSHUTDOWN",
3715            Self::NetworkDisconnectLoopdeactivate => "NETWORK_DISCONNECT_LOOPDEACTIVATE",
3716            Self::NetworkDisconnectHostEndgame => "NETWORK_DISCONNECT_HOST_ENDGAME",
3717            Self::NetworkDisconnectLoopLevelloadActivate => {
3718                "NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE"
3719            }
3720            Self::NetworkDisconnectCreateServerFailed => {
3721                "NETWORK_DISCONNECT_CREATE_SERVER_FAILED"
3722            }
3723            Self::NetworkDisconnectExiting => "NETWORK_DISCONNECT_EXITING",
3724            Self::NetworkDisconnectRequestHoststateIdle => {
3725                "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE"
3726            }
3727            Self::NetworkDisconnectRequestHoststateHltvrelay => {
3728                "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY"
3729            }
3730            Self::NetworkDisconnectClientConsistencyFail => {
3731                "NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL"
3732            }
3733            Self::NetworkDisconnectClientUnableToCrcMap => {
3734                "NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP"
3735            }
3736            Self::NetworkDisconnectClientNoMap => "NETWORK_DISCONNECT_CLIENT_NO_MAP",
3737            Self::NetworkDisconnectClientDifferentMap => {
3738                "NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP"
3739            }
3740            Self::NetworkDisconnectServerRequiresSteam => {
3741                "NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM"
3742            }
3743            Self::NetworkDisconnectSteamDenyMisc => "NETWORK_DISCONNECT_STEAM_DENY_MISC",
3744            Self::NetworkDisconnectSteamDenyBadAntiCheat => {
3745                "NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT"
3746            }
3747            Self::NetworkDisconnectServerShutdown => "NETWORK_DISCONNECT_SERVER_SHUTDOWN",
3748            Self::NetworkDisconnectReplayIncompatible => {
3749                "NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE"
3750            }
3751            Self::NetworkDisconnectConnectRequestTimedout => {
3752                "NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT"
3753            }
3754            Self::NetworkDisconnectServerIncompatible => {
3755                "NETWORK_DISCONNECT_SERVER_INCOMPATIBLE"
3756            }
3757            Self::NetworkDisconnectLocalproblemManyrelays => {
3758                "NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS"
3759            }
3760            Self::NetworkDisconnectLocalproblemHostedserverprimaryrelay => {
3761                "NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY"
3762            }
3763            Self::NetworkDisconnectLocalproblemNetworkconfig => {
3764                "NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG"
3765            }
3766            Self::NetworkDisconnectLocalproblemOther => {
3767                "NETWORK_DISCONNECT_LOCALPROBLEM_OTHER"
3768            }
3769            Self::NetworkDisconnectRemoteTimeout => "NETWORK_DISCONNECT_REMOTE_TIMEOUT",
3770            Self::NetworkDisconnectRemoteTimeoutConnecting => {
3771                "NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING"
3772            }
3773            Self::NetworkDisconnectRemoteOther => "NETWORK_DISCONNECT_REMOTE_OTHER",
3774            Self::NetworkDisconnectRemoteBadcrypt => "NETWORK_DISCONNECT_REMOTE_BADCRYPT",
3775            Self::NetworkDisconnectRemoteCertnottrusted => {
3776                "NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED"
3777            }
3778            Self::NetworkDisconnectUnusual => "NETWORK_DISCONNECT_UNUSUAL",
3779            Self::NetworkDisconnectInternalError => "NETWORK_DISCONNECT_INTERNAL_ERROR",
3780            Self::NetworkDisconnectRejectBadchallenge => {
3781                "NETWORK_DISCONNECT_REJECT_BADCHALLENGE"
3782            }
3783            Self::NetworkDisconnectRejectNolobby => "NETWORK_DISCONNECT_REJECT_NOLOBBY",
3784            Self::NetworkDisconnectRejectBackgroundMap => {
3785                "NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP"
3786            }
3787            Self::NetworkDisconnectRejectSinglePlayer => {
3788                "NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER"
3789            }
3790            Self::NetworkDisconnectRejectHiddenGame => {
3791                "NETWORK_DISCONNECT_REJECT_HIDDEN_GAME"
3792            }
3793            Self::NetworkDisconnectRejectLanrestrict => {
3794                "NETWORK_DISCONNECT_REJECT_LANRESTRICT"
3795            }
3796            Self::NetworkDisconnectRejectBadpassword => {
3797                "NETWORK_DISCONNECT_REJECT_BADPASSWORD"
3798            }
3799            Self::NetworkDisconnectRejectServerfull => {
3800                "NETWORK_DISCONNECT_REJECT_SERVERFULL"
3801            }
3802            Self::NetworkDisconnectRejectInvalidreservation => {
3803                "NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION"
3804            }
3805            Self::NetworkDisconnectRejectFailedchannel => {
3806                "NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL"
3807            }
3808            Self::NetworkDisconnectRejectConnectFromLobby => {
3809                "NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY"
3810            }
3811            Self::NetworkDisconnectRejectReservedForLobby => {
3812                "NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY"
3813            }
3814            Self::NetworkDisconnectRejectInvalidkeylength => {
3815                "NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH"
3816            }
3817            Self::NetworkDisconnectRejectOldprotocol => {
3818                "NETWORK_DISCONNECT_REJECT_OLDPROTOCOL"
3819            }
3820            Self::NetworkDisconnectRejectNewprotocol => {
3821                "NETWORK_DISCONNECT_REJECT_NEWPROTOCOL"
3822            }
3823            Self::NetworkDisconnectRejectInvalidconnection => {
3824                "NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION"
3825            }
3826            Self::NetworkDisconnectRejectInvalidcertlen => {
3827                "NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN"
3828            }
3829            Self::NetworkDisconnectRejectInvalidsteamcertlen => {
3830                "NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN"
3831            }
3832            Self::NetworkDisconnectRejectSteam => "NETWORK_DISCONNECT_REJECT_STEAM",
3833            Self::NetworkDisconnectRejectServerauthdisabled => {
3834                "NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED"
3835            }
3836            Self::NetworkDisconnectRejectServercdkeyauthinvalid => {
3837                "NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID"
3838            }
3839            Self::NetworkDisconnectRejectBanned => "NETWORK_DISCONNECT_REJECT_BANNED",
3840            Self::NetworkDisconnectKickedTeamkilling => {
3841                "NETWORK_DISCONNECT_KICKED_TEAMKILLING"
3842            }
3843            Self::NetworkDisconnectKickedTkStart => "NETWORK_DISCONNECT_KICKED_TK_START",
3844            Self::NetworkDisconnectKickedUntrustedaccount => {
3845                "NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT"
3846            }
3847            Self::NetworkDisconnectKickedConvictedaccount => {
3848                "NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT"
3849            }
3850            Self::NetworkDisconnectKickedCompetitivecooldown => {
3851                "NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN"
3852            }
3853            Self::NetworkDisconnectKickedTeamhurting => {
3854                "NETWORK_DISCONNECT_KICKED_TEAMHURTING"
3855            }
3856            Self::NetworkDisconnectKickedHostagekilling => {
3857                "NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING"
3858            }
3859            Self::NetworkDisconnectKickedVotedoff => "NETWORK_DISCONNECT_KICKED_VOTEDOFF",
3860            Self::NetworkDisconnectKickedIdle => "NETWORK_DISCONNECT_KICKED_IDLE",
3861            Self::NetworkDisconnectKickedSuicide => "NETWORK_DISCONNECT_KICKED_SUICIDE",
3862            Self::NetworkDisconnectKickedNosteamlogin => {
3863                "NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN"
3864            }
3865            Self::NetworkDisconnectKickedNosteamticket => {
3866                "NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET"
3867            }
3868            Self::NetworkDisconnectKickedInputautomation => {
3869                "NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION"
3870            }
3871            Self::NetworkDisconnectKickedVacnetabnormalbehavior => {
3872                "NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR"
3873            }
3874            Self::NetworkDisconnectKickedInsecureclient => {
3875                "NETWORK_DISCONNECT_KICKED_INSECURECLIENT"
3876            }
3877        }
3878    }
3879    /// Creates an enum from field names used in the ProtoBuf definition.
3880    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
3881        match value {
3882            "NETWORK_DISCONNECT_INVALID" => Some(Self::NetworkDisconnectInvalid),
3883            "NETWORK_DISCONNECT_SHUTDOWN" => Some(Self::NetworkDisconnectShutdown),
3884            "NETWORK_DISCONNECT_DISCONNECT_BY_USER" => {
3885                Some(Self::NetworkDisconnectDisconnectByUser)
3886            }
3887            "NETWORK_DISCONNECT_DISCONNECT_BY_SERVER" => {
3888                Some(Self::NetworkDisconnectDisconnectByServer)
3889            }
3890            "NETWORK_DISCONNECT_LOST" => Some(Self::NetworkDisconnectLost),
3891            "NETWORK_DISCONNECT_OVERFLOW" => Some(Self::NetworkDisconnectOverflow),
3892            "NETWORK_DISCONNECT_STEAM_BANNED" => Some(Self::NetworkDisconnectSteamBanned),
3893            "NETWORK_DISCONNECT_STEAM_INUSE" => Some(Self::NetworkDisconnectSteamInuse),
3894            "NETWORK_DISCONNECT_STEAM_TICKET" => Some(Self::NetworkDisconnectSteamTicket),
3895            "NETWORK_DISCONNECT_STEAM_LOGON" => Some(Self::NetworkDisconnectSteamLogon),
3896            "NETWORK_DISCONNECT_STEAM_AUTHCANCELLED" => {
3897                Some(Self::NetworkDisconnectSteamAuthcancelled)
3898            }
3899            "NETWORK_DISCONNECT_STEAM_AUTHALREADYUSED" => {
3900                Some(Self::NetworkDisconnectSteamAuthalreadyused)
3901            }
3902            "NETWORK_DISCONNECT_STEAM_AUTHINVALID" => {
3903                Some(Self::NetworkDisconnectSteamAuthinvalid)
3904            }
3905            "NETWORK_DISCONNECT_STEAM_VACBANSTATE" => {
3906                Some(Self::NetworkDisconnectSteamVacbanstate)
3907            }
3908            "NETWORK_DISCONNECT_STEAM_LOGGED_IN_ELSEWHERE" => {
3909                Some(Self::NetworkDisconnectSteamLoggedInElsewhere)
3910            }
3911            "NETWORK_DISCONNECT_STEAM_VAC_CHECK_TIMEDOUT" => {
3912                Some(Self::NetworkDisconnectSteamVacCheckTimedout)
3913            }
3914            "NETWORK_DISCONNECT_STEAM_DROPPED" => {
3915                Some(Self::NetworkDisconnectSteamDropped)
3916            }
3917            "NETWORK_DISCONNECT_STEAM_OWNERSHIP" => {
3918                Some(Self::NetworkDisconnectSteamOwnership)
3919            }
3920            "NETWORK_DISCONNECT_SERVERINFO_OVERFLOW" => {
3921                Some(Self::NetworkDisconnectServerinfoOverflow)
3922            }
3923            "NETWORK_DISCONNECT_TICKMSG_OVERFLOW" => {
3924                Some(Self::NetworkDisconnectTickmsgOverflow)
3925            }
3926            "NETWORK_DISCONNECT_STRINGTABLEMSG_OVERFLOW" => {
3927                Some(Self::NetworkDisconnectStringtablemsgOverflow)
3928            }
3929            "NETWORK_DISCONNECT_DELTAENTMSG_OVERFLOW" => {
3930                Some(Self::NetworkDisconnectDeltaentmsgOverflow)
3931            }
3932            "NETWORK_DISCONNECT_TEMPENTMSG_OVERFLOW" => {
3933                Some(Self::NetworkDisconnectTempentmsgOverflow)
3934            }
3935            "NETWORK_DISCONNECT_SOUNDSMSG_OVERFLOW" => {
3936                Some(Self::NetworkDisconnectSoundsmsgOverflow)
3937            }
3938            "NETWORK_DISCONNECT_SNAPSHOTOVERFLOW" => {
3939                Some(Self::NetworkDisconnectSnapshotoverflow)
3940            }
3941            "NETWORK_DISCONNECT_SNAPSHOTERROR" => {
3942                Some(Self::NetworkDisconnectSnapshoterror)
3943            }
3944            "NETWORK_DISCONNECT_RELIABLEOVERFLOW" => {
3945                Some(Self::NetworkDisconnectReliableoverflow)
3946            }
3947            "NETWORK_DISCONNECT_BADDELTATICK" => {
3948                Some(Self::NetworkDisconnectBaddeltatick)
3949            }
3950            "NETWORK_DISCONNECT_NOMORESPLITS" => {
3951                Some(Self::NetworkDisconnectNomoresplits)
3952            }
3953            "NETWORK_DISCONNECT_TIMEDOUT" => Some(Self::NetworkDisconnectTimedout),
3954            "NETWORK_DISCONNECT_DISCONNECTED" => {
3955                Some(Self::NetworkDisconnectDisconnected)
3956            }
3957            "NETWORK_DISCONNECT_LEAVINGSPLIT" => {
3958                Some(Self::NetworkDisconnectLeavingsplit)
3959            }
3960            "NETWORK_DISCONNECT_DIFFERENTCLASSTABLES" => {
3961                Some(Self::NetworkDisconnectDifferentclasstables)
3962            }
3963            "NETWORK_DISCONNECT_BADRELAYPASSWORD" => {
3964                Some(Self::NetworkDisconnectBadrelaypassword)
3965            }
3966            "NETWORK_DISCONNECT_BADSPECTATORPASSWORD" => {
3967                Some(Self::NetworkDisconnectBadspectatorpassword)
3968            }
3969            "NETWORK_DISCONNECT_HLTVRESTRICTED" => {
3970                Some(Self::NetworkDisconnectHltvrestricted)
3971            }
3972            "NETWORK_DISCONNECT_NOSPECTATORS" => {
3973                Some(Self::NetworkDisconnectNospectators)
3974            }
3975            "NETWORK_DISCONNECT_HLTVUNAVAILABLE" => {
3976                Some(Self::NetworkDisconnectHltvunavailable)
3977            }
3978            "NETWORK_DISCONNECT_HLTVSTOP" => Some(Self::NetworkDisconnectHltvstop),
3979            "NETWORK_DISCONNECT_KICKED" => Some(Self::NetworkDisconnectKicked),
3980            "NETWORK_DISCONNECT_BANADDED" => Some(Self::NetworkDisconnectBanadded),
3981            "NETWORK_DISCONNECT_KICKBANADDED" => {
3982                Some(Self::NetworkDisconnectKickbanadded)
3983            }
3984            "NETWORK_DISCONNECT_HLTVDIRECT" => Some(Self::NetworkDisconnectHltvdirect),
3985            "NETWORK_DISCONNECT_PURESERVER_CLIENTEXTRA" => {
3986                Some(Self::NetworkDisconnectPureserverClientextra)
3987            }
3988            "NETWORK_DISCONNECT_PURESERVER_MISMATCH" => {
3989                Some(Self::NetworkDisconnectPureserverMismatch)
3990            }
3991            "NETWORK_DISCONNECT_USERCMD" => Some(Self::NetworkDisconnectUsercmd),
3992            "NETWORK_DISCONNECT_REJECTED_BY_GAME" => {
3993                Some(Self::NetworkDisconnectRejectedByGame)
3994            }
3995            "NETWORK_DISCONNECT_MESSAGE_PARSE_ERROR" => {
3996                Some(Self::NetworkDisconnectMessageParseError)
3997            }
3998            "NETWORK_DISCONNECT_INVALID_MESSAGE_ERROR" => {
3999                Some(Self::NetworkDisconnectInvalidMessageError)
4000            }
4001            "NETWORK_DISCONNECT_BAD_SERVER_PASSWORD" => {
4002                Some(Self::NetworkDisconnectBadServerPassword)
4003            }
4004            "NETWORK_DISCONNECT_DIRECT_CONNECT_RESERVATION" => {
4005                Some(Self::NetworkDisconnectDirectConnectReservation)
4006            }
4007            "NETWORK_DISCONNECT_CONNECTION_FAILURE" => {
4008                Some(Self::NetworkDisconnectConnectionFailure)
4009            }
4010            "NETWORK_DISCONNECT_NO_PEER_GROUP_HANDLERS" => {
4011                Some(Self::NetworkDisconnectNoPeerGroupHandlers)
4012            }
4013            "NETWORK_DISCONNECT_RECONNECTION" => {
4014                Some(Self::NetworkDisconnectReconnection)
4015            }
4016            "NETWORK_DISCONNECT_LOOPSHUTDOWN" => {
4017                Some(Self::NetworkDisconnectLoopshutdown)
4018            }
4019            "NETWORK_DISCONNECT_LOOPDEACTIVATE" => {
4020                Some(Self::NetworkDisconnectLoopdeactivate)
4021            }
4022            "NETWORK_DISCONNECT_HOST_ENDGAME" => Some(Self::NetworkDisconnectHostEndgame),
4023            "NETWORK_DISCONNECT_LOOP_LEVELLOAD_ACTIVATE" => {
4024                Some(Self::NetworkDisconnectLoopLevelloadActivate)
4025            }
4026            "NETWORK_DISCONNECT_CREATE_SERVER_FAILED" => {
4027                Some(Self::NetworkDisconnectCreateServerFailed)
4028            }
4029            "NETWORK_DISCONNECT_EXITING" => Some(Self::NetworkDisconnectExiting),
4030            "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_IDLE" => {
4031                Some(Self::NetworkDisconnectRequestHoststateIdle)
4032            }
4033            "NETWORK_DISCONNECT_REQUEST_HOSTSTATE_HLTVRELAY" => {
4034                Some(Self::NetworkDisconnectRequestHoststateHltvrelay)
4035            }
4036            "NETWORK_DISCONNECT_CLIENT_CONSISTENCY_FAIL" => {
4037                Some(Self::NetworkDisconnectClientConsistencyFail)
4038            }
4039            "NETWORK_DISCONNECT_CLIENT_UNABLE_TO_CRC_MAP" => {
4040                Some(Self::NetworkDisconnectClientUnableToCrcMap)
4041            }
4042            "NETWORK_DISCONNECT_CLIENT_NO_MAP" => {
4043                Some(Self::NetworkDisconnectClientNoMap)
4044            }
4045            "NETWORK_DISCONNECT_CLIENT_DIFFERENT_MAP" => {
4046                Some(Self::NetworkDisconnectClientDifferentMap)
4047            }
4048            "NETWORK_DISCONNECT_SERVER_REQUIRES_STEAM" => {
4049                Some(Self::NetworkDisconnectServerRequiresSteam)
4050            }
4051            "NETWORK_DISCONNECT_STEAM_DENY_MISC" => {
4052                Some(Self::NetworkDisconnectSteamDenyMisc)
4053            }
4054            "NETWORK_DISCONNECT_STEAM_DENY_BAD_ANTI_CHEAT" => {
4055                Some(Self::NetworkDisconnectSteamDenyBadAntiCheat)
4056            }
4057            "NETWORK_DISCONNECT_SERVER_SHUTDOWN" => {
4058                Some(Self::NetworkDisconnectServerShutdown)
4059            }
4060            "NETWORK_DISCONNECT_REPLAY_INCOMPATIBLE" => {
4061                Some(Self::NetworkDisconnectReplayIncompatible)
4062            }
4063            "NETWORK_DISCONNECT_CONNECT_REQUEST_TIMEDOUT" => {
4064                Some(Self::NetworkDisconnectConnectRequestTimedout)
4065            }
4066            "NETWORK_DISCONNECT_SERVER_INCOMPATIBLE" => {
4067                Some(Self::NetworkDisconnectServerIncompatible)
4068            }
4069            "NETWORK_DISCONNECT_LOCALPROBLEM_MANYRELAYS" => {
4070                Some(Self::NetworkDisconnectLocalproblemManyrelays)
4071            }
4072            "NETWORK_DISCONNECT_LOCALPROBLEM_HOSTEDSERVERPRIMARYRELAY" => {
4073                Some(Self::NetworkDisconnectLocalproblemHostedserverprimaryrelay)
4074            }
4075            "NETWORK_DISCONNECT_LOCALPROBLEM_NETWORKCONFIG" => {
4076                Some(Self::NetworkDisconnectLocalproblemNetworkconfig)
4077            }
4078            "NETWORK_DISCONNECT_LOCALPROBLEM_OTHER" => {
4079                Some(Self::NetworkDisconnectLocalproblemOther)
4080            }
4081            "NETWORK_DISCONNECT_REMOTE_TIMEOUT" => {
4082                Some(Self::NetworkDisconnectRemoteTimeout)
4083            }
4084            "NETWORK_DISCONNECT_REMOTE_TIMEOUT_CONNECTING" => {
4085                Some(Self::NetworkDisconnectRemoteTimeoutConnecting)
4086            }
4087            "NETWORK_DISCONNECT_REMOTE_OTHER" => Some(Self::NetworkDisconnectRemoteOther),
4088            "NETWORK_DISCONNECT_REMOTE_BADCRYPT" => {
4089                Some(Self::NetworkDisconnectRemoteBadcrypt)
4090            }
4091            "NETWORK_DISCONNECT_REMOTE_CERTNOTTRUSTED" => {
4092                Some(Self::NetworkDisconnectRemoteCertnottrusted)
4093            }
4094            "NETWORK_DISCONNECT_UNUSUAL" => Some(Self::NetworkDisconnectUnusual),
4095            "NETWORK_DISCONNECT_INTERNAL_ERROR" => {
4096                Some(Self::NetworkDisconnectInternalError)
4097            }
4098            "NETWORK_DISCONNECT_REJECT_BADCHALLENGE" => {
4099                Some(Self::NetworkDisconnectRejectBadchallenge)
4100            }
4101            "NETWORK_DISCONNECT_REJECT_NOLOBBY" => {
4102                Some(Self::NetworkDisconnectRejectNolobby)
4103            }
4104            "NETWORK_DISCONNECT_REJECT_BACKGROUND_MAP" => {
4105                Some(Self::NetworkDisconnectRejectBackgroundMap)
4106            }
4107            "NETWORK_DISCONNECT_REJECT_SINGLE_PLAYER" => {
4108                Some(Self::NetworkDisconnectRejectSinglePlayer)
4109            }
4110            "NETWORK_DISCONNECT_REJECT_HIDDEN_GAME" => {
4111                Some(Self::NetworkDisconnectRejectHiddenGame)
4112            }
4113            "NETWORK_DISCONNECT_REJECT_LANRESTRICT" => {
4114                Some(Self::NetworkDisconnectRejectLanrestrict)
4115            }
4116            "NETWORK_DISCONNECT_REJECT_BADPASSWORD" => {
4117                Some(Self::NetworkDisconnectRejectBadpassword)
4118            }
4119            "NETWORK_DISCONNECT_REJECT_SERVERFULL" => {
4120                Some(Self::NetworkDisconnectRejectServerfull)
4121            }
4122            "NETWORK_DISCONNECT_REJECT_INVALIDRESERVATION" => {
4123                Some(Self::NetworkDisconnectRejectInvalidreservation)
4124            }
4125            "NETWORK_DISCONNECT_REJECT_FAILEDCHANNEL" => {
4126                Some(Self::NetworkDisconnectRejectFailedchannel)
4127            }
4128            "NETWORK_DISCONNECT_REJECT_CONNECT_FROM_LOBBY" => {
4129                Some(Self::NetworkDisconnectRejectConnectFromLobby)
4130            }
4131            "NETWORK_DISCONNECT_REJECT_RESERVED_FOR_LOBBY" => {
4132                Some(Self::NetworkDisconnectRejectReservedForLobby)
4133            }
4134            "NETWORK_DISCONNECT_REJECT_INVALIDKEYLENGTH" => {
4135                Some(Self::NetworkDisconnectRejectInvalidkeylength)
4136            }
4137            "NETWORK_DISCONNECT_REJECT_OLDPROTOCOL" => {
4138                Some(Self::NetworkDisconnectRejectOldprotocol)
4139            }
4140            "NETWORK_DISCONNECT_REJECT_NEWPROTOCOL" => {
4141                Some(Self::NetworkDisconnectRejectNewprotocol)
4142            }
4143            "NETWORK_DISCONNECT_REJECT_INVALIDCONNECTION" => {
4144                Some(Self::NetworkDisconnectRejectInvalidconnection)
4145            }
4146            "NETWORK_DISCONNECT_REJECT_INVALIDCERTLEN" => {
4147                Some(Self::NetworkDisconnectRejectInvalidcertlen)
4148            }
4149            "NETWORK_DISCONNECT_REJECT_INVALIDSTEAMCERTLEN" => {
4150                Some(Self::NetworkDisconnectRejectInvalidsteamcertlen)
4151            }
4152            "NETWORK_DISCONNECT_REJECT_STEAM" => Some(Self::NetworkDisconnectRejectSteam),
4153            "NETWORK_DISCONNECT_REJECT_SERVERAUTHDISABLED" => {
4154                Some(Self::NetworkDisconnectRejectServerauthdisabled)
4155            }
4156            "NETWORK_DISCONNECT_REJECT_SERVERCDKEYAUTHINVALID" => {
4157                Some(Self::NetworkDisconnectRejectServercdkeyauthinvalid)
4158            }
4159            "NETWORK_DISCONNECT_REJECT_BANNED" => {
4160                Some(Self::NetworkDisconnectRejectBanned)
4161            }
4162            "NETWORK_DISCONNECT_KICKED_TEAMKILLING" => {
4163                Some(Self::NetworkDisconnectKickedTeamkilling)
4164            }
4165            "NETWORK_DISCONNECT_KICKED_TK_START" => {
4166                Some(Self::NetworkDisconnectKickedTkStart)
4167            }
4168            "NETWORK_DISCONNECT_KICKED_UNTRUSTEDACCOUNT" => {
4169                Some(Self::NetworkDisconnectKickedUntrustedaccount)
4170            }
4171            "NETWORK_DISCONNECT_KICKED_CONVICTEDACCOUNT" => {
4172                Some(Self::NetworkDisconnectKickedConvictedaccount)
4173            }
4174            "NETWORK_DISCONNECT_KICKED_COMPETITIVECOOLDOWN" => {
4175                Some(Self::NetworkDisconnectKickedCompetitivecooldown)
4176            }
4177            "NETWORK_DISCONNECT_KICKED_TEAMHURTING" => {
4178                Some(Self::NetworkDisconnectKickedTeamhurting)
4179            }
4180            "NETWORK_DISCONNECT_KICKED_HOSTAGEKILLING" => {
4181                Some(Self::NetworkDisconnectKickedHostagekilling)
4182            }
4183            "NETWORK_DISCONNECT_KICKED_VOTEDOFF" => {
4184                Some(Self::NetworkDisconnectKickedVotedoff)
4185            }
4186            "NETWORK_DISCONNECT_KICKED_IDLE" => Some(Self::NetworkDisconnectKickedIdle),
4187            "NETWORK_DISCONNECT_KICKED_SUICIDE" => {
4188                Some(Self::NetworkDisconnectKickedSuicide)
4189            }
4190            "NETWORK_DISCONNECT_KICKED_NOSTEAMLOGIN" => {
4191                Some(Self::NetworkDisconnectKickedNosteamlogin)
4192            }
4193            "NETWORK_DISCONNECT_KICKED_NOSTEAMTICKET" => {
4194                Some(Self::NetworkDisconnectKickedNosteamticket)
4195            }
4196            "NETWORK_DISCONNECT_KICKED_INPUTAUTOMATION" => {
4197                Some(Self::NetworkDisconnectKickedInputautomation)
4198            }
4199            "NETWORK_DISCONNECT_KICKED_VACNETABNORMALBEHAVIOR" => {
4200                Some(Self::NetworkDisconnectKickedVacnetabnormalbehavior)
4201            }
4202            "NETWORK_DISCONNECT_KICKED_INSECURECLIENT" => {
4203                Some(Self::NetworkDisconnectKickedInsecureclient)
4204            }
4205            _ => None,
4206        }
4207    }
4208}
4209#[derive(serde::Serialize, serde::Deserialize)]
4210#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4211pub struct CMsgVector {
4212    #[prost(float, optional, tag = "1")]
4213    pub x: ::core::option::Option<f32>,
4214    #[prost(float, optional, tag = "2")]
4215    pub y: ::core::option::Option<f32>,
4216    #[prost(float, optional, tag = "3")]
4217    pub z: ::core::option::Option<f32>,
4218    #[prost(float, optional, tag = "4")]
4219    pub w: ::core::option::Option<f32>,
4220}
4221#[derive(serde::Serialize, serde::Deserialize)]
4222#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4223pub struct CMsgVector2D {
4224    #[prost(float, optional, tag = "1")]
4225    pub x: ::core::option::Option<f32>,
4226    #[prost(float, optional, tag = "2")]
4227    pub y: ::core::option::Option<f32>,
4228}
4229#[derive(serde::Serialize, serde::Deserialize)]
4230#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4231pub struct CMsgQAngle {
4232    #[prost(float, optional, tag = "1")]
4233    pub x: ::core::option::Option<f32>,
4234    #[prost(float, optional, tag = "2")]
4235    pub y: ::core::option::Option<f32>,
4236    #[prost(float, optional, tag = "3")]
4237    pub z: ::core::option::Option<f32>,
4238}
4239#[derive(serde::Serialize, serde::Deserialize)]
4240#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4241pub struct CMsgQuaternion {
4242    #[prost(float, optional, tag = "1")]
4243    pub x: ::core::option::Option<f32>,
4244    #[prost(float, optional, tag = "2")]
4245    pub y: ::core::option::Option<f32>,
4246    #[prost(float, optional, tag = "3")]
4247    pub z: ::core::option::Option<f32>,
4248    #[prost(float, optional, tag = "4")]
4249    pub w: ::core::option::Option<f32>,
4250}
4251#[derive(serde::Serialize, serde::Deserialize)]
4252#[derive(Clone, Copy, PartialEq, ::prost::Message)]
4253pub struct CMsgTransform {
4254    #[prost(message, optional, tag = "1")]
4255    pub position: ::core::option::Option<CMsgVector>,
4256    #[prost(float, optional, tag = "2")]
4257    pub scale: ::core::option::Option<f32>,
4258    #[prost(message, optional, tag = "3")]
4259    pub orientation: ::core::option::Option<CMsgQuaternion>,
4260}
4261#[derive(serde::Serialize, serde::Deserialize)]
4262#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4263pub struct CMsgRgba {
4264    #[prost(int32, optional, tag = "1")]
4265    pub r: ::core::option::Option<i32>,
4266    #[prost(int32, optional, tag = "2")]
4267    pub g: ::core::option::Option<i32>,
4268    #[prost(int32, optional, tag = "3")]
4269    pub b: ::core::option::Option<i32>,
4270    #[prost(int32, optional, tag = "4")]
4271    pub a: ::core::option::Option<i32>,
4272}
4273#[derive(serde::Serialize, serde::Deserialize)]
4274#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4275pub struct CMsgPlayerInfo {
4276    #[prost(string, optional, tag = "1")]
4277    pub name: ::core::option::Option<::prost::alloc::string::String>,
4278    #[prost(fixed64, optional, tag = "2")]
4279    pub xuid: ::core::option::Option<u64>,
4280    #[prost(int32, optional, tag = "3")]
4281    pub userid: ::core::option::Option<i32>,
4282    #[prost(fixed64, optional, tag = "4")]
4283    pub steamid: ::core::option::Option<u64>,
4284    #[prost(bool, optional, tag = "5")]
4285    pub fakeplayer: ::core::option::Option<bool>,
4286    #[prost(bool, optional, tag = "6")]
4287    pub ishltv: ::core::option::Option<bool>,
4288}
4289#[derive(serde::Serialize, serde::Deserialize)]
4290#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4291pub struct CEntityMsg {
4292    #[prost(uint32, optional, tag = "1", default = "16777215")]
4293    pub target_entity: ::core::option::Option<u32>,
4294}
4295#[derive(serde::Serialize, serde::Deserialize)]
4296#[derive(Clone, PartialEq, ::prost::Message)]
4297pub struct CMsgCVars {
4298    #[prost(message, repeated, tag = "1")]
4299    pub cvars: ::prost::alloc::vec::Vec<c_msg_c_vars::CVar>,
4300}
4301/// Nested message and enum types in `CMsg_CVars`.
4302pub mod c_msg_c_vars {
4303    #[derive(serde::Serialize, serde::Deserialize)]
4304    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4305    pub struct CVar {
4306        #[prost(string, optional, tag = "1")]
4307        pub name: ::core::option::Option<::prost::alloc::string::String>,
4308        #[prost(string, optional, tag = "2")]
4309        pub value: ::core::option::Option<::prost::alloc::string::String>,
4310    }
4311}
4312#[derive(serde::Serialize, serde::Deserialize)]
4313#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4314pub struct CnetMsgNop {}
4315#[derive(serde::Serialize, serde::Deserialize)]
4316#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4317pub struct CnetMsgSplitScreenUser {
4318    #[prost(int32, optional, tag = "1")]
4319    pub slot: ::core::option::Option<i32>,
4320}
4321#[derive(serde::Serialize, serde::Deserialize)]
4322#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4323pub struct CnetMsgTick {
4324    #[prost(uint32, optional, tag = "1")]
4325    pub tick: ::core::option::Option<u32>,
4326    #[prost(uint32, optional, tag = "4")]
4327    pub host_computationtime: ::core::option::Option<u32>,
4328    #[prost(uint32, optional, tag = "5")]
4329    pub host_computationtime_std_deviation: ::core::option::Option<u32>,
4330    #[prost(uint32, optional, tag = "7")]
4331    pub legacy_host_loss: ::core::option::Option<u32>,
4332    #[prost(uint32, optional, tag = "8")]
4333    pub host_unfiltered_frametime: ::core::option::Option<u32>,
4334    #[prost(uint32, optional, tag = "9")]
4335    pub hltv_replay_flags: ::core::option::Option<u32>,
4336    #[prost(uint32, optional, tag = "10")]
4337    pub expected_long_tick: ::core::option::Option<u32>,
4338    #[prost(string, optional, tag = "11")]
4339    pub expected_long_tick_reason: ::core::option::Option<
4340        ::prost::alloc::string::String,
4341    >,
4342    #[prost(uint32, optional, tag = "12")]
4343    pub host_frame_dropped_pct_x10: ::core::option::Option<u32>,
4344    #[prost(uint32, optional, tag = "13")]
4345    pub host_frame_irregular_arrival_pct_x10: ::core::option::Option<u32>,
4346}
4347#[derive(serde::Serialize, serde::Deserialize)]
4348#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4349pub struct CnetMsgStringCmd {
4350    #[prost(string, optional, tag = "1")]
4351    pub command: ::core::option::Option<::prost::alloc::string::String>,
4352    #[prost(uint32, optional, tag = "2")]
4353    pub prediction_sync: ::core::option::Option<u32>,
4354}
4355#[derive(serde::Serialize, serde::Deserialize)]
4356#[derive(Clone, PartialEq, ::prost::Message)]
4357pub struct CnetMsgSetConVar {
4358    #[prost(message, optional, tag = "1")]
4359    pub convars: ::core::option::Option<CMsgCVars>,
4360}
4361#[derive(serde::Serialize, serde::Deserialize)]
4362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4363pub struct CnetMsgSignonState {
4364    #[prost(
4365        enumeration = "SignonStateT",
4366        optional,
4367        tag = "1",
4368        default = "SignonstateNone"
4369    )]
4370    pub signon_state: ::core::option::Option<i32>,
4371    #[prost(uint32, optional, tag = "2")]
4372    pub spawn_count: ::core::option::Option<u32>,
4373    #[prost(uint32, optional, tag = "3")]
4374    pub num_server_players: ::core::option::Option<u32>,
4375    #[prost(string, repeated, tag = "4")]
4376    pub players_networkids: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4377    #[prost(string, optional, tag = "5")]
4378    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
4379    #[prost(string, optional, tag = "6")]
4380    pub addons: ::core::option::Option<::prost::alloc::string::String>,
4381}
4382#[derive(serde::Serialize, serde::Deserialize)]
4383#[derive(Clone, PartialEq, ::prost::Message)]
4384pub struct CsvcMsgGameEvent {
4385    #[prost(string, optional, tag = "1")]
4386    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
4387    #[prost(int32, optional, tag = "2")]
4388    pub eventid: ::core::option::Option<i32>,
4389    #[prost(message, repeated, tag = "3")]
4390    pub keys: ::prost::alloc::vec::Vec<csvc_msg_game_event::KeyT>,
4391}
4392/// Nested message and enum types in `CSVCMsg_GameEvent`.
4393pub mod csvc_msg_game_event {
4394    #[derive(serde::Serialize, serde::Deserialize)]
4395    #[derive(Clone, PartialEq, ::prost::Message)]
4396    pub struct KeyT {
4397        #[prost(int32, optional, tag = "1")]
4398        pub r#type: ::core::option::Option<i32>,
4399        #[prost(string, optional, tag = "2")]
4400        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
4401        #[prost(float, optional, tag = "3")]
4402        pub val_float: ::core::option::Option<f32>,
4403        #[prost(int32, optional, tag = "4")]
4404        pub val_long: ::core::option::Option<i32>,
4405        #[prost(int32, optional, tag = "5")]
4406        pub val_short: ::core::option::Option<i32>,
4407        #[prost(int32, optional, tag = "6")]
4408        pub val_byte: ::core::option::Option<i32>,
4409        #[prost(bool, optional, tag = "7")]
4410        pub val_bool: ::core::option::Option<bool>,
4411        #[prost(uint64, optional, tag = "8")]
4412        pub val_uint64: ::core::option::Option<u64>,
4413    }
4414}
4415#[derive(serde::Serialize, serde::Deserialize)]
4416#[derive(Clone, PartialEq, ::prost::Message)]
4417pub struct CsvcMsgListGameEvents {
4418    #[prost(message, repeated, tag = "1")]
4419    pub events: ::prost::alloc::vec::Vec<csvc_msg_list_game_events::EventT>,
4420}
4421/// Nested message and enum types in `CSVCMsgList_GameEvents`.
4422pub mod csvc_msg_list_game_events {
4423    #[derive(serde::Serialize, serde::Deserialize)]
4424    #[derive(Clone, PartialEq, ::prost::Message)]
4425    pub struct EventT {
4426        #[prost(int32, optional, tag = "1")]
4427        pub tick: ::core::option::Option<i32>,
4428        #[prost(message, optional, tag = "2")]
4429        pub event: ::core::option::Option<super::CsvcMsgGameEvent>,
4430    }
4431}
4432#[derive(serde::Serialize, serde::Deserialize)]
4433#[derive(Clone, PartialEq, ::prost::Message)]
4434pub struct CnetMsgSpawnGroupLoad {
4435    #[prost(string, optional, tag = "1")]
4436    pub worldname: ::core::option::Option<::prost::alloc::string::String>,
4437    #[prost(string, optional, tag = "2")]
4438    pub entitylumpname: ::core::option::Option<::prost::alloc::string::String>,
4439    #[prost(string, optional, tag = "3")]
4440    pub entityfiltername: ::core::option::Option<::prost::alloc::string::String>,
4441    #[prost(uint32, optional, tag = "4")]
4442    pub spawngrouphandle: ::core::option::Option<u32>,
4443    #[prost(uint32, optional, tag = "5")]
4444    pub spawngroupownerhandle: ::core::option::Option<u32>,
4445    #[prost(message, optional, tag = "6")]
4446    pub world_offset_pos: ::core::option::Option<CMsgVector>,
4447    #[prost(message, optional, tag = "7")]
4448    pub world_offset_angle: ::core::option::Option<CMsgQAngle>,
4449    #[prost(bytes = "vec", optional, tag = "8")]
4450    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4451    #[prost(uint32, optional, tag = "9")]
4452    pub flags: ::core::option::Option<u32>,
4453    #[prost(int32, optional, tag = "10")]
4454    pub tickcount: ::core::option::Option<i32>,
4455    #[prost(bool, optional, tag = "11")]
4456    pub manifestincomplete: ::core::option::Option<bool>,
4457    #[prost(string, optional, tag = "12")]
4458    pub localnamefixup: ::core::option::Option<::prost::alloc::string::String>,
4459    #[prost(string, optional, tag = "13")]
4460    pub parentnamefixup: ::core::option::Option<::prost::alloc::string::String>,
4461    #[prost(int32, optional, tag = "14")]
4462    pub manifestloadpriority: ::core::option::Option<i32>,
4463    #[prost(uint32, optional, tag = "15")]
4464    pub worldgroupid: ::core::option::Option<u32>,
4465    #[prost(uint32, optional, tag = "16")]
4466    pub creationsequence: ::core::option::Option<u32>,
4467    #[prost(string, optional, tag = "17")]
4468    pub savegamefilename: ::core::option::Option<::prost::alloc::string::String>,
4469    #[prost(uint32, optional, tag = "18")]
4470    pub spawngroupparenthandle: ::core::option::Option<u32>,
4471    #[prost(bool, optional, tag = "19")]
4472    pub leveltransition: ::core::option::Option<bool>,
4473    #[prost(string, optional, tag = "20")]
4474    pub worldgroupname: ::core::option::Option<::prost::alloc::string::String>,
4475}
4476#[derive(serde::Serialize, serde::Deserialize)]
4477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4478pub struct CnetMsgSpawnGroupManifestUpdate {
4479    #[prost(uint32, optional, tag = "1")]
4480    pub spawngrouphandle: ::core::option::Option<u32>,
4481    #[prost(bytes = "vec", optional, tag = "2")]
4482    pub spawngroupmanifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4483    #[prost(bool, optional, tag = "3")]
4484    pub manifestincomplete: ::core::option::Option<bool>,
4485}
4486#[derive(serde::Serialize, serde::Deserialize)]
4487#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4488pub struct CnetMsgSpawnGroupSetCreationTick {
4489    #[prost(uint32, optional, tag = "1")]
4490    pub spawngrouphandle: ::core::option::Option<u32>,
4491    #[prost(int32, optional, tag = "2")]
4492    pub tickcount: ::core::option::Option<i32>,
4493    #[prost(uint32, optional, tag = "3")]
4494    pub creationsequence: ::core::option::Option<u32>,
4495}
4496#[derive(serde::Serialize, serde::Deserialize)]
4497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4498pub struct CnetMsgSpawnGroupUnload {
4499    #[prost(uint32, optional, tag = "1")]
4500    pub spawngrouphandle: ::core::option::Option<u32>,
4501    #[prost(uint32, optional, tag = "2")]
4502    pub flags: ::core::option::Option<u32>,
4503    #[prost(int32, optional, tag = "3")]
4504    pub tickcount: ::core::option::Option<i32>,
4505}
4506#[derive(serde::Serialize, serde::Deserialize)]
4507#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4508pub struct CnetMsgSpawnGroupLoadCompleted {
4509    #[prost(uint32, optional, tag = "1")]
4510    pub spawngrouphandle: ::core::option::Option<u32>,
4511}
4512#[derive(serde::Serialize, serde::Deserialize)]
4513#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4514pub struct CsvcMsgGameSessionConfiguration {
4515    #[prost(bool, optional, tag = "1")]
4516    pub is_multiplayer: ::core::option::Option<bool>,
4517    #[prost(bool, optional, tag = "2")]
4518    pub is_loadsavegame: ::core::option::Option<bool>,
4519    #[prost(bool, optional, tag = "3")]
4520    pub is_background_map: ::core::option::Option<bool>,
4521    #[prost(bool, optional, tag = "4")]
4522    pub is_headless: ::core::option::Option<bool>,
4523    #[prost(uint32, optional, tag = "5")]
4524    pub min_client_limit: ::core::option::Option<u32>,
4525    #[prost(uint32, optional, tag = "6")]
4526    pub max_client_limit: ::core::option::Option<u32>,
4527    #[prost(uint32, optional, tag = "7")]
4528    pub max_clients: ::core::option::Option<u32>,
4529    #[prost(fixed32, optional, tag = "8")]
4530    pub tick_interval: ::core::option::Option<u32>,
4531    #[prost(string, optional, tag = "9")]
4532    pub hostname: ::core::option::Option<::prost::alloc::string::String>,
4533    #[prost(string, optional, tag = "10")]
4534    pub savegamename: ::core::option::Option<::prost::alloc::string::String>,
4535    #[prost(string, optional, tag = "11")]
4536    pub s1_mapname: ::core::option::Option<::prost::alloc::string::String>,
4537    #[prost(string, optional, tag = "12")]
4538    pub gamemode: ::core::option::Option<::prost::alloc::string::String>,
4539    #[prost(string, optional, tag = "13")]
4540    pub server_ip_address: ::core::option::Option<::prost::alloc::string::String>,
4541    #[prost(bytes = "vec", optional, tag = "14")]
4542    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
4543    #[prost(bool, optional, tag = "15")]
4544    pub is_localonly: ::core::option::Option<bool>,
4545    #[prost(bool, optional, tag = "19")]
4546    pub no_steam_server: ::core::option::Option<bool>,
4547    #[prost(bool, optional, tag = "16")]
4548    pub is_transition: ::core::option::Option<bool>,
4549    #[prost(string, optional, tag = "17")]
4550    pub previouslevel: ::core::option::Option<::prost::alloc::string::String>,
4551    #[prost(string, optional, tag = "18")]
4552    pub landmarkname: ::core::option::Option<::prost::alloc::string::String>,
4553}
4554#[derive(serde::Serialize, serde::Deserialize)]
4555#[derive(Clone, PartialEq, ::prost::Message)]
4556pub struct CnetMsgDebugOverlay {
4557    #[prost(int32, optional, tag = "1")]
4558    pub etype: ::core::option::Option<i32>,
4559    #[prost(message, repeated, tag = "2")]
4560    pub vectors: ::prost::alloc::vec::Vec<CMsgVector>,
4561    #[prost(message, repeated, tag = "3")]
4562    pub colors: ::prost::alloc::vec::Vec<CMsgRgba>,
4563    #[prost(float, repeated, packed = "false", tag = "4")]
4564    pub dimensions: ::prost::alloc::vec::Vec<f32>,
4565    #[prost(float, repeated, packed = "false", tag = "5")]
4566    pub times: ::prost::alloc::vec::Vec<f32>,
4567    #[prost(bool, repeated, packed = "false", tag = "6")]
4568    pub bools: ::prost::alloc::vec::Vec<bool>,
4569    #[prost(uint64, repeated, packed = "false", tag = "7")]
4570    pub uint64s: ::prost::alloc::vec::Vec<u64>,
4571    #[prost(string, repeated, tag = "8")]
4572    pub strings: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
4573}
4574#[derive(serde::Serialize, serde::Deserialize)]
4575#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4576#[repr(i32)]
4577pub enum SignonStateT {
4578    SignonstateNone = 0,
4579    SignonstateChallenge = 1,
4580    SignonstateConnected = 2,
4581    SignonstateNew = 3,
4582    SignonstatePrespawn = 4,
4583    SignonstateSpawn = 5,
4584    SignonstateFull = 6,
4585    SignonstateChangelevel = 7,
4586}
4587impl SignonStateT {
4588    /// String value of the enum field names used in the ProtoBuf definition.
4589    ///
4590    /// The values are not transformed in any way and thus are considered stable
4591    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4592    pub fn as_str_name(&self) -> &'static str {
4593        match self {
4594            Self::SignonstateNone => "SIGNONSTATE_NONE",
4595            Self::SignonstateChallenge => "SIGNONSTATE_CHALLENGE",
4596            Self::SignonstateConnected => "SIGNONSTATE_CONNECTED",
4597            Self::SignonstateNew => "SIGNONSTATE_NEW",
4598            Self::SignonstatePrespawn => "SIGNONSTATE_PRESPAWN",
4599            Self::SignonstateSpawn => "SIGNONSTATE_SPAWN",
4600            Self::SignonstateFull => "SIGNONSTATE_FULL",
4601            Self::SignonstateChangelevel => "SIGNONSTATE_CHANGELEVEL",
4602        }
4603    }
4604    /// Creates an enum from field names used in the ProtoBuf definition.
4605    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4606        match value {
4607            "SIGNONSTATE_NONE" => Some(Self::SignonstateNone),
4608            "SIGNONSTATE_CHALLENGE" => Some(Self::SignonstateChallenge),
4609            "SIGNONSTATE_CONNECTED" => Some(Self::SignonstateConnected),
4610            "SIGNONSTATE_NEW" => Some(Self::SignonstateNew),
4611            "SIGNONSTATE_PRESPAWN" => Some(Self::SignonstatePrespawn),
4612            "SIGNONSTATE_SPAWN" => Some(Self::SignonstateSpawn),
4613            "SIGNONSTATE_FULL" => Some(Self::SignonstateFull),
4614            "SIGNONSTATE_CHANGELEVEL" => Some(Self::SignonstateChangelevel),
4615            _ => None,
4616        }
4617    }
4618}
4619#[derive(serde::Serialize, serde::Deserialize)]
4620#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4621#[repr(i32)]
4622pub enum NetMessages {
4623    NetNop = 0,
4624    NetDisconnectLegacy = 1,
4625    NetSplitScreenUser = 3,
4626    NetTick = 4,
4627    NetStringCmd = 5,
4628    NetSetConVar = 6,
4629    NetSignonState = 7,
4630    NetSpawnGroupLoad = 8,
4631    NetSpawnGroupManifestUpdate = 9,
4632    NetSpawnGroupSetCreationTick = 11,
4633    NetSpawnGroupUnload = 12,
4634    NetSpawnGroupLoadCompleted = 13,
4635    NetDebugOverlay = 15,
4636}
4637impl NetMessages {
4638    /// String value of the enum field names used in the ProtoBuf definition.
4639    ///
4640    /// The values are not transformed in any way and thus are considered stable
4641    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4642    pub fn as_str_name(&self) -> &'static str {
4643        match self {
4644            Self::NetNop => "net_NOP",
4645            Self::NetDisconnectLegacy => "net_Disconnect_Legacy",
4646            Self::NetSplitScreenUser => "net_SplitScreenUser",
4647            Self::NetTick => "net_Tick",
4648            Self::NetStringCmd => "net_StringCmd",
4649            Self::NetSetConVar => "net_SetConVar",
4650            Self::NetSignonState => "net_SignonState",
4651            Self::NetSpawnGroupLoad => "net_SpawnGroup_Load",
4652            Self::NetSpawnGroupManifestUpdate => "net_SpawnGroup_ManifestUpdate",
4653            Self::NetSpawnGroupSetCreationTick => "net_SpawnGroup_SetCreationTick",
4654            Self::NetSpawnGroupUnload => "net_SpawnGroup_Unload",
4655            Self::NetSpawnGroupLoadCompleted => "net_SpawnGroup_LoadCompleted",
4656            Self::NetDebugOverlay => "net_DebugOverlay",
4657        }
4658    }
4659    /// Creates an enum from field names used in the ProtoBuf definition.
4660    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4661        match value {
4662            "net_NOP" => Some(Self::NetNop),
4663            "net_Disconnect_Legacy" => Some(Self::NetDisconnectLegacy),
4664            "net_SplitScreenUser" => Some(Self::NetSplitScreenUser),
4665            "net_Tick" => Some(Self::NetTick),
4666            "net_StringCmd" => Some(Self::NetStringCmd),
4667            "net_SetConVar" => Some(Self::NetSetConVar),
4668            "net_SignonState" => Some(Self::NetSignonState),
4669            "net_SpawnGroup_Load" => Some(Self::NetSpawnGroupLoad),
4670            "net_SpawnGroup_ManifestUpdate" => Some(Self::NetSpawnGroupManifestUpdate),
4671            "net_SpawnGroup_SetCreationTick" => Some(Self::NetSpawnGroupSetCreationTick),
4672            "net_SpawnGroup_Unload" => Some(Self::NetSpawnGroupUnload),
4673            "net_SpawnGroup_LoadCompleted" => Some(Self::NetSpawnGroupLoadCompleted),
4674            "net_DebugOverlay" => Some(Self::NetDebugOverlay),
4675            _ => None,
4676        }
4677    }
4678}
4679#[derive(serde::Serialize, serde::Deserialize)]
4680#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4681#[repr(i32)]
4682pub enum SpawnGroupFlagsT {
4683    SpawnGroupLoadEntitiesFromSave = 1,
4684    SpawnGroupDontSpawnEntities = 2,
4685    SpawnGroupSynchronousSpawn = 4,
4686    SpawnGroupIsInitialSpawnGroup = 8,
4687    SpawnGroupCreateClientOnlyEntities = 16,
4688    SpawnGroupBlockUntilLoaded = 64,
4689    SpawnGroupLoadStreamingData = 128,
4690    SpawnGroupCreateNewSceneWorld = 256,
4691}
4692impl SpawnGroupFlagsT {
4693    /// String value of the enum field names used in the ProtoBuf definition.
4694    ///
4695    /// The values are not transformed in any way and thus are considered stable
4696    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4697    pub fn as_str_name(&self) -> &'static str {
4698        match self {
4699            Self::SpawnGroupLoadEntitiesFromSave => "SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE",
4700            Self::SpawnGroupDontSpawnEntities => "SPAWN_GROUP_DONT_SPAWN_ENTITIES",
4701            Self::SpawnGroupSynchronousSpawn => "SPAWN_GROUP_SYNCHRONOUS_SPAWN",
4702            Self::SpawnGroupIsInitialSpawnGroup => "SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP",
4703            Self::SpawnGroupCreateClientOnlyEntities => {
4704                "SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES"
4705            }
4706            Self::SpawnGroupBlockUntilLoaded => "SPAWN_GROUP_BLOCK_UNTIL_LOADED",
4707            Self::SpawnGroupLoadStreamingData => "SPAWN_GROUP_LOAD_STREAMING_DATA",
4708            Self::SpawnGroupCreateNewSceneWorld => "SPAWN_GROUP_CREATE_NEW_SCENE_WORLD",
4709        }
4710    }
4711    /// Creates an enum from field names used in the ProtoBuf definition.
4712    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4713        match value {
4714            "SPAWN_GROUP_LOAD_ENTITIES_FROM_SAVE" => {
4715                Some(Self::SpawnGroupLoadEntitiesFromSave)
4716            }
4717            "SPAWN_GROUP_DONT_SPAWN_ENTITIES" => Some(Self::SpawnGroupDontSpawnEntities),
4718            "SPAWN_GROUP_SYNCHRONOUS_SPAWN" => Some(Self::SpawnGroupSynchronousSpawn),
4719            "SPAWN_GROUP_IS_INITIAL_SPAWN_GROUP" => {
4720                Some(Self::SpawnGroupIsInitialSpawnGroup)
4721            }
4722            "SPAWN_GROUP_CREATE_CLIENT_ONLY_ENTITIES" => {
4723                Some(Self::SpawnGroupCreateClientOnlyEntities)
4724            }
4725            "SPAWN_GROUP_BLOCK_UNTIL_LOADED" => Some(Self::SpawnGroupBlockUntilLoaded),
4726            "SPAWN_GROUP_LOAD_STREAMING_DATA" => Some(Self::SpawnGroupLoadStreamingData),
4727            "SPAWN_GROUP_CREATE_NEW_SCENE_WORLD" => {
4728                Some(Self::SpawnGroupCreateNewSceneWorld)
4729            }
4730            _ => None,
4731        }
4732    }
4733}
4734#[derive(serde::Serialize, serde::Deserialize)]
4735#[derive(Clone, PartialEq, ::prost::Message)]
4736pub struct CModifierTableEntry {
4737    #[prost(enumeration = "ModifierEntryType", optional, tag = "1", default = "Active")]
4738    pub entry_type: ::core::option::Option<i32>,
4739    #[prost(uint32, optional, tag = "2", default = "16777215")]
4740    pub parent: ::core::option::Option<u32>,
4741    #[prost(uint32, optional, tag = "3")]
4742    pub serial_number: ::core::option::Option<u32>,
4743    #[prost(uint32, optional, tag = "4", default = "0")]
4744    pub modifier_subclass: ::core::option::Option<u32>,
4745    #[prost(int32, optional, tag = "5")]
4746    pub stack_count: ::core::option::Option<i32>,
4747    #[prost(int32, optional, tag = "6")]
4748    pub max_stack_count: ::core::option::Option<i32>,
4749    #[prost(float, optional, tag = "7")]
4750    pub last_applied_time: ::core::option::Option<f32>,
4751    #[prost(float, optional, tag = "8", default = "-1")]
4752    pub duration: ::core::option::Option<f32>,
4753    #[prost(uint32, optional, tag = "9", default = "16777215")]
4754    pub caster: ::core::option::Option<u32>,
4755    #[prost(uint32, optional, tag = "10", default = "16777215")]
4756    pub ability: ::core::option::Option<u32>,
4757    #[prost(int32, optional, tag = "11")]
4758    pub aura_provider_serial_number: ::core::option::Option<i32>,
4759    #[prost(uint32, optional, tag = "12", default = "16777215")]
4760    pub aura_provider_ehandle: ::core::option::Option<u32>,
4761    #[prost(uint32, optional, tag = "13", default = "0")]
4762    pub ability_subclass: ::core::option::Option<u32>,
4763    #[prost(bool, optional, tag = "14")]
4764    pub in_aura_range: ::core::option::Option<bool>,
4765    #[prost(bool, optional, tag = "20")]
4766    pub bool1: ::core::option::Option<bool>,
4767    #[prost(bool, optional, tag = "21")]
4768    pub bool2: ::core::option::Option<bool>,
4769    #[prost(bool, optional, tag = "22")]
4770    pub bool3: ::core::option::Option<bool>,
4771    #[prost(bool, optional, tag = "23")]
4772    pub bool4: ::core::option::Option<bool>,
4773    #[prost(int32, optional, tag = "25")]
4774    pub int1: ::core::option::Option<i32>,
4775    #[prost(int32, optional, tag = "26")]
4776    pub int2: ::core::option::Option<i32>,
4777    #[prost(int32, optional, tag = "27")]
4778    pub int3: ::core::option::Option<i32>,
4779    #[prost(int32, optional, tag = "28")]
4780    pub int4: ::core::option::Option<i32>,
4781    #[prost(float, optional, tag = "30")]
4782    pub float1: ::core::option::Option<f32>,
4783    #[prost(float, optional, tag = "31")]
4784    pub float2: ::core::option::Option<f32>,
4785    #[prost(float, optional, tag = "32")]
4786    pub float3: ::core::option::Option<f32>,
4787    #[prost(float, optional, tag = "33")]
4788    pub float4: ::core::option::Option<f32>,
4789    #[prost(float, optional, tag = "49")]
4790    pub float5: ::core::option::Option<f32>,
4791    #[prost(float, optional, tag = "50")]
4792    pub float6: ::core::option::Option<f32>,
4793    #[prost(float, optional, tag = "51")]
4794    pub float7: ::core::option::Option<f32>,
4795    #[prost(float, optional, tag = "52")]
4796    pub float8: ::core::option::Option<f32>,
4797    #[prost(float, optional, tag = "53")]
4798    pub float9: ::core::option::Option<f32>,
4799    #[prost(float, optional, tag = "54")]
4800    pub float10: ::core::option::Option<f32>,
4801    #[prost(float, optional, tag = "55")]
4802    pub float11: ::core::option::Option<f32>,
4803    #[prost(float, optional, tag = "56")]
4804    pub float12: ::core::option::Option<f32>,
4805    #[prost(float, optional, tag = "57")]
4806    pub float13: ::core::option::Option<f32>,
4807    #[prost(float, optional, tag = "58")]
4808    pub float14: ::core::option::Option<f32>,
4809    #[prost(float, optional, tag = "59")]
4810    pub float15: ::core::option::Option<f32>,
4811    #[prost(float, optional, tag = "60")]
4812    pub float16: ::core::option::Option<f32>,
4813    #[prost(uint64, optional, tag = "35")]
4814    pub uint1: ::core::option::Option<u64>,
4815    #[prost(uint64, optional, tag = "36")]
4816    pub uint2: ::core::option::Option<u64>,
4817    #[prost(uint64, optional, tag = "37")]
4818    pub uint3: ::core::option::Option<u64>,
4819    #[prost(uint64, optional, tag = "38")]
4820    pub uint4: ::core::option::Option<u64>,
4821    #[prost(message, optional, tag = "40")]
4822    pub vec1: ::core::option::Option<CMsgVector>,
4823    #[prost(message, optional, tag = "41")]
4824    pub vec2: ::core::option::Option<CMsgVector>,
4825    #[prost(message, optional, tag = "42")]
4826    pub vec3: ::core::option::Option<CMsgVector>,
4827    #[prost(message, optional, tag = "43")]
4828    pub vec4: ::core::option::Option<CMsgVector>,
4829    #[prost(string, optional, tag = "45")]
4830    pub string1: ::core::option::Option<::prost::alloc::string::String>,
4831    #[prost(string, optional, tag = "46")]
4832    pub string2: ::core::option::Option<::prost::alloc::string::String>,
4833    #[prost(string, optional, tag = "47")]
4834    pub string3: ::core::option::Option<::prost::alloc::string::String>,
4835    #[prost(string, optional, tag = "48")]
4836    pub string4: ::core::option::Option<::prost::alloc::string::String>,
4837}
4838#[derive(serde::Serialize, serde::Deserialize)]
4839#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
4840#[repr(i32)]
4841pub enum ModifierEntryType {
4842    Active = 1,
4843    Removed = 2,
4844}
4845impl ModifierEntryType {
4846    /// String value of the enum field names used in the ProtoBuf definition.
4847    ///
4848    /// The values are not transformed in any way and thus are considered stable
4849    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
4850    pub fn as_str_name(&self) -> &'static str {
4851        match self {
4852            Self::Active => "MODIFIER_ENTRY_TYPE_ACTIVE",
4853            Self::Removed => "MODIFIER_ENTRY_TYPE_REMOVED",
4854        }
4855    }
4856    /// Creates an enum from field names used in the ProtoBuf definition.
4857    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
4858        match value {
4859            "MODIFIER_ENTRY_TYPE_ACTIVE" => Some(Self::Active),
4860            "MODIFIER_ENTRY_TYPE_REMOVED" => Some(Self::Removed),
4861            _ => None,
4862        }
4863    }
4864}
4865#[derive(serde::Serialize, serde::Deserialize)]
4866#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4867pub struct CMsgSource2SystemSpecs {
4868    #[prost(string, optional, tag = "1")]
4869    pub cpu_id: ::core::option::Option<::prost::alloc::string::String>,
4870    #[prost(string, optional, tag = "2")]
4871    pub cpu_brand: ::core::option::Option<::prost::alloc::string::String>,
4872    #[prost(uint32, optional, tag = "3")]
4873    pub cpu_model: ::core::option::Option<u32>,
4874    #[prost(uint32, optional, tag = "4")]
4875    pub cpu_num_physical: ::core::option::Option<u32>,
4876    #[prost(uint32, optional, tag = "21")]
4877    pub ram_physical_total_mb: ::core::option::Option<u32>,
4878    #[prost(string, optional, tag = "41")]
4879    pub gpu_rendersystem_dll_name: ::core::option::Option<
4880        ::prost::alloc::string::String,
4881    >,
4882    #[prost(uint32, optional, tag = "42")]
4883    pub gpu_vendor_id: ::core::option::Option<u32>,
4884    #[prost(string, optional, tag = "43")]
4885    pub gpu_driver_name: ::core::option::Option<::prost::alloc::string::String>,
4886    #[prost(uint32, optional, tag = "44")]
4887    pub gpu_driver_version_high: ::core::option::Option<u32>,
4888    #[prost(uint32, optional, tag = "45")]
4889    pub gpu_driver_version_low: ::core::option::Option<u32>,
4890    #[prost(uint32, optional, tag = "46")]
4891    pub gpu_dx_support_level: ::core::option::Option<u32>,
4892    #[prost(uint32, optional, tag = "47")]
4893    pub gpu_texture_memory_size_mb: ::core::option::Option<u32>,
4894    #[prost(uint32, optional, tag = "51")]
4895    pub backbuffer_width: ::core::option::Option<u32>,
4896    #[prost(uint32, optional, tag = "52")]
4897    pub backbuffer_height: ::core::option::Option<u32>,
4898}
4899#[derive(serde::Serialize, serde::Deserialize)]
4900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
4901pub struct CMsgSource2VProfLiteReportItem {
4902    #[prost(string, optional, tag = "1")]
4903    pub name: ::core::option::Option<::prost::alloc::string::String>,
4904    #[prost(uint32, optional, tag = "2")]
4905    pub active_samples: ::core::option::Option<u32>,
4906    #[prost(uint32, optional, tag = "4")]
4907    pub active_samples_1secmax: ::core::option::Option<u32>,
4908    #[prost(uint32, optional, tag = "3")]
4909    pub usec_max: ::core::option::Option<u32>,
4910    #[prost(uint32, optional, tag = "11")]
4911    pub usec_avg_active: ::core::option::Option<u32>,
4912    #[prost(uint32, optional, tag = "12")]
4913    pub usec_p50_active: ::core::option::Option<u32>,
4914    #[prost(uint32, optional, tag = "13")]
4915    pub usec_p99_active: ::core::option::Option<u32>,
4916    #[prost(uint32, optional, tag = "21")]
4917    pub usec_avg_all: ::core::option::Option<u32>,
4918    #[prost(uint32, optional, tag = "22")]
4919    pub usec_p50_all: ::core::option::Option<u32>,
4920    #[prost(uint32, optional, tag = "23")]
4921    pub usec_p99_all: ::core::option::Option<u32>,
4922    #[prost(uint32, optional, tag = "31")]
4923    pub usec_1secmax_avg_active: ::core::option::Option<u32>,
4924    #[prost(uint32, optional, tag = "32")]
4925    pub usec_1secmax_p50_active: ::core::option::Option<u32>,
4926    #[prost(uint32, optional, tag = "33")]
4927    pub usec_1secmax_p95_active: ::core::option::Option<u32>,
4928    #[prost(uint32, optional, tag = "34")]
4929    pub usec_1secmax_p99_active: ::core::option::Option<u32>,
4930    #[prost(uint32, optional, tag = "41")]
4931    pub usec_1secmax_avg_all: ::core::option::Option<u32>,
4932    #[prost(uint32, optional, tag = "42")]
4933    pub usec_1secmax_p50_all: ::core::option::Option<u32>,
4934    #[prost(uint32, optional, tag = "43")]
4935    pub usec_1secmax_p95_all: ::core::option::Option<u32>,
4936    #[prost(uint32, optional, tag = "44")]
4937    pub usec_1secmax_p99_all: ::core::option::Option<u32>,
4938}
4939#[derive(serde::Serialize, serde::Deserialize)]
4940#[derive(Clone, PartialEq, ::prost::Message)]
4941pub struct CMsgSource2VProfLiteReport {
4942    #[prost(message, optional, tag = "1")]
4943    pub total: ::core::option::Option<CMsgSource2VProfLiteReportItem>,
4944    #[prost(message, repeated, tag = "2")]
4945    pub items: ::prost::alloc::vec::Vec<CMsgSource2VProfLiteReportItem>,
4946    #[prost(uint32, optional, tag = "3")]
4947    pub discarded_frames: ::core::option::Option<u32>,
4948}
4949#[derive(serde::Serialize, serde::Deserialize)]
4950#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
4951pub struct CMsgSource2NetworkFlowQuality {
4952    #[prost(uint32, optional, tag = "1")]
4953    pub duration: ::core::option::Option<u32>,
4954    #[prost(uint64, optional, tag = "5")]
4955    pub bytes_total: ::core::option::Option<u64>,
4956    #[prost(uint64, optional, tag = "6")]
4957    pub bytes_total_reliable: ::core::option::Option<u64>,
4958    #[prost(uint64, optional, tag = "7")]
4959    pub bytes_total_voice: ::core::option::Option<u64>,
4960    #[prost(uint32, optional, tag = "10")]
4961    pub bytes_sec_p95: ::core::option::Option<u32>,
4962    #[prost(uint32, optional, tag = "11")]
4963    pub bytes_sec_p99: ::core::option::Option<u32>,
4964    #[prost(uint32, optional, tag = "20")]
4965    pub enginemsgs_total: ::core::option::Option<u32>,
4966    #[prost(uint32, optional, tag = "21")]
4967    pub enginemsgs_sec_p95: ::core::option::Option<u32>,
4968    #[prost(uint32, optional, tag = "22")]
4969    pub enginemsgs_sec_p99: ::core::option::Option<u32>,
4970    #[prost(uint32, optional, tag = "30")]
4971    pub netframes_total: ::core::option::Option<u32>,
4972    #[prost(uint32, optional, tag = "31")]
4973    pub netframes_dropped: ::core::option::Option<u32>,
4974    #[prost(uint32, optional, tag = "32")]
4975    pub netframes_outoforder: ::core::option::Option<u32>,
4976    #[prost(uint32, optional, tag = "34")]
4977    pub netframes_size_exceeds_mtu: ::core::option::Option<u32>,
4978    #[prost(uint32, optional, tag = "35")]
4979    pub netframes_size_p95: ::core::option::Option<u32>,
4980    #[prost(uint32, optional, tag = "36")]
4981    pub netframes_size_p99: ::core::option::Option<u32>,
4982    #[prost(uint32, optional, tag = "40")]
4983    pub ticks_total: ::core::option::Option<u32>,
4984    #[prost(uint32, optional, tag = "41")]
4985    pub ticks_good: ::core::option::Option<u32>,
4986    #[prost(uint32, optional, tag = "42")]
4987    pub ticks_good_almost_late: ::core::option::Option<u32>,
4988    #[prost(uint32, optional, tag = "43")]
4989    pub ticks_fixed_dropped: ::core::option::Option<u32>,
4990    #[prost(uint32, optional, tag = "44")]
4991    pub ticks_fixed_late: ::core::option::Option<u32>,
4992    #[prost(uint32, optional, tag = "45")]
4993    pub ticks_bad_dropped: ::core::option::Option<u32>,
4994    #[prost(uint32, optional, tag = "46")]
4995    pub ticks_bad_late: ::core::option::Option<u32>,
4996    #[prost(uint32, optional, tag = "47")]
4997    pub ticks_bad_other: ::core::option::Option<u32>,
4998    #[prost(uint32, optional, tag = "50")]
4999    pub tick_missrate_samples_total: ::core::option::Option<u32>,
5000    #[prost(uint32, optional, tag = "51")]
5001    pub tick_missrate_samples_perfect: ::core::option::Option<u32>,
5002    #[prost(uint32, optional, tag = "52")]
5003    pub tick_missrate_samples_perfectnet: ::core::option::Option<u32>,
5004    #[prost(uint32, optional, tag = "53")]
5005    pub tick_missratenet_p75_x10: ::core::option::Option<u32>,
5006    #[prost(uint32, optional, tag = "54")]
5007    pub tick_missratenet_p95_x10: ::core::option::Option<u32>,
5008    #[prost(uint32, optional, tag = "55")]
5009    pub tick_missratenet_p99_x10: ::core::option::Option<u32>,
5010    #[prost(sint32, optional, tag = "61")]
5011    pub recvmargin_p1: ::core::option::Option<i32>,
5012    #[prost(sint32, optional, tag = "62")]
5013    pub recvmargin_p5: ::core::option::Option<i32>,
5014    #[prost(sint32, optional, tag = "63")]
5015    pub recvmargin_p25: ::core::option::Option<i32>,
5016    #[prost(sint32, optional, tag = "64")]
5017    pub recvmargin_p50: ::core::option::Option<i32>,
5018    #[prost(sint32, optional, tag = "65")]
5019    pub recvmargin_p75: ::core::option::Option<i32>,
5020    #[prost(sint32, optional, tag = "66")]
5021    pub recvmargin_p95: ::core::option::Option<i32>,
5022    #[prost(uint32, optional, tag = "70")]
5023    pub netframe_jitter_p50: ::core::option::Option<u32>,
5024    #[prost(uint32, optional, tag = "71")]
5025    pub netframe_jitter_p99: ::core::option::Option<u32>,
5026    #[prost(uint32, optional, tag = "72")]
5027    pub interval_peakjitter_p50: ::core::option::Option<u32>,
5028    #[prost(uint32, optional, tag = "73")]
5029    pub interval_peakjitter_p95: ::core::option::Option<u32>,
5030    #[prost(uint32, optional, tag = "74")]
5031    pub packet_misdelivery_rate_p50_x4: ::core::option::Option<u32>,
5032    #[prost(uint32, optional, tag = "75")]
5033    pub packet_misdelivery_rate_p95_x4: ::core::option::Option<u32>,
5034    #[prost(uint32, optional, tag = "80")]
5035    pub net_ping_p5: ::core::option::Option<u32>,
5036    #[prost(uint32, optional, tag = "81")]
5037    pub net_ping_p50: ::core::option::Option<u32>,
5038    #[prost(uint32, optional, tag = "82")]
5039    pub net_ping_p95: ::core::option::Option<u32>,
5040}
5041#[derive(serde::Serialize, serde::Deserialize)]
5042#[derive(Clone, PartialEq, ::prost::Message)]
5043pub struct CMsgSource2PerfIntervalSample {
5044    #[prost(float, optional, tag = "1")]
5045    pub frame_time_max_ms: ::core::option::Option<f32>,
5046    #[prost(float, optional, tag = "2")]
5047    pub frame_time_avg_ms: ::core::option::Option<f32>,
5048    #[prost(float, optional, tag = "3")]
5049    pub frame_time_min_ms: ::core::option::Option<f32>,
5050    #[prost(int32, optional, tag = "4")]
5051    pub frame_count: ::core::option::Option<i32>,
5052    #[prost(float, optional, tag = "5")]
5053    pub frame_time_total_ms: ::core::option::Option<f32>,
5054    #[prost(message, repeated, tag = "6")]
5055    pub tags: ::prost::alloc::vec::Vec<c_msg_source2_perf_interval_sample::Tag>,
5056}
5057/// Nested message and enum types in `CMsgSource2PerfIntervalSample`.
5058pub mod c_msg_source2_perf_interval_sample {
5059    #[derive(serde::Serialize, serde::Deserialize)]
5060    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5061    pub struct Tag {
5062        #[prost(string, optional, tag = "1")]
5063        pub tag: ::core::option::Option<::prost::alloc::string::String>,
5064        #[prost(uint32, optional, tag = "2")]
5065        pub max_value: ::core::option::Option<u32>,
5066    }
5067}
5068#[derive(serde::Serialize, serde::Deserialize)]
5069#[derive(Clone, PartialEq, ::prost::Message)]
5070pub struct CSource2MetricsMatchPerfSummaryNotification {
5071    #[prost(uint32, optional, tag = "1")]
5072    pub appid: ::core::option::Option<u32>,
5073    #[prost(string, optional, tag = "2")]
5074    pub game_mode: ::core::option::Option<::prost::alloc::string::String>,
5075    #[prost(uint32, optional, tag = "3")]
5076    pub server_build_id: ::core::option::Option<u32>,
5077    #[prost(fixed32, optional, tag = "4")]
5078    pub server_popid: ::core::option::Option<u32>,
5079    #[prost(message, optional, tag = "10")]
5080    pub server_profile: ::core::option::Option<CMsgSource2VProfLiteReport>,
5081    #[prost(message, repeated, tag = "11")]
5082    pub clients: ::prost::alloc::vec::Vec<
5083        c_source2_metrics_match_perf_summary_notification::Client,
5084    >,
5085    #[prost(string, optional, tag = "20")]
5086    pub map: ::core::option::Option<::prost::alloc::string::String>,
5087}
5088/// Nested message and enum types in `CSource2Metrics_MatchPerfSummary_Notification`.
5089pub mod c_source2_metrics_match_perf_summary_notification {
5090    #[derive(serde::Serialize, serde::Deserialize)]
5091    #[derive(Clone, PartialEq, ::prost::Message)]
5092    pub struct Client {
5093        #[prost(message, optional, tag = "1")]
5094        pub system_specs: ::core::option::Option<super::CMsgSource2SystemSpecs>,
5095        #[prost(message, optional, tag = "2")]
5096        pub profile: ::core::option::Option<super::CMsgSource2VProfLiteReport>,
5097        #[prost(uint32, optional, tag = "3")]
5098        pub build_id: ::core::option::Option<u32>,
5099        #[prost(message, optional, tag = "4")]
5100        pub downstream_flow: ::core::option::Option<
5101            super::CMsgSource2NetworkFlowQuality,
5102        >,
5103        #[prost(message, optional, tag = "5")]
5104        pub upstream_flow: ::core::option::Option<super::CMsgSource2NetworkFlowQuality>,
5105        #[prost(fixed64, optional, tag = "10")]
5106        pub steamid: ::core::option::Option<u64>,
5107        #[prost(message, repeated, tag = "11")]
5108        pub perf_samples: ::prost::alloc::vec::Vec<super::CMsgSource2PerfIntervalSample>,
5109    }
5110}
5111#[derive(serde::Serialize, serde::Deserialize)]
5112#[derive(Clone, PartialEq, ::prost::Message)]
5113pub struct CMsgSource2PlayStatsPackedRecordList {
5114    #[prost(string, optional, tag = "1")]
5115    pub record_name: ::core::option::Option<::prost::alloc::string::String>,
5116    #[prost(message, repeated, tag = "2")]
5117    pub field_defs: ::prost::alloc::vec::Vec<
5118        c_msg_source2_play_stats_packed_record_list::FieldDef,
5119    >,
5120    #[prost(uint32, optional, tag = "3")]
5121    pub record_count: ::core::option::Option<u32>,
5122    #[prost(uint64, repeated, tag = "4")]
5123    pub uint64_vals: ::prost::alloc::vec::Vec<u64>,
5124    #[prost(uint32, repeated, tag = "5")]
5125    pub uint32_vals: ::prost::alloc::vec::Vec<u32>,
5126    #[prost(uint32, repeated, tag = "6")]
5127    pub uint16_vals: ::prost::alloc::vec::Vec<u32>,
5128    #[prost(uint32, repeated, tag = "7")]
5129    pub uint8_vals: ::prost::alloc::vec::Vec<u32>,
5130    #[prost(int64, repeated, tag = "8")]
5131    pub int64_vals: ::prost::alloc::vec::Vec<i64>,
5132    #[prost(int32, repeated, tag = "9")]
5133    pub int32_vals: ::prost::alloc::vec::Vec<i32>,
5134    #[prost(int32, repeated, tag = "10")]
5135    pub int16_vals: ::prost::alloc::vec::Vec<i32>,
5136    #[prost(int32, repeated, tag = "11")]
5137    pub int8_vals: ::prost::alloc::vec::Vec<i32>,
5138    #[prost(double, repeated, tag = "12")]
5139    pub float64_vals: ::prost::alloc::vec::Vec<f64>,
5140    #[prost(float, repeated, tag = "13")]
5141    pub float32_vals: ::prost::alloc::vec::Vec<f32>,
5142    #[prost(bool, repeated, tag = "14")]
5143    pub bool_vals: ::prost::alloc::vec::Vec<bool>,
5144    #[prost(string, repeated, tag = "15")]
5145    pub string_vals: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5146    #[prost(string, repeated, tag = "16")]
5147    pub low_cardinality_string_vals: ::prost::alloc::vec::Vec<
5148        ::prost::alloc::string::String,
5149    >,
5150    #[prost(fixed32, repeated, tag = "17")]
5151    pub utcdatetime_vals: ::prost::alloc::vec::Vec<u32>,
5152}
5153/// Nested message and enum types in `CMsgSource2PlayStatsPackedRecordList`.
5154pub mod c_msg_source2_play_stats_packed_record_list {
5155    #[derive(serde::Serialize, serde::Deserialize)]
5156    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5157    pub struct FieldDef {
5158        #[prost(string, optional, tag = "1")]
5159        pub field_name: ::core::option::Option<::prost::alloc::string::String>,
5160        #[prost(
5161            enumeration = "super::ESource2PlayStatsFieldType",
5162            optional,
5163            tag = "2",
5164            default = "Source2PlayStatsInvalid"
5165        )]
5166        pub field_type: ::core::option::Option<i32>,
5167    }
5168}
5169#[derive(serde::Serialize, serde::Deserialize)]
5170#[derive(Clone, PartialEq, ::prost::Message)]
5171pub struct CSource2MetricsRecordPlayStatsNotification {
5172    #[prost(message, repeated, tag = "1")]
5173    pub record_types: ::prost::alloc::vec::Vec<CMsgSource2PlayStatsPackedRecordList>,
5174    #[prost(uint32, optional, tag = "2")]
5175    pub appid: ::core::option::Option<u32>,
5176}
5177#[derive(serde::Serialize, serde::Deserialize)]
5178#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
5179#[repr(i32)]
5180pub enum ESource2PlayStatsFieldType {
5181    Source2PlayStatsInvalid = 0,
5182    Source2PlayStatsUInt64 = 1,
5183    Source2PlayStatsUInt32 = 2,
5184    Source2PlayStatsUInt16 = 3,
5185    Source2PlayStatsUInt8 = 4,
5186    Source2PlayStatsInt64 = 5,
5187    Source2PlayStatsInt32 = 6,
5188    Source2PlayStatsInt16 = 7,
5189    Source2PlayStatsInt8 = 8,
5190    Source2PlayStatsFloat64 = 9,
5191    Source2PlayStatsFloat32 = 10,
5192    Source2PlayStatsBool = 11,
5193    Source2PlayStatsString = 12,
5194    Source2PlayStatsLowCardinalityString = 13,
5195    Source2PlayStatsUtcDateTime = 14,
5196}
5197impl ESource2PlayStatsFieldType {
5198    /// String value of the enum field names used in the ProtoBuf definition.
5199    ///
5200    /// The values are not transformed in any way and thus are considered stable
5201    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
5202    pub fn as_str_name(&self) -> &'static str {
5203        match self {
5204            Self::Source2PlayStatsInvalid => "Source2PlayStats_Invalid",
5205            Self::Source2PlayStatsUInt64 => "Source2PlayStats_UInt64",
5206            Self::Source2PlayStatsUInt32 => "Source2PlayStats_UInt32",
5207            Self::Source2PlayStatsUInt16 => "Source2PlayStats_UInt16",
5208            Self::Source2PlayStatsUInt8 => "Source2PlayStats_UInt8",
5209            Self::Source2PlayStatsInt64 => "Source2PlayStats_Int64",
5210            Self::Source2PlayStatsInt32 => "Source2PlayStats_Int32",
5211            Self::Source2PlayStatsInt16 => "Source2PlayStats_Int16",
5212            Self::Source2PlayStatsInt8 => "Source2PlayStats_Int8",
5213            Self::Source2PlayStatsFloat64 => "Source2PlayStats_Float64",
5214            Self::Source2PlayStatsFloat32 => "Source2PlayStats_Float32",
5215            Self::Source2PlayStatsBool => "Source2PlayStats_Bool",
5216            Self::Source2PlayStatsString => "Source2PlayStats_String",
5217            Self::Source2PlayStatsLowCardinalityString => {
5218                "Source2PlayStats_LowCardinalityString"
5219            }
5220            Self::Source2PlayStatsUtcDateTime => "Source2PlayStats_UTCDateTime",
5221        }
5222    }
5223    /// Creates an enum from field names used in the ProtoBuf definition.
5224    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
5225        match value {
5226            "Source2PlayStats_Invalid" => Some(Self::Source2PlayStatsInvalid),
5227            "Source2PlayStats_UInt64" => Some(Self::Source2PlayStatsUInt64),
5228            "Source2PlayStats_UInt32" => Some(Self::Source2PlayStatsUInt32),
5229            "Source2PlayStats_UInt16" => Some(Self::Source2PlayStatsUInt16),
5230            "Source2PlayStats_UInt8" => Some(Self::Source2PlayStatsUInt8),
5231            "Source2PlayStats_Int64" => Some(Self::Source2PlayStatsInt64),
5232            "Source2PlayStats_Int32" => Some(Self::Source2PlayStatsInt32),
5233            "Source2PlayStats_Int16" => Some(Self::Source2PlayStatsInt16),
5234            "Source2PlayStats_Int8" => Some(Self::Source2PlayStatsInt8),
5235            "Source2PlayStats_Float64" => Some(Self::Source2PlayStatsFloat64),
5236            "Source2PlayStats_Float32" => Some(Self::Source2PlayStatsFloat32),
5237            "Source2PlayStats_Bool" => Some(Self::Source2PlayStatsBool),
5238            "Source2PlayStats_String" => Some(Self::Source2PlayStatsString),
5239            "Source2PlayStats_LowCardinalityString" => {
5240                Some(Self::Source2PlayStatsLowCardinalityString)
5241            }
5242            "Source2PlayStats_UTCDateTime" => Some(Self::Source2PlayStatsUtcDateTime),
5243            _ => None,
5244        }
5245    }
5246}
5247#[derive(serde::Serialize, serde::Deserialize)]
5248#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5249pub struct CclcMsgClientInfo {
5250    #[prost(fixed32, optional, tag = "1")]
5251    pub send_table_crc: ::core::option::Option<u32>,
5252    #[prost(uint32, optional, tag = "2")]
5253    pub server_count: ::core::option::Option<u32>,
5254    #[prost(bool, optional, tag = "3")]
5255    pub is_hltv: ::core::option::Option<bool>,
5256    #[prost(uint32, optional, tag = "5")]
5257    pub friends_id: ::core::option::Option<u32>,
5258    #[prost(string, optional, tag = "6")]
5259    pub friends_name: ::core::option::Option<::prost::alloc::string::String>,
5260}
5261#[derive(serde::Serialize, serde::Deserialize)]
5262#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5263pub struct CclcMsgMove {
5264    #[prost(bytes = "vec", optional, tag = "3")]
5265    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5266    #[prost(uint32, optional, tag = "4")]
5267    pub last_command_number: ::core::option::Option<u32>,
5268}
5269#[derive(serde::Serialize, serde::Deserialize)]
5270#[derive(Clone, PartialEq, ::prost::Message)]
5271pub struct CMsgVoiceAudio {
5272    #[prost(
5273        enumeration = "VoiceDataFormatT",
5274        optional,
5275        tag = "1",
5276        default = "VoicedataFormatSteam"
5277    )]
5278    pub format: ::core::option::Option<i32>,
5279    #[prost(bytes = "vec", optional, tag = "2")]
5280    pub voice_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5281    #[prost(int32, optional, tag = "3")]
5282    pub sequence_bytes: ::core::option::Option<i32>,
5283    #[prost(uint32, optional, tag = "4")]
5284    pub section_number: ::core::option::Option<u32>,
5285    #[prost(uint32, optional, tag = "5")]
5286    pub sample_rate: ::core::option::Option<u32>,
5287    #[prost(uint32, optional, tag = "6")]
5288    pub uncompressed_sample_offset: ::core::option::Option<u32>,
5289    #[prost(uint32, optional, tag = "7")]
5290    pub num_packets: ::core::option::Option<u32>,
5291    #[prost(uint32, repeated, tag = "8")]
5292    pub packet_offsets: ::prost::alloc::vec::Vec<u32>,
5293    #[prost(float, optional, tag = "9")]
5294    pub voice_level: ::core::option::Option<f32>,
5295}
5296#[derive(serde::Serialize, serde::Deserialize)]
5297#[derive(Clone, PartialEq, ::prost::Message)]
5298pub struct CclcMsgVoiceData {
5299    #[prost(message, optional, tag = "1")]
5300    pub audio: ::core::option::Option<CMsgVoiceAudio>,
5301    #[prost(fixed64, optional, tag = "2")]
5302    pub xuid: ::core::option::Option<u64>,
5303    #[prost(uint32, optional, tag = "3")]
5304    pub tick: ::core::option::Option<u32>,
5305}
5306#[derive(serde::Serialize, serde::Deserialize)]
5307#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5308pub struct CclcMsgBaselineAck {
5309    #[prost(int32, optional, tag = "1")]
5310    pub baseline_tick: ::core::option::Option<i32>,
5311    #[prost(int32, optional, tag = "2")]
5312    pub baseline_nr: ::core::option::Option<i32>,
5313}
5314#[derive(serde::Serialize, serde::Deserialize)]
5315#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5316pub struct CclcMsgListenEvents {
5317    #[prost(fixed32, repeated, packed = "false", tag = "1")]
5318    pub event_mask: ::prost::alloc::vec::Vec<u32>,
5319}
5320#[derive(serde::Serialize, serde::Deserialize)]
5321#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5322pub struct CclcMsgRespondCvarValue {
5323    #[prost(int32, optional, tag = "1")]
5324    pub cookie: ::core::option::Option<i32>,
5325    #[prost(int32, optional, tag = "2")]
5326    pub status_code: ::core::option::Option<i32>,
5327    #[prost(string, optional, tag = "3")]
5328    pub name: ::core::option::Option<::prost::alloc::string::String>,
5329    #[prost(string, optional, tag = "4")]
5330    pub value: ::core::option::Option<::prost::alloc::string::String>,
5331}
5332#[derive(serde::Serialize, serde::Deserialize)]
5333#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5334pub struct CclcMsgLoadingProgress {
5335    #[prost(int32, optional, tag = "1")]
5336    pub progress: ::core::option::Option<i32>,
5337}
5338#[derive(serde::Serialize, serde::Deserialize)]
5339#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5340pub struct CclcMsgSplitPlayerConnect {
5341    #[prost(string, optional, tag = "1")]
5342    pub playername: ::core::option::Option<::prost::alloc::string::String>,
5343}
5344#[derive(serde::Serialize, serde::Deserialize)]
5345#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5346pub struct CclcMsgSplitPlayerDisconnect {
5347    #[prost(int32, optional, tag = "1")]
5348    pub slot: ::core::option::Option<i32>,
5349}
5350#[derive(serde::Serialize, serde::Deserialize)]
5351#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5352pub struct CclcMsgServerStatus {
5353    #[prost(bool, optional, tag = "1")]
5354    pub simplified: ::core::option::Option<bool>,
5355}
5356#[derive(serde::Serialize, serde::Deserialize)]
5357#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5358pub struct CclcMsgRequestPause {
5359    #[prost(enumeration = "RequestPauseT", optional, tag = "1", default = "RpPause")]
5360    pub pause_type: ::core::option::Option<i32>,
5361    #[prost(int32, optional, tag = "2")]
5362    pub pause_group: ::core::option::Option<i32>,
5363}
5364#[derive(serde::Serialize, serde::Deserialize)]
5365#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5366pub struct CclcMsgCmdKeyValues {
5367    #[prost(bytes = "vec", optional, tag = "1")]
5368    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5369}
5370#[derive(serde::Serialize, serde::Deserialize)]
5371#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5372pub struct CclcMsgRconServerDetails {
5373    #[prost(bytes = "vec", optional, tag = "1")]
5374    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5375}
5376#[derive(serde::Serialize, serde::Deserialize)]
5377#[derive(Clone, PartialEq, ::prost::Message)]
5378pub struct CclcMsgDiagnostic {
5379    #[prost(message, optional, tag = "1")]
5380    pub system_specs: ::core::option::Option<CMsgSource2SystemSpecs>,
5381    #[prost(message, optional, tag = "2")]
5382    pub vprof_report: ::core::option::Option<CMsgSource2VProfLiteReport>,
5383    #[prost(message, optional, tag = "3")]
5384    pub downstream_flow: ::core::option::Option<CMsgSource2NetworkFlowQuality>,
5385    #[prost(message, optional, tag = "4")]
5386    pub upstream_flow: ::core::option::Option<CMsgSource2NetworkFlowQuality>,
5387    #[prost(message, repeated, tag = "5")]
5388    pub perf_samples: ::prost::alloc::vec::Vec<CMsgSource2PerfIntervalSample>,
5389}
5390#[derive(serde::Serialize, serde::Deserialize)]
5391#[derive(Clone, PartialEq, ::prost::Message)]
5392pub struct CsvcMsgServerInfo {
5393    #[prost(int32, optional, tag = "1")]
5394    pub protocol: ::core::option::Option<i32>,
5395    #[prost(int32, optional, tag = "2")]
5396    pub server_count: ::core::option::Option<i32>,
5397    #[prost(bool, optional, tag = "3")]
5398    pub is_dedicated: ::core::option::Option<bool>,
5399    #[prost(bool, optional, tag = "4")]
5400    pub is_hltv: ::core::option::Option<bool>,
5401    #[prost(int32, optional, tag = "6")]
5402    pub c_os: ::core::option::Option<i32>,
5403    #[prost(int32, optional, tag = "10")]
5404    pub max_clients: ::core::option::Option<i32>,
5405    #[prost(int32, optional, tag = "11")]
5406    pub max_classes: ::core::option::Option<i32>,
5407    #[prost(int32, optional, tag = "12", default = "-1")]
5408    pub player_slot: ::core::option::Option<i32>,
5409    #[prost(float, optional, tag = "13")]
5410    pub tick_interval: ::core::option::Option<f32>,
5411    #[prost(string, optional, tag = "14")]
5412    pub game_dir: ::core::option::Option<::prost::alloc::string::String>,
5413    #[prost(string, optional, tag = "15")]
5414    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
5415    #[prost(string, optional, tag = "16")]
5416    pub sky_name: ::core::option::Option<::prost::alloc::string::String>,
5417    #[prost(string, optional, tag = "17")]
5418    pub host_name: ::core::option::Option<::prost::alloc::string::String>,
5419    #[prost(string, optional, tag = "18")]
5420    pub addon_name: ::core::option::Option<::prost::alloc::string::String>,
5421    #[prost(message, optional, tag = "19")]
5422    pub game_session_config: ::core::option::Option<CsvcMsgGameSessionConfiguration>,
5423    #[prost(bytes = "vec", optional, tag = "20")]
5424    pub game_session_manifest: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5425}
5426#[derive(serde::Serialize, serde::Deserialize)]
5427#[derive(Clone, PartialEq, ::prost::Message)]
5428pub struct CsvcMsgClassInfo {
5429    #[prost(bool, optional, tag = "1")]
5430    pub create_on_client: ::core::option::Option<bool>,
5431    #[prost(message, repeated, tag = "2")]
5432    pub classes: ::prost::alloc::vec::Vec<csvc_msg_class_info::ClassT>,
5433}
5434/// Nested message and enum types in `CSVCMsg_ClassInfo`.
5435pub mod csvc_msg_class_info {
5436    #[derive(serde::Serialize, serde::Deserialize)]
5437    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5438    pub struct ClassT {
5439        #[prost(int32, optional, tag = "1")]
5440        pub class_id: ::core::option::Option<i32>,
5441        #[prost(string, optional, tag = "3")]
5442        pub class_name: ::core::option::Option<::prost::alloc::string::String>,
5443    }
5444}
5445#[derive(serde::Serialize, serde::Deserialize)]
5446#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5447pub struct CsvcMsgSetPause {
5448    #[prost(bool, optional, tag = "1")]
5449    pub paused: ::core::option::Option<bool>,
5450}
5451#[derive(serde::Serialize, serde::Deserialize)]
5452#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5453pub struct CsvcMsgVoiceInit {
5454    #[prost(int32, optional, tag = "1")]
5455    pub quality: ::core::option::Option<i32>,
5456    #[prost(string, optional, tag = "2")]
5457    pub codec: ::core::option::Option<::prost::alloc::string::String>,
5458    #[prost(int32, optional, tag = "3", default = "0")]
5459    pub version: ::core::option::Option<i32>,
5460}
5461#[derive(serde::Serialize, serde::Deserialize)]
5462#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5463pub struct CsvcMsgPrint {
5464    #[prost(string, optional, tag = "1")]
5465    pub text: ::core::option::Option<::prost::alloc::string::String>,
5466}
5467#[derive(serde::Serialize, serde::Deserialize)]
5468#[derive(Clone, PartialEq, ::prost::Message)]
5469pub struct CsvcMsgSounds {
5470    #[prost(bool, optional, tag = "1")]
5471    pub reliable_sound: ::core::option::Option<bool>,
5472    #[prost(message, repeated, tag = "2")]
5473    pub sounds: ::prost::alloc::vec::Vec<csvc_msg_sounds::SounddataT>,
5474}
5475/// Nested message and enum types in `CSVCMsg_Sounds`.
5476pub mod csvc_msg_sounds {
5477    #[derive(serde::Serialize, serde::Deserialize)]
5478    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
5479    pub struct SounddataT {
5480        #[prost(sint32, optional, tag = "1")]
5481        pub origin_x: ::core::option::Option<i32>,
5482        #[prost(sint32, optional, tag = "2")]
5483        pub origin_y: ::core::option::Option<i32>,
5484        #[prost(sint32, optional, tag = "3")]
5485        pub origin_z: ::core::option::Option<i32>,
5486        #[prost(uint32, optional, tag = "4")]
5487        pub volume: ::core::option::Option<u32>,
5488        #[prost(float, optional, tag = "5")]
5489        pub delay_value: ::core::option::Option<f32>,
5490        #[prost(int32, optional, tag = "6")]
5491        pub sequence_number: ::core::option::Option<i32>,
5492        #[prost(int32, optional, tag = "7", default = "-1")]
5493        pub entity_index: ::core::option::Option<i32>,
5494        #[prost(int32, optional, tag = "8")]
5495        pub channel: ::core::option::Option<i32>,
5496        #[prost(int32, optional, tag = "9")]
5497        pub pitch: ::core::option::Option<i32>,
5498        #[prost(int32, optional, tag = "10")]
5499        pub flags: ::core::option::Option<i32>,
5500        #[prost(uint32, optional, tag = "11")]
5501        pub sound_num: ::core::option::Option<u32>,
5502        #[prost(fixed32, optional, tag = "12")]
5503        pub sound_num_handle: ::core::option::Option<u32>,
5504        #[prost(int32, optional, tag = "13")]
5505        pub speaker_entity: ::core::option::Option<i32>,
5506        #[prost(int32, optional, tag = "14")]
5507        pub random_seed: ::core::option::Option<i32>,
5508        #[prost(int32, optional, tag = "15")]
5509        pub sound_level: ::core::option::Option<i32>,
5510        #[prost(bool, optional, tag = "16")]
5511        pub is_sentence: ::core::option::Option<bool>,
5512        #[prost(bool, optional, tag = "17")]
5513        pub is_ambient: ::core::option::Option<bool>,
5514        #[prost(uint32, optional, tag = "18")]
5515        pub guid: ::core::option::Option<u32>,
5516        #[prost(fixed64, optional, tag = "19")]
5517        pub sound_resource_id: ::core::option::Option<u64>,
5518    }
5519}
5520#[derive(serde::Serialize, serde::Deserialize)]
5521#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5522pub struct CsvcMsgPrefetch {
5523    #[prost(int32, optional, tag = "1")]
5524    pub sound_index: ::core::option::Option<i32>,
5525    #[prost(enumeration = "PrefetchType", optional, tag = "2", default = "PftSound")]
5526    pub resource_type: ::core::option::Option<i32>,
5527}
5528#[derive(serde::Serialize, serde::Deserialize)]
5529#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5530pub struct CsvcMsgSetView {
5531    #[prost(int32, optional, tag = "1", default = "-1")]
5532    pub entity_index: ::core::option::Option<i32>,
5533    #[prost(int32, optional, tag = "2", default = "-1")]
5534    pub slot: ::core::option::Option<i32>,
5535}
5536#[derive(serde::Serialize, serde::Deserialize)]
5537#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5538pub struct CsvcMsgFixAngle {
5539    #[prost(bool, optional, tag = "1")]
5540    pub relative: ::core::option::Option<bool>,
5541    #[prost(message, optional, tag = "2")]
5542    pub angle: ::core::option::Option<CMsgQAngle>,
5543}
5544#[derive(serde::Serialize, serde::Deserialize)]
5545#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5546pub struct CsvcMsgCrosshairAngle {
5547    #[prost(message, optional, tag = "1")]
5548    pub angle: ::core::option::Option<CMsgQAngle>,
5549}
5550#[derive(serde::Serialize, serde::Deserialize)]
5551#[derive(Clone, Copy, PartialEq, ::prost::Message)]
5552pub struct CsvcMsgBspDecal {
5553    #[prost(message, optional, tag = "1")]
5554    pub pos: ::core::option::Option<CMsgVector>,
5555    #[prost(int32, optional, tag = "2")]
5556    pub decal_texture_index: ::core::option::Option<i32>,
5557    #[prost(int32, optional, tag = "3", default = "-1")]
5558    pub entity_index: ::core::option::Option<i32>,
5559    #[prost(int32, optional, tag = "4")]
5560    pub model_index: ::core::option::Option<i32>,
5561    #[prost(bool, optional, tag = "5")]
5562    pub low_priority: ::core::option::Option<bool>,
5563}
5564#[derive(serde::Serialize, serde::Deserialize)]
5565#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5566pub struct CsvcMsgSplitScreen {
5567    #[prost(
5568        enumeration = "ESplitScreenMessageType",
5569        optional,
5570        tag = "1",
5571        default = "MsgSplitscreenAdduser"
5572    )]
5573    pub r#type: ::core::option::Option<i32>,
5574    #[prost(int32, optional, tag = "2")]
5575    pub slot: ::core::option::Option<i32>,
5576    #[prost(int32, optional, tag = "3", default = "-1")]
5577    pub player_index: ::core::option::Option<i32>,
5578}
5579#[derive(serde::Serialize, serde::Deserialize)]
5580#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5581pub struct CsvcMsgGetCvarValue {
5582    #[prost(int32, optional, tag = "1")]
5583    pub cookie: ::core::option::Option<i32>,
5584    #[prost(string, optional, tag = "2")]
5585    pub cvar_name: ::core::option::Option<::prost::alloc::string::String>,
5586}
5587#[derive(serde::Serialize, serde::Deserialize)]
5588#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5589pub struct CsvcMsgMenu {
5590    #[prost(int32, optional, tag = "1")]
5591    pub dialog_type: ::core::option::Option<i32>,
5592    #[prost(bytes = "vec", optional, tag = "2")]
5593    pub menu_key_values: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5594}
5595#[derive(serde::Serialize, serde::Deserialize)]
5596#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5597pub struct CsvcMsgUserMessage {
5598    #[prost(int32, optional, tag = "1")]
5599    pub msg_type: ::core::option::Option<i32>,
5600    #[prost(bytes = "vec", optional, tag = "2")]
5601    pub msg_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5602    #[prost(int32, optional, tag = "3")]
5603    pub passthrough: ::core::option::Option<i32>,
5604}
5605#[derive(serde::Serialize, serde::Deserialize)]
5606#[derive(Clone, PartialEq, ::prost::Message)]
5607pub struct CsvcMsgSendTable {
5608    #[prost(bool, optional, tag = "1")]
5609    pub is_end: ::core::option::Option<bool>,
5610    #[prost(string, optional, tag = "2")]
5611    pub net_table_name: ::core::option::Option<::prost::alloc::string::String>,
5612    #[prost(bool, optional, tag = "3")]
5613    pub needs_decoder: ::core::option::Option<bool>,
5614    #[prost(message, repeated, tag = "4")]
5615    pub props: ::prost::alloc::vec::Vec<csvc_msg_send_table::SendpropT>,
5616}
5617/// Nested message and enum types in `CSVCMsg_SendTable`.
5618pub mod csvc_msg_send_table {
5619    #[derive(serde::Serialize, serde::Deserialize)]
5620    #[derive(Clone, PartialEq, ::prost::Message)]
5621    pub struct SendpropT {
5622        #[prost(int32, optional, tag = "1")]
5623        pub r#type: ::core::option::Option<i32>,
5624        #[prost(string, optional, tag = "2")]
5625        pub var_name: ::core::option::Option<::prost::alloc::string::String>,
5626        #[prost(int32, optional, tag = "3")]
5627        pub flags: ::core::option::Option<i32>,
5628        #[prost(int32, optional, tag = "4")]
5629        pub priority: ::core::option::Option<i32>,
5630        #[prost(string, optional, tag = "5")]
5631        pub dt_name: ::core::option::Option<::prost::alloc::string::String>,
5632        #[prost(int32, optional, tag = "6")]
5633        pub num_elements: ::core::option::Option<i32>,
5634        #[prost(float, optional, tag = "7")]
5635        pub low_value: ::core::option::Option<f32>,
5636        #[prost(float, optional, tag = "8")]
5637        pub high_value: ::core::option::Option<f32>,
5638        #[prost(int32, optional, tag = "9")]
5639        pub num_bits: ::core::option::Option<i32>,
5640    }
5641}
5642#[derive(serde::Serialize, serde::Deserialize)]
5643#[derive(Clone, PartialEq, ::prost::Message)]
5644pub struct CsvcMsgGameEventList {
5645    #[prost(message, repeated, tag = "1")]
5646    pub descriptors: ::prost::alloc::vec::Vec<csvc_msg_game_event_list::DescriptorT>,
5647}
5648/// Nested message and enum types in `CSVCMsg_GameEventList`.
5649pub mod csvc_msg_game_event_list {
5650    #[derive(serde::Serialize, serde::Deserialize)]
5651    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5652    pub struct KeyT {
5653        #[prost(int32, optional, tag = "1")]
5654        pub r#type: ::core::option::Option<i32>,
5655        #[prost(string, optional, tag = "2")]
5656        pub name: ::core::option::Option<::prost::alloc::string::String>,
5657    }
5658    #[derive(serde::Serialize, serde::Deserialize)]
5659    #[derive(Clone, PartialEq, ::prost::Message)]
5660    pub struct DescriptorT {
5661        #[prost(int32, optional, tag = "1")]
5662        pub eventid: ::core::option::Option<i32>,
5663        #[prost(string, optional, tag = "2")]
5664        pub name: ::core::option::Option<::prost::alloc::string::String>,
5665        #[prost(message, repeated, tag = "3")]
5666        pub keys: ::prost::alloc::vec::Vec<KeyT>,
5667    }
5668}
5669#[derive(serde::Serialize, serde::Deserialize)]
5670#[derive(Clone, PartialEq, ::prost::Message)]
5671pub struct CsvcMsgPacketEntities {
5672    #[prost(int32, optional, tag = "1")]
5673    pub max_entries: ::core::option::Option<i32>,
5674    #[prost(int32, optional, tag = "2")]
5675    pub updated_entries: ::core::option::Option<i32>,
5676    #[prost(bool, optional, tag = "3")]
5677    pub legacy_is_delta: ::core::option::Option<bool>,
5678    #[prost(bool, optional, tag = "4")]
5679    pub update_baseline: ::core::option::Option<bool>,
5680    #[prost(int32, optional, tag = "5")]
5681    pub baseline: ::core::option::Option<i32>,
5682    #[prost(int32, optional, tag = "6")]
5683    pub delta_from: ::core::option::Option<i32>,
5684    #[prost(bytes = "vec", optional, tag = "7")]
5685    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5686    #[prost(bool, optional, tag = "8")]
5687    pub pending_full_frame: ::core::option::Option<bool>,
5688    #[prost(uint32, optional, tag = "9")]
5689    pub active_spawngroup_handle: ::core::option::Option<u32>,
5690    #[prost(uint32, optional, tag = "10")]
5691    pub max_spawngroup_creationsequence: ::core::option::Option<u32>,
5692    #[prost(uint32, optional, tag = "11")]
5693    pub last_cmd_number_executed: ::core::option::Option<u32>,
5694    #[prost(sint32, optional, tag = "17")]
5695    pub last_cmd_number_recv_delta: ::core::option::Option<i32>,
5696    #[prost(uint32, optional, tag = "12")]
5697    pub server_tick: ::core::option::Option<u32>,
5698    #[prost(bytes = "vec", optional, tag = "13")]
5699    pub serialized_entities: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5700    #[prost(message, repeated, tag = "15")]
5701    pub alternate_baselines: ::prost::alloc::vec::Vec<
5702        csvc_msg_packet_entities::AlternateBaselineT,
5703    >,
5704    #[prost(uint32, optional, tag = "16")]
5705    pub has_pvs_vis_bits_deprecated: ::core::option::Option<u32>,
5706    #[prost(sint32, repeated, tag = "22")]
5707    pub cmd_recv_status: ::prost::alloc::vec::Vec<i32>,
5708    #[prost(message, optional, tag = "19")]
5709    pub non_transmitted_entities: ::core::option::Option<
5710        csvc_msg_packet_entities::NonTransmittedEntitiesT,
5711    >,
5712    #[prost(uint32, optional, tag = "20")]
5713    pub cq_starved_command_ticks: ::core::option::Option<u32>,
5714    #[prost(uint32, optional, tag = "21")]
5715    pub cq_discarded_command_ticks: ::core::option::Option<u32>,
5716    #[prost(message, optional, tag = "23")]
5717    pub outofpvs_entity_updates: ::core::option::Option<
5718        csvc_msg_packet_entities::OutofpvsEntityUpdatesT,
5719    >,
5720    #[prost(bytes = "vec", optional, tag = "999")]
5721    pub dev_padding: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5722}
5723/// Nested message and enum types in `CSVCMsg_PacketEntities`.
5724pub mod csvc_msg_packet_entities {
5725    #[derive(serde::Serialize, serde::Deserialize)]
5726    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5727    pub struct AlternateBaselineT {
5728        #[prost(int32, optional, tag = "1")]
5729        pub entity_index: ::core::option::Option<i32>,
5730        #[prost(int32, optional, tag = "2")]
5731        pub baseline_index: ::core::option::Option<i32>,
5732    }
5733    #[derive(serde::Serialize, serde::Deserialize)]
5734    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5735    pub struct NonTransmittedEntitiesT {
5736        #[prost(int32, optional, tag = "1")]
5737        pub header_count: ::core::option::Option<i32>,
5738        #[prost(bytes = "vec", optional, tag = "2")]
5739        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5740    }
5741    #[derive(serde::Serialize, serde::Deserialize)]
5742    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5743    pub struct OutofpvsEntityUpdatesT {
5744        #[prost(int32, optional, tag = "1")]
5745        pub count: ::core::option::Option<i32>,
5746        #[prost(bytes = "vec", optional, tag = "2")]
5747        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5748    }
5749}
5750#[derive(serde::Serialize, serde::Deserialize)]
5751#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5752pub struct CsvcMsgTempEntities {
5753    #[prost(bool, optional, tag = "1")]
5754    pub reliable: ::core::option::Option<bool>,
5755    #[prost(int32, optional, tag = "2")]
5756    pub num_entries: ::core::option::Option<i32>,
5757    #[prost(bytes = "vec", optional, tag = "3")]
5758    pub entity_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5759}
5760#[derive(serde::Serialize, serde::Deserialize)]
5761#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5762pub struct CsvcMsgCreateStringTable {
5763    #[prost(string, optional, tag = "1")]
5764    pub name: ::core::option::Option<::prost::alloc::string::String>,
5765    #[prost(int32, optional, tag = "2")]
5766    pub num_entries: ::core::option::Option<i32>,
5767    #[prost(bool, optional, tag = "3")]
5768    pub user_data_fixed_size: ::core::option::Option<bool>,
5769    #[prost(int32, optional, tag = "4")]
5770    pub user_data_size: ::core::option::Option<i32>,
5771    #[prost(int32, optional, tag = "5")]
5772    pub user_data_size_bits: ::core::option::Option<i32>,
5773    #[prost(int32, optional, tag = "6")]
5774    pub flags: ::core::option::Option<i32>,
5775    #[prost(bytes = "vec", optional, tag = "7")]
5776    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5777    #[prost(int32, optional, tag = "8")]
5778    pub uncompressed_size: ::core::option::Option<i32>,
5779    #[prost(bool, optional, tag = "9")]
5780    pub data_compressed: ::core::option::Option<bool>,
5781    #[prost(bool, optional, tag = "10")]
5782    pub using_varint_bitcounts: ::core::option::Option<bool>,
5783}
5784#[derive(serde::Serialize, serde::Deserialize)]
5785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5786pub struct CsvcMsgUpdateStringTable {
5787    #[prost(int32, optional, tag = "1")]
5788    pub table_id: ::core::option::Option<i32>,
5789    #[prost(int32, optional, tag = "2")]
5790    pub num_changed_entries: ::core::option::Option<i32>,
5791    #[prost(bytes = "vec", optional, tag = "3")]
5792    pub string_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5793}
5794#[derive(serde::Serialize, serde::Deserialize)]
5795#[derive(Clone, PartialEq, ::prost::Message)]
5796pub struct CsvcMsgVoiceData {
5797    #[prost(message, optional, tag = "1")]
5798    pub audio: ::core::option::Option<CMsgVoiceAudio>,
5799    #[prost(int32, optional, tag = "2", default = "-1")]
5800    pub client: ::core::option::Option<i32>,
5801    #[prost(bool, optional, tag = "3")]
5802    pub proximity: ::core::option::Option<bool>,
5803    #[prost(fixed64, optional, tag = "4")]
5804    pub xuid: ::core::option::Option<u64>,
5805    #[prost(int32, optional, tag = "5")]
5806    pub audible_mask: ::core::option::Option<i32>,
5807    #[prost(uint32, optional, tag = "6")]
5808    pub tick: ::core::option::Option<u32>,
5809    #[prost(int32, optional, tag = "7")]
5810    pub passthrough: ::core::option::Option<i32>,
5811}
5812#[derive(serde::Serialize, serde::Deserialize)]
5813#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5814pub struct CsvcMsgPacketReliable {
5815    #[prost(int32, optional, tag = "1")]
5816    pub tick: ::core::option::Option<i32>,
5817    #[prost(int32, optional, tag = "2")]
5818    pub messagessize: ::core::option::Option<i32>,
5819    #[prost(bool, optional, tag = "3")]
5820    pub state: ::core::option::Option<bool>,
5821}
5822#[derive(serde::Serialize, serde::Deserialize)]
5823#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5824pub struct CsvcMsgFullFrameSplit {
5825    #[prost(int32, optional, tag = "1")]
5826    pub tick: ::core::option::Option<i32>,
5827    #[prost(int32, optional, tag = "2")]
5828    pub section: ::core::option::Option<i32>,
5829    #[prost(int32, optional, tag = "3")]
5830    pub total: ::core::option::Option<i32>,
5831    #[prost(bytes = "vec", optional, tag = "4")]
5832    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5833}
5834#[derive(serde::Serialize, serde::Deserialize)]
5835#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5836pub struct CsvcMsgHltvStatus {
5837    #[prost(string, optional, tag = "1")]
5838    pub master: ::core::option::Option<::prost::alloc::string::String>,
5839    #[prost(int32, optional, tag = "2")]
5840    pub clients: ::core::option::Option<i32>,
5841    #[prost(int32, optional, tag = "3")]
5842    pub slots: ::core::option::Option<i32>,
5843    #[prost(int32, optional, tag = "4")]
5844    pub proxies: ::core::option::Option<i32>,
5845}
5846#[derive(serde::Serialize, serde::Deserialize)]
5847#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5848pub struct CsvcMsgServerSteamId {
5849    #[prost(uint64, optional, tag = "1")]
5850    pub steam_id: ::core::option::Option<u64>,
5851}
5852#[derive(serde::Serialize, serde::Deserialize)]
5853#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5854pub struct CsvcMsgCmdKeyValues {
5855    #[prost(bytes = "vec", optional, tag = "1")]
5856    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5857}
5858#[derive(serde::Serialize, serde::Deserialize)]
5859#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5860pub struct CsvcMsgRconServerDetails {
5861    #[prost(bytes = "vec", optional, tag = "1")]
5862    pub token: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5863    #[prost(string, optional, tag = "2")]
5864    pub details: ::core::option::Option<::prost::alloc::string::String>,
5865}
5866#[derive(serde::Serialize, serde::Deserialize)]
5867#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5868pub struct CMsgIpcAddress {
5869    #[prost(fixed64, optional, tag = "1")]
5870    pub computer_guid: ::core::option::Option<u64>,
5871    #[prost(uint32, optional, tag = "2")]
5872    pub process_id: ::core::option::Option<u32>,
5873}
5874#[derive(serde::Serialize, serde::Deserialize)]
5875#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5876pub struct CMsgServerPeer {
5877    #[prost(int32, optional, tag = "1", default = "-1")]
5878    pub player_slot: ::core::option::Option<i32>,
5879    #[prost(fixed64, optional, tag = "2")]
5880    pub steamid: ::core::option::Option<u64>,
5881    #[prost(message, optional, tag = "3")]
5882    pub ipc: ::core::option::Option<CMsgIpcAddress>,
5883    #[prost(bool, optional, tag = "4")]
5884    pub they_hear_you: ::core::option::Option<bool>,
5885    #[prost(bool, optional, tag = "5")]
5886    pub you_hear_them: ::core::option::Option<bool>,
5887    #[prost(bool, optional, tag = "6")]
5888    pub is_listenserver_host: ::core::option::Option<bool>,
5889}
5890#[derive(serde::Serialize, serde::Deserialize)]
5891#[derive(Clone, PartialEq, ::prost::Message)]
5892pub struct CsvcMsgPeerList {
5893    #[prost(message, repeated, tag = "1")]
5894    pub peer: ::prost::alloc::vec::Vec<CMsgServerPeer>,
5895}
5896#[derive(serde::Serialize, serde::Deserialize)]
5897#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5898pub struct CsvcMsgClearAllStringTables {
5899    #[prost(string, optional, tag = "1")]
5900    pub mapname: ::core::option::Option<::prost::alloc::string::String>,
5901    #[prost(bool, optional, tag = "3")]
5902    pub create_tables_skipped: ::core::option::Option<bool>,
5903}
5904#[derive(serde::Serialize, serde::Deserialize)]
5905#[derive(Clone, PartialEq, ::prost::Message)]
5906pub struct ProtoFlattenedSerializerFieldT {
5907    #[prost(int32, optional, tag = "1")]
5908    pub var_type_sym: ::core::option::Option<i32>,
5909    #[prost(int32, optional, tag = "2")]
5910    pub var_name_sym: ::core::option::Option<i32>,
5911    #[prost(int32, optional, tag = "3")]
5912    pub bit_count: ::core::option::Option<i32>,
5913    #[prost(float, optional, tag = "4")]
5914    pub low_value: ::core::option::Option<f32>,
5915    #[prost(float, optional, tag = "5")]
5916    pub high_value: ::core::option::Option<f32>,
5917    #[prost(int32, optional, tag = "6")]
5918    pub encode_flags: ::core::option::Option<i32>,
5919    #[prost(int32, optional, tag = "7")]
5920    pub field_serializer_name_sym: ::core::option::Option<i32>,
5921    #[prost(int32, optional, tag = "8")]
5922    pub field_serializer_version: ::core::option::Option<i32>,
5923    #[prost(int32, optional, tag = "9")]
5924    pub send_node_sym: ::core::option::Option<i32>,
5925    #[prost(int32, optional, tag = "10")]
5926    pub var_encoder_sym: ::core::option::Option<i32>,
5927    #[prost(message, repeated, tag = "11")]
5928    pub polymorphic_types: ::prost::alloc::vec::Vec<
5929        proto_flattened_serializer_field_t::PolymorphicFieldT,
5930    >,
5931    #[prost(int32, optional, tag = "12")]
5932    pub var_serializer_sym: ::core::option::Option<i32>,
5933}
5934/// Nested message and enum types in `ProtoFlattenedSerializerField_t`.
5935pub mod proto_flattened_serializer_field_t {
5936    #[derive(serde::Serialize, serde::Deserialize)]
5937    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5938    pub struct PolymorphicFieldT {
5939        #[prost(int32, optional, tag = "1")]
5940        pub polymorphic_field_serializer_name_sym: ::core::option::Option<i32>,
5941        #[prost(int32, optional, tag = "2")]
5942        pub polymorphic_field_serializer_version: ::core::option::Option<i32>,
5943    }
5944}
5945#[derive(serde::Serialize, serde::Deserialize)]
5946#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5947pub struct ProtoFlattenedSerializerT {
5948    #[prost(int32, optional, tag = "1")]
5949    pub serializer_name_sym: ::core::option::Option<i32>,
5950    #[prost(int32, optional, tag = "2")]
5951    pub serializer_version: ::core::option::Option<i32>,
5952    #[prost(int32, repeated, packed = "false", tag = "3")]
5953    pub fields_index: ::prost::alloc::vec::Vec<i32>,
5954}
5955#[derive(serde::Serialize, serde::Deserialize)]
5956#[derive(Clone, PartialEq, ::prost::Message)]
5957pub struct CsvcMsgFlattenedSerializer {
5958    #[prost(message, repeated, tag = "1")]
5959    pub serializers: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerT>,
5960    #[prost(string, repeated, tag = "2")]
5961    pub symbols: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
5962    #[prost(message, repeated, tag = "3")]
5963    pub fields: ::prost::alloc::vec::Vec<ProtoFlattenedSerializerFieldT>,
5964}
5965#[derive(serde::Serialize, serde::Deserialize)]
5966#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5967pub struct CsvcMsgStopSound {
5968    #[prost(fixed32, optional, tag = "1")]
5969    pub guid: ::core::option::Option<u32>,
5970}
5971#[derive(serde::Serialize, serde::Deserialize)]
5972#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5973pub struct CBidirMsgRebroadcastGameEvent {
5974    #[prost(bool, optional, tag = "1")]
5975    pub posttoserver: ::core::option::Option<bool>,
5976    #[prost(int32, optional, tag = "2")]
5977    pub buftype: ::core::option::Option<i32>,
5978    #[prost(uint32, optional, tag = "3")]
5979    pub clientbitcount: ::core::option::Option<u32>,
5980    #[prost(uint64, optional, tag = "4")]
5981    pub receivingclients: ::core::option::Option<u64>,
5982}
5983#[derive(serde::Serialize, serde::Deserialize)]
5984#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
5985pub struct CBidirMsgRebroadcastSource {
5986    #[prost(int32, optional, tag = "1")]
5987    pub eventsource: ::core::option::Option<i32>,
5988}
5989#[derive(serde::Serialize, serde::Deserialize)]
5990#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
5991pub struct CBidirMsgPredictionEvent {
5992    #[prost(uint32, optional, tag = "1")]
5993    pub event_id: ::core::option::Option<u32>,
5994    #[prost(bytes = "vec", optional, tag = "2")]
5995    pub event_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
5996    #[prost(uint32, optional, tag = "3")]
5997    pub sync_type: ::core::option::Option<u32>,
5998    #[prost(uint32, optional, tag = "4")]
5999    pub sync_val_uint32: ::core::option::Option<u32>,
6000}
6001/// Nested message and enum types in `CBidirMsg_PredictionEvent`.
6002pub mod c_bidir_msg_prediction_event {
6003    #[derive(serde::Serialize, serde::Deserialize)]
6004    #[derive(
6005        Clone,
6006        Copy,
6007        Debug,
6008        PartialEq,
6009        Eq,
6010        Hash,
6011        PartialOrd,
6012        Ord,
6013        ::prost::Enumeration
6014    )]
6015    #[repr(i32)]
6016    pub enum ESyncType {
6017        StTick = 0,
6018        StUserCmdNum = 1,
6019    }
6020    impl ESyncType {
6021        /// String value of the enum field names used in the ProtoBuf definition.
6022        ///
6023        /// The values are not transformed in any way and thus are considered stable
6024        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6025        pub fn as_str_name(&self) -> &'static str {
6026            match self {
6027                Self::StTick => "ST_Tick",
6028                Self::StUserCmdNum => "ST_UserCmdNum",
6029            }
6030        }
6031        /// Creates an enum from field names used in the ProtoBuf definition.
6032        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6033            match value {
6034                "ST_Tick" => Some(Self::StTick),
6035                "ST_UserCmdNum" => Some(Self::StUserCmdNum),
6036                _ => None,
6037            }
6038        }
6039    }
6040}
6041#[derive(serde::Serialize, serde::Deserialize)]
6042#[derive(Clone, PartialEq, ::prost::Message)]
6043pub struct CMsgServerNetworkStats {
6044    #[prost(bool, optional, tag = "1")]
6045    pub dedicated: ::core::option::Option<bool>,
6046    #[prost(int32, optional, tag = "2")]
6047    pub cpu_usage: ::core::option::Option<i32>,
6048    #[prost(int32, optional, tag = "3")]
6049    pub memory_used_mb: ::core::option::Option<i32>,
6050    #[prost(int32, optional, tag = "4")]
6051    pub memory_free_mb: ::core::option::Option<i32>,
6052    #[prost(int32, optional, tag = "5")]
6053    pub uptime: ::core::option::Option<i32>,
6054    #[prost(int32, optional, tag = "6")]
6055    pub spawn_count: ::core::option::Option<i32>,
6056    #[prost(int32, optional, tag = "8")]
6057    pub num_clients: ::core::option::Option<i32>,
6058    #[prost(int32, optional, tag = "9")]
6059    pub num_bots: ::core::option::Option<i32>,
6060    #[prost(int32, optional, tag = "10")]
6061    pub num_spectators: ::core::option::Option<i32>,
6062    #[prost(int32, optional, tag = "11")]
6063    pub num_tv_relays: ::core::option::Option<i32>,
6064    #[prost(float, optional, tag = "12")]
6065    pub fps: ::core::option::Option<f32>,
6066    #[prost(message, repeated, tag = "17")]
6067    pub ports: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Port>,
6068    #[prost(float, optional, tag = "18")]
6069    pub avg_ping_ms: ::core::option::Option<f32>,
6070    #[prost(float, optional, tag = "19")]
6071    pub avg_engine_latency_out: ::core::option::Option<f32>,
6072    #[prost(float, optional, tag = "20")]
6073    pub avg_packets_out: ::core::option::Option<f32>,
6074    #[prost(float, optional, tag = "21")]
6075    pub avg_packets_in: ::core::option::Option<f32>,
6076    #[prost(float, optional, tag = "22")]
6077    pub avg_loss_out: ::core::option::Option<f32>,
6078    #[prost(float, optional, tag = "23")]
6079    pub avg_loss_in: ::core::option::Option<f32>,
6080    #[prost(float, optional, tag = "24")]
6081    pub avg_data_out: ::core::option::Option<f32>,
6082    #[prost(float, optional, tag = "25")]
6083    pub avg_data_in: ::core::option::Option<f32>,
6084    #[prost(uint64, optional, tag = "26")]
6085    pub total_data_in: ::core::option::Option<u64>,
6086    #[prost(uint64, optional, tag = "27")]
6087    pub total_packets_in: ::core::option::Option<u64>,
6088    #[prost(uint64, optional, tag = "28")]
6089    pub total_data_out: ::core::option::Option<u64>,
6090    #[prost(uint64, optional, tag = "29")]
6091    pub total_packets_out: ::core::option::Option<u64>,
6092    #[prost(message, repeated, tag = "30")]
6093    pub players: ::prost::alloc::vec::Vec<c_msg_server_network_stats::Player>,
6094}
6095/// Nested message and enum types in `CMsgServerNetworkStats`.
6096pub mod c_msg_server_network_stats {
6097    #[derive(serde::Serialize, serde::Deserialize)]
6098    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6099    pub struct Port {
6100        #[prost(int32, optional, tag = "1")]
6101        pub port: ::core::option::Option<i32>,
6102        #[prost(string, optional, tag = "2")]
6103        pub name: ::core::option::Option<::prost::alloc::string::String>,
6104    }
6105    #[derive(serde::Serialize, serde::Deserialize)]
6106    #[derive(Clone, PartialEq, ::prost::Message)]
6107    pub struct Player {
6108        #[prost(uint64, optional, tag = "1")]
6109        pub steamid: ::core::option::Option<u64>,
6110        #[prost(string, optional, tag = "2")]
6111        pub remote_addr: ::core::option::Option<::prost::alloc::string::String>,
6112        #[prost(int32, optional, tag = "4")]
6113        pub ping_avg_ms: ::core::option::Option<i32>,
6114        #[prost(float, optional, tag = "5")]
6115        pub packet_loss_pct: ::core::option::Option<f32>,
6116        #[prost(bool, optional, tag = "6")]
6117        pub is_bot: ::core::option::Option<bool>,
6118        #[prost(float, optional, tag = "7")]
6119        pub loss_in: ::core::option::Option<f32>,
6120        #[prost(float, optional, tag = "8")]
6121        pub loss_out: ::core::option::Option<f32>,
6122        #[prost(int32, optional, tag = "9")]
6123        pub engine_latency_ms: ::core::option::Option<i32>,
6124    }
6125}
6126#[derive(serde::Serialize, serde::Deserialize)]
6127#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6128pub struct CsvcMsgHltvReplay {
6129    #[prost(int32, optional, tag = "1")]
6130    pub delay: ::core::option::Option<i32>,
6131    #[prost(int32, optional, tag = "2", default = "-1")]
6132    pub primary_target: ::core::option::Option<i32>,
6133    #[prost(int32, optional, tag = "3")]
6134    pub replay_stop_at: ::core::option::Option<i32>,
6135    #[prost(int32, optional, tag = "4")]
6136    pub replay_start_at: ::core::option::Option<i32>,
6137    #[prost(int32, optional, tag = "5")]
6138    pub replay_slowdown_begin: ::core::option::Option<i32>,
6139    #[prost(int32, optional, tag = "6")]
6140    pub replay_slowdown_end: ::core::option::Option<i32>,
6141    #[prost(float, optional, tag = "7")]
6142    pub replay_slowdown_rate: ::core::option::Option<f32>,
6143    #[prost(int32, optional, tag = "8")]
6144    pub reason: ::core::option::Option<i32>,
6145}
6146#[derive(serde::Serialize, serde::Deserialize)]
6147#[derive(Clone, Copy, PartialEq, ::prost::Message)]
6148pub struct CclcMsgHltvReplay {
6149    #[prost(int32, optional, tag = "1")]
6150    pub request: ::core::option::Option<i32>,
6151    #[prost(float, optional, tag = "2")]
6152    pub slowdown_length: ::core::option::Option<f32>,
6153    #[prost(float, optional, tag = "3")]
6154    pub slowdown_rate: ::core::option::Option<f32>,
6155    #[prost(int32, optional, tag = "4", default = "-1")]
6156    pub primary_target: ::core::option::Option<i32>,
6157    #[prost(float, optional, tag = "5")]
6158    pub event_time: ::core::option::Option<f32>,
6159}
6160#[derive(serde::Serialize, serde::Deserialize)]
6161#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6162pub struct CsvcMsgBroadcastCommand {
6163    #[prost(string, optional, tag = "1")]
6164    pub cmd: ::core::option::Option<::prost::alloc::string::String>,
6165}
6166#[derive(serde::Serialize, serde::Deserialize)]
6167#[derive(Clone, PartialEq, ::prost::Message)]
6168pub struct CclcMsgHltvFixupOperatorTick {
6169    #[prost(int32, optional, tag = "1")]
6170    pub tick: ::core::option::Option<i32>,
6171    #[prost(bytes = "vec", optional, tag = "2")]
6172    pub props_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6173    #[prost(message, optional, tag = "3")]
6174    pub origin: ::core::option::Option<CMsgVector>,
6175    #[prost(message, optional, tag = "4")]
6176    pub eye_angles: ::core::option::Option<CMsgQAngle>,
6177    #[prost(int32, optional, tag = "5")]
6178    pub observer_mode: ::core::option::Option<i32>,
6179    #[prost(bool, optional, tag = "6")]
6180    pub cameraman_scoreboard: ::core::option::Option<bool>,
6181    #[prost(int32, optional, tag = "7")]
6182    pub observer_target: ::core::option::Option<i32>,
6183    #[prost(message, optional, tag = "8")]
6184    pub view_offset: ::core::option::Option<CMsgVector>,
6185}
6186#[derive(serde::Serialize, serde::Deserialize)]
6187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6188pub struct CsvcMsgHltvFixupOperatorStatus {
6189    #[prost(uint32, optional, tag = "1")]
6190    pub mode: ::core::option::Option<u32>,
6191    #[prost(string, optional, tag = "2")]
6192    pub override_operator_name: ::core::option::Option<::prost::alloc::string::String>,
6193}
6194#[derive(serde::Serialize, serde::Deserialize)]
6195#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6196pub struct CMsgServerUserCmd {
6197    #[prost(bytes = "vec", optional, tag = "1")]
6198    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6199    #[prost(int32, optional, tag = "2")]
6200    pub cmd_number: ::core::option::Option<i32>,
6201    #[prost(int32, optional, tag = "3", default = "-1")]
6202    pub player_slot: ::core::option::Option<i32>,
6203    #[prost(int32, optional, tag = "4")]
6204    pub server_tick_executed: ::core::option::Option<i32>,
6205    #[prost(int32, optional, tag = "5")]
6206    pub client_tick: ::core::option::Option<i32>,
6207}
6208#[derive(serde::Serialize, serde::Deserialize)]
6209#[derive(Clone, PartialEq, ::prost::Message)]
6210pub struct CsvcMsgUserCommands {
6211    #[prost(message, repeated, tag = "1")]
6212    pub commands: ::prost::alloc::vec::Vec<CMsgServerUserCmd>,
6213}
6214#[derive(serde::Serialize, serde::Deserialize)]
6215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6216pub struct CsvcMsgNextMsgPredicted {
6217    #[prost(int32, optional, tag = "1", default = "-1")]
6218    pub predicted_by_player_slot: ::core::option::Option<i32>,
6219    #[prost(uint32, optional, tag = "2")]
6220    pub message_type_id: ::core::option::Option<u32>,
6221}
6222#[derive(serde::Serialize, serde::Deserialize)]
6223#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6224#[repr(i32)]
6225pub enum ClcMessages {
6226    ClcClientInfo = 20,
6227    ClcMove = 21,
6228    ClcVoiceData = 22,
6229    ClcBaselineAck = 23,
6230    ClcRespondCvarValue = 25,
6231    ClcLoadingProgress = 27,
6232    ClcSplitPlayerConnect = 28,
6233    ClcSplitPlayerDisconnect = 30,
6234    ClcServerStatus = 31,
6235    ClcRequestPause = 33,
6236    ClcCmdKeyValues = 34,
6237    ClcRconServerDetails = 35,
6238    ClcHltvReplay = 36,
6239    ClcDiagnostic = 37,
6240}
6241impl ClcMessages {
6242    /// String value of the enum field names used in the ProtoBuf definition.
6243    ///
6244    /// The values are not transformed in any way and thus are considered stable
6245    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6246    pub fn as_str_name(&self) -> &'static str {
6247        match self {
6248            Self::ClcClientInfo => "clc_ClientInfo",
6249            Self::ClcMove => "clc_Move",
6250            Self::ClcVoiceData => "clc_VoiceData",
6251            Self::ClcBaselineAck => "clc_BaselineAck",
6252            Self::ClcRespondCvarValue => "clc_RespondCvarValue",
6253            Self::ClcLoadingProgress => "clc_LoadingProgress",
6254            Self::ClcSplitPlayerConnect => "clc_SplitPlayerConnect",
6255            Self::ClcSplitPlayerDisconnect => "clc_SplitPlayerDisconnect",
6256            Self::ClcServerStatus => "clc_ServerStatus",
6257            Self::ClcRequestPause => "clc_RequestPause",
6258            Self::ClcCmdKeyValues => "clc_CmdKeyValues",
6259            Self::ClcRconServerDetails => "clc_RconServerDetails",
6260            Self::ClcHltvReplay => "clc_HltvReplay",
6261            Self::ClcDiagnostic => "clc_Diagnostic",
6262        }
6263    }
6264    /// Creates an enum from field names used in the ProtoBuf definition.
6265    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6266        match value {
6267            "clc_ClientInfo" => Some(Self::ClcClientInfo),
6268            "clc_Move" => Some(Self::ClcMove),
6269            "clc_VoiceData" => Some(Self::ClcVoiceData),
6270            "clc_BaselineAck" => Some(Self::ClcBaselineAck),
6271            "clc_RespondCvarValue" => Some(Self::ClcRespondCvarValue),
6272            "clc_LoadingProgress" => Some(Self::ClcLoadingProgress),
6273            "clc_SplitPlayerConnect" => Some(Self::ClcSplitPlayerConnect),
6274            "clc_SplitPlayerDisconnect" => Some(Self::ClcSplitPlayerDisconnect),
6275            "clc_ServerStatus" => Some(Self::ClcServerStatus),
6276            "clc_RequestPause" => Some(Self::ClcRequestPause),
6277            "clc_CmdKeyValues" => Some(Self::ClcCmdKeyValues),
6278            "clc_RconServerDetails" => Some(Self::ClcRconServerDetails),
6279            "clc_HltvReplay" => Some(Self::ClcHltvReplay),
6280            "clc_Diagnostic" => Some(Self::ClcDiagnostic),
6281            _ => None,
6282        }
6283    }
6284}
6285#[derive(serde::Serialize, serde::Deserialize)]
6286#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6287#[repr(i32)]
6288pub enum SvcMessages {
6289    SvcServerInfo = 40,
6290    SvcFlattenedSerializer = 41,
6291    SvcClassInfo = 42,
6292    SvcSetPause = 43,
6293    SvcCreateStringTable = 44,
6294    SvcUpdateStringTable = 45,
6295    SvcVoiceInit = 46,
6296    SvcVoiceData = 47,
6297    SvcPrint = 48,
6298    SvcSounds = 49,
6299    SvcSetView = 50,
6300    SvcClearAllStringTables = 51,
6301    SvcCmdKeyValues = 52,
6302    SvcBspDecal = 53,
6303    SvcSplitScreen = 54,
6304    SvcPacketEntities = 55,
6305    SvcPrefetch = 56,
6306    SvcMenu = 57,
6307    SvcGetCvarValue = 58,
6308    SvcStopSound = 59,
6309    SvcPeerList = 60,
6310    SvcPacketReliable = 61,
6311    SvcHltvStatus = 62,
6312    SvcServerSteamId = 63,
6313    SvcFullFrameSplit = 70,
6314    SvcRconServerDetails = 71,
6315    SvcUserMessage = 72,
6316    SvcBroadcastCommand = 74,
6317    SvcHltvFixupOperatorStatus = 75,
6318    SvcUserCmds = 76,
6319    SvcNextMsgPredicted = 77,
6320}
6321impl SvcMessages {
6322    /// String value of the enum field names used in the ProtoBuf definition.
6323    ///
6324    /// The values are not transformed in any way and thus are considered stable
6325    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6326    pub fn as_str_name(&self) -> &'static str {
6327        match self {
6328            Self::SvcServerInfo => "svc_ServerInfo",
6329            Self::SvcFlattenedSerializer => "svc_FlattenedSerializer",
6330            Self::SvcClassInfo => "svc_ClassInfo",
6331            Self::SvcSetPause => "svc_SetPause",
6332            Self::SvcCreateStringTable => "svc_CreateStringTable",
6333            Self::SvcUpdateStringTable => "svc_UpdateStringTable",
6334            Self::SvcVoiceInit => "svc_VoiceInit",
6335            Self::SvcVoiceData => "svc_VoiceData",
6336            Self::SvcPrint => "svc_Print",
6337            Self::SvcSounds => "svc_Sounds",
6338            Self::SvcSetView => "svc_SetView",
6339            Self::SvcClearAllStringTables => "svc_ClearAllStringTables",
6340            Self::SvcCmdKeyValues => "svc_CmdKeyValues",
6341            Self::SvcBspDecal => "svc_BSPDecal",
6342            Self::SvcSplitScreen => "svc_SplitScreen",
6343            Self::SvcPacketEntities => "svc_PacketEntities",
6344            Self::SvcPrefetch => "svc_Prefetch",
6345            Self::SvcMenu => "svc_Menu",
6346            Self::SvcGetCvarValue => "svc_GetCvarValue",
6347            Self::SvcStopSound => "svc_StopSound",
6348            Self::SvcPeerList => "svc_PeerList",
6349            Self::SvcPacketReliable => "svc_PacketReliable",
6350            Self::SvcHltvStatus => "svc_HLTVStatus",
6351            Self::SvcServerSteamId => "svc_ServerSteamID",
6352            Self::SvcFullFrameSplit => "svc_FullFrameSplit",
6353            Self::SvcRconServerDetails => "svc_RconServerDetails",
6354            Self::SvcUserMessage => "svc_UserMessage",
6355            Self::SvcBroadcastCommand => "svc_Broadcast_Command",
6356            Self::SvcHltvFixupOperatorStatus => "svc_HltvFixupOperatorStatus",
6357            Self::SvcUserCmds => "svc_UserCmds",
6358            Self::SvcNextMsgPredicted => "svc_NextMsgPredicted",
6359        }
6360    }
6361    /// Creates an enum from field names used in the ProtoBuf definition.
6362    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6363        match value {
6364            "svc_ServerInfo" => Some(Self::SvcServerInfo),
6365            "svc_FlattenedSerializer" => Some(Self::SvcFlattenedSerializer),
6366            "svc_ClassInfo" => Some(Self::SvcClassInfo),
6367            "svc_SetPause" => Some(Self::SvcSetPause),
6368            "svc_CreateStringTable" => Some(Self::SvcCreateStringTable),
6369            "svc_UpdateStringTable" => Some(Self::SvcUpdateStringTable),
6370            "svc_VoiceInit" => Some(Self::SvcVoiceInit),
6371            "svc_VoiceData" => Some(Self::SvcVoiceData),
6372            "svc_Print" => Some(Self::SvcPrint),
6373            "svc_Sounds" => Some(Self::SvcSounds),
6374            "svc_SetView" => Some(Self::SvcSetView),
6375            "svc_ClearAllStringTables" => Some(Self::SvcClearAllStringTables),
6376            "svc_CmdKeyValues" => Some(Self::SvcCmdKeyValues),
6377            "svc_BSPDecal" => Some(Self::SvcBspDecal),
6378            "svc_SplitScreen" => Some(Self::SvcSplitScreen),
6379            "svc_PacketEntities" => Some(Self::SvcPacketEntities),
6380            "svc_Prefetch" => Some(Self::SvcPrefetch),
6381            "svc_Menu" => Some(Self::SvcMenu),
6382            "svc_GetCvarValue" => Some(Self::SvcGetCvarValue),
6383            "svc_StopSound" => Some(Self::SvcStopSound),
6384            "svc_PeerList" => Some(Self::SvcPeerList),
6385            "svc_PacketReliable" => Some(Self::SvcPacketReliable),
6386            "svc_HLTVStatus" => Some(Self::SvcHltvStatus),
6387            "svc_ServerSteamID" => Some(Self::SvcServerSteamId),
6388            "svc_FullFrameSplit" => Some(Self::SvcFullFrameSplit),
6389            "svc_RconServerDetails" => Some(Self::SvcRconServerDetails),
6390            "svc_UserMessage" => Some(Self::SvcUserMessage),
6391            "svc_Broadcast_Command" => Some(Self::SvcBroadcastCommand),
6392            "svc_HltvFixupOperatorStatus" => Some(Self::SvcHltvFixupOperatorStatus),
6393            "svc_UserCmds" => Some(Self::SvcUserCmds),
6394            "svc_NextMsgPredicted" => Some(Self::SvcNextMsgPredicted),
6395            _ => None,
6396        }
6397    }
6398}
6399#[derive(serde::Serialize, serde::Deserialize)]
6400#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6401#[repr(i32)]
6402pub enum VoiceDataFormatT {
6403    VoicedataFormatSteam = 0,
6404    VoicedataFormatEngine = 1,
6405    VoicedataFormatOpus = 2,
6406}
6407impl VoiceDataFormatT {
6408    /// String value of the enum field names used in the ProtoBuf definition.
6409    ///
6410    /// The values are not transformed in any way and thus are considered stable
6411    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6412    pub fn as_str_name(&self) -> &'static str {
6413        match self {
6414            Self::VoicedataFormatSteam => "VOICEDATA_FORMAT_STEAM",
6415            Self::VoicedataFormatEngine => "VOICEDATA_FORMAT_ENGINE",
6416            Self::VoicedataFormatOpus => "VOICEDATA_FORMAT_OPUS",
6417        }
6418    }
6419    /// Creates an enum from field names used in the ProtoBuf definition.
6420    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6421        match value {
6422            "VOICEDATA_FORMAT_STEAM" => Some(Self::VoicedataFormatSteam),
6423            "VOICEDATA_FORMAT_ENGINE" => Some(Self::VoicedataFormatEngine),
6424            "VOICEDATA_FORMAT_OPUS" => Some(Self::VoicedataFormatOpus),
6425            _ => None,
6426        }
6427    }
6428}
6429#[derive(serde::Serialize, serde::Deserialize)]
6430#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6431#[repr(i32)]
6432pub enum RequestPauseT {
6433    RpPause = 0,
6434    RpUnpause = 1,
6435    RpTogglepause = 2,
6436}
6437impl RequestPauseT {
6438    /// String value of the enum field names used in the ProtoBuf definition.
6439    ///
6440    /// The values are not transformed in any way and thus are considered stable
6441    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6442    pub fn as_str_name(&self) -> &'static str {
6443        match self {
6444            Self::RpPause => "RP_PAUSE",
6445            Self::RpUnpause => "RP_UNPAUSE",
6446            Self::RpTogglepause => "RP_TOGGLEPAUSE",
6447        }
6448    }
6449    /// Creates an enum from field names used in the ProtoBuf definition.
6450    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6451        match value {
6452            "RP_PAUSE" => Some(Self::RpPause),
6453            "RP_UNPAUSE" => Some(Self::RpUnpause),
6454            "RP_TOGGLEPAUSE" => Some(Self::RpTogglepause),
6455            _ => None,
6456        }
6457    }
6458}
6459#[derive(serde::Serialize, serde::Deserialize)]
6460#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6461#[repr(i32)]
6462pub enum PrefetchType {
6463    PftSound = 0,
6464}
6465impl PrefetchType {
6466    /// String value of the enum field names used in the ProtoBuf definition.
6467    ///
6468    /// The values are not transformed in any way and thus are considered stable
6469    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6470    pub fn as_str_name(&self) -> &'static str {
6471        match self {
6472            Self::PftSound => "PFT_SOUND",
6473        }
6474    }
6475    /// Creates an enum from field names used in the ProtoBuf definition.
6476    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6477        match value {
6478            "PFT_SOUND" => Some(Self::PftSound),
6479            _ => None,
6480        }
6481    }
6482}
6483#[derive(serde::Serialize, serde::Deserialize)]
6484#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6485#[repr(i32)]
6486pub enum ESplitScreenMessageType {
6487    MsgSplitscreenAdduser = 0,
6488    MsgSplitscreenRemoveuser = 1,
6489}
6490impl ESplitScreenMessageType {
6491    /// String value of the enum field names used in the ProtoBuf definition.
6492    ///
6493    /// The values are not transformed in any way and thus are considered stable
6494    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6495    pub fn as_str_name(&self) -> &'static str {
6496        match self {
6497            Self::MsgSplitscreenAdduser => "MSG_SPLITSCREEN_ADDUSER",
6498            Self::MsgSplitscreenRemoveuser => "MSG_SPLITSCREEN_REMOVEUSER",
6499        }
6500    }
6501    /// Creates an enum from field names used in the ProtoBuf definition.
6502    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6503        match value {
6504            "MSG_SPLITSCREEN_ADDUSER" => Some(Self::MsgSplitscreenAdduser),
6505            "MSG_SPLITSCREEN_REMOVEUSER" => Some(Self::MsgSplitscreenRemoveuser),
6506            _ => None,
6507        }
6508    }
6509}
6510#[derive(serde::Serialize, serde::Deserialize)]
6511#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6512#[repr(i32)]
6513pub enum EQueryCvarValueStatus {
6514    ValueIntact = 0,
6515    CvarNotFound = 1,
6516    NotACvar = 2,
6517    CvarProtected = 3,
6518}
6519impl EQueryCvarValueStatus {
6520    /// String value of the enum field names used in the ProtoBuf definition.
6521    ///
6522    /// The values are not transformed in any way and thus are considered stable
6523    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6524    pub fn as_str_name(&self) -> &'static str {
6525        match self {
6526            Self::ValueIntact => "eQueryCvarValueStatus_ValueIntact",
6527            Self::CvarNotFound => "eQueryCvarValueStatus_CvarNotFound",
6528            Self::NotACvar => "eQueryCvarValueStatus_NotACvar",
6529            Self::CvarProtected => "eQueryCvarValueStatus_CvarProtected",
6530        }
6531    }
6532    /// Creates an enum from field names used in the ProtoBuf definition.
6533    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6534        match value {
6535            "eQueryCvarValueStatus_ValueIntact" => Some(Self::ValueIntact),
6536            "eQueryCvarValueStatus_CvarNotFound" => Some(Self::CvarNotFound),
6537            "eQueryCvarValueStatus_NotACvar" => Some(Self::NotACvar),
6538            "eQueryCvarValueStatus_CvarProtected" => Some(Self::CvarProtected),
6539            _ => None,
6540        }
6541    }
6542}
6543#[derive(serde::Serialize, serde::Deserialize)]
6544#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6545#[repr(i32)]
6546pub enum DialogType {
6547    DialogMsg = 0,
6548    DialogMenu = 1,
6549    DialogText = 2,
6550    DialogEntry = 3,
6551    DialogAskconnect = 4,
6552}
6553impl DialogType {
6554    /// String value of the enum field names used in the ProtoBuf definition.
6555    ///
6556    /// The values are not transformed in any way and thus are considered stable
6557    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6558    pub fn as_str_name(&self) -> &'static str {
6559        match self {
6560            Self::DialogMsg => "DIALOG_MSG",
6561            Self::DialogMenu => "DIALOG_MENU",
6562            Self::DialogText => "DIALOG_TEXT",
6563            Self::DialogEntry => "DIALOG_ENTRY",
6564            Self::DialogAskconnect => "DIALOG_ASKCONNECT",
6565        }
6566    }
6567    /// Creates an enum from field names used in the ProtoBuf definition.
6568    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6569        match value {
6570            "DIALOG_MSG" => Some(Self::DialogMsg),
6571            "DIALOG_MENU" => Some(Self::DialogMenu),
6572            "DIALOG_TEXT" => Some(Self::DialogText),
6573            "DIALOG_ENTRY" => Some(Self::DialogEntry),
6574            "DIALOG_ASKCONNECT" => Some(Self::DialogAskconnect),
6575            _ => None,
6576        }
6577    }
6578}
6579#[derive(serde::Serialize, serde::Deserialize)]
6580#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6581#[repr(i32)]
6582pub enum SvcMessagesLowFrequency {
6583    SvcDummy = 600,
6584}
6585impl SvcMessagesLowFrequency {
6586    /// String value of the enum field names used in the ProtoBuf definition.
6587    ///
6588    /// The values are not transformed in any way and thus are considered stable
6589    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6590    pub fn as_str_name(&self) -> &'static str {
6591        match self {
6592            Self::SvcDummy => "svc_dummy",
6593        }
6594    }
6595    /// Creates an enum from field names used in the ProtoBuf definition.
6596    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6597        match value {
6598            "svc_dummy" => Some(Self::SvcDummy),
6599            _ => None,
6600        }
6601    }
6602}
6603#[derive(serde::Serialize, serde::Deserialize)]
6604#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6605#[repr(i32)]
6606pub enum BidirectionalMessages {
6607    BiRebroadcastGameEvent = 16,
6608    BiRebroadcastSource = 17,
6609    BiGameEvent = 18,
6610    BiPredictionEvent = 19,
6611}
6612impl BidirectionalMessages {
6613    /// String value of the enum field names used in the ProtoBuf definition.
6614    ///
6615    /// The values are not transformed in any way and thus are considered stable
6616    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6617    pub fn as_str_name(&self) -> &'static str {
6618        match self {
6619            Self::BiRebroadcastGameEvent => "bi_RebroadcastGameEvent",
6620            Self::BiRebroadcastSource => "bi_RebroadcastSource",
6621            Self::BiGameEvent => "bi_GameEvent",
6622            Self::BiPredictionEvent => "bi_PredictionEvent",
6623        }
6624    }
6625    /// Creates an enum from field names used in the ProtoBuf definition.
6626    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6627        match value {
6628            "bi_RebroadcastGameEvent" => Some(Self::BiRebroadcastGameEvent),
6629            "bi_RebroadcastSource" => Some(Self::BiRebroadcastSource),
6630            "bi_GameEvent" => Some(Self::BiGameEvent),
6631            "bi_PredictionEvent" => Some(Self::BiPredictionEvent),
6632            _ => None,
6633        }
6634    }
6635}
6636#[derive(serde::Serialize, serde::Deserialize)]
6637#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6638#[repr(i32)]
6639pub enum BidirectionalMessagesLowFrequency {
6640    BiRelayInfo = 700,
6641    BiRelayPacket = 701,
6642}
6643impl BidirectionalMessagesLowFrequency {
6644    /// String value of the enum field names used in the ProtoBuf definition.
6645    ///
6646    /// The values are not transformed in any way and thus are considered stable
6647    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6648    pub fn as_str_name(&self) -> &'static str {
6649        match self {
6650            Self::BiRelayInfo => "bi_RelayInfo",
6651            Self::BiRelayPacket => "bi_RelayPacket",
6652        }
6653    }
6654    /// Creates an enum from field names used in the ProtoBuf definition.
6655    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6656        match value {
6657            "bi_RelayInfo" => Some(Self::BiRelayInfo),
6658            "bi_RelayPacket" => Some(Self::BiRelayPacket),
6659            _ => None,
6660        }
6661    }
6662}
6663#[derive(serde::Serialize, serde::Deserialize)]
6664#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6665#[repr(i32)]
6666pub enum ReplayEventTypeT {
6667    ReplayEventCancel = 0,
6668    ReplayEventDeath = 1,
6669    ReplayEventGeneric = 2,
6670    ReplayEventStuckNeedFullUpdate = 3,
6671    ReplayEventVictory = 4,
6672}
6673impl ReplayEventTypeT {
6674    /// String value of the enum field names used in the ProtoBuf definition.
6675    ///
6676    /// The values are not transformed in any way and thus are considered stable
6677    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6678    pub fn as_str_name(&self) -> &'static str {
6679        match self {
6680            Self::ReplayEventCancel => "REPLAY_EVENT_CANCEL",
6681            Self::ReplayEventDeath => "REPLAY_EVENT_DEATH",
6682            Self::ReplayEventGeneric => "REPLAY_EVENT_GENERIC",
6683            Self::ReplayEventStuckNeedFullUpdate => "REPLAY_EVENT_STUCK_NEED_FULL_UPDATE",
6684            Self::ReplayEventVictory => "REPLAY_EVENT_VICTORY",
6685        }
6686    }
6687    /// Creates an enum from field names used in the ProtoBuf definition.
6688    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6689        match value {
6690            "REPLAY_EVENT_CANCEL" => Some(Self::ReplayEventCancel),
6691            "REPLAY_EVENT_DEATH" => Some(Self::ReplayEventDeath),
6692            "REPLAY_EVENT_GENERIC" => Some(Self::ReplayEventGeneric),
6693            "REPLAY_EVENT_STUCK_NEED_FULL_UPDATE" => {
6694                Some(Self::ReplayEventStuckNeedFullUpdate)
6695            }
6696            "REPLAY_EVENT_VICTORY" => Some(Self::ReplayEventVictory),
6697            _ => None,
6698        }
6699    }
6700}
6701#[derive(serde::Serialize, serde::Deserialize)]
6702#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6703pub struct Cp2pTextMessage {
6704    #[prost(bytes = "vec", optional, tag = "1")]
6705    pub text: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6706}
6707#[derive(serde::Serialize, serde::Deserialize)]
6708#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6709pub struct CSteamVoiceEncoding {
6710    #[prost(bytes = "vec", optional, tag = "1")]
6711    pub voice_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6712}
6713#[derive(serde::Serialize, serde::Deserialize)]
6714#[derive(Clone, PartialEq, ::prost::Message)]
6715pub struct Cp2pVoice {
6716    #[prost(message, optional, tag = "1")]
6717    pub audio: ::core::option::Option<CMsgVoiceAudio>,
6718    #[prost(uint32, optional, tag = "2")]
6719    pub broadcast_group: ::core::option::Option<u32>,
6720}
6721/// Nested message and enum types in `CP2P_Voice`.
6722pub mod cp2p_voice {
6723    #[derive(serde::Serialize, serde::Deserialize)]
6724    #[derive(
6725        Clone,
6726        Copy,
6727        Debug,
6728        PartialEq,
6729        Eq,
6730        Hash,
6731        PartialOrd,
6732        Ord,
6733        ::prost::Enumeration
6734    )]
6735    #[repr(i32)]
6736    pub enum HandlerFlags {
6737        PlayedAudio = 1,
6738    }
6739    impl HandlerFlags {
6740        /// String value of the enum field names used in the ProtoBuf definition.
6741        ///
6742        /// The values are not transformed in any way and thus are considered stable
6743        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6744        pub fn as_str_name(&self) -> &'static str {
6745            match self {
6746                Self::PlayedAudio => "Played_Audio",
6747            }
6748        }
6749        /// Creates an enum from field names used in the ProtoBuf definition.
6750        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6751            match value {
6752                "Played_Audio" => Some(Self::PlayedAudio),
6753                _ => None,
6754            }
6755        }
6756    }
6757}
6758#[derive(serde::Serialize, serde::Deserialize)]
6759#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6760pub struct Cp2pPing {
6761    #[prost(uint64, optional, tag = "1")]
6762    pub send_time: ::core::option::Option<u64>,
6763    #[prost(bool, optional, tag = "2")]
6764    pub is_reply: ::core::option::Option<bool>,
6765}
6766#[derive(serde::Serialize, serde::Deserialize)]
6767#[derive(Clone, PartialEq, ::prost::Message)]
6768pub struct Cp2pVrAvatarPosition {
6769    #[prost(message, repeated, tag = "1")]
6770    pub body_parts: ::prost::alloc::vec::Vec<cp2p_vr_avatar_position::COrientation>,
6771    #[prost(int32, optional, tag = "2")]
6772    pub hat_id: ::core::option::Option<i32>,
6773    #[prost(int32, optional, tag = "3")]
6774    pub scene_id: ::core::option::Option<i32>,
6775    #[prost(int32, optional, tag = "4")]
6776    pub world_scale: ::core::option::Option<i32>,
6777}
6778/// Nested message and enum types in `CP2P_VRAvatarPosition`.
6779pub mod cp2p_vr_avatar_position {
6780    #[derive(serde::Serialize, serde::Deserialize)]
6781    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
6782    pub struct COrientation {
6783        #[prost(message, optional, tag = "1")]
6784        pub pos: ::core::option::Option<super::CMsgVector>,
6785        #[prost(message, optional, tag = "2")]
6786        pub ang: ::core::option::Option<super::CMsgQAngle>,
6787    }
6788}
6789#[derive(serde::Serialize, serde::Deserialize)]
6790#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6791pub struct Cp2pWatchSynchronization {
6792    #[prost(int32, optional, tag = "1")]
6793    pub demo_tick: ::core::option::Option<i32>,
6794    #[prost(bool, optional, tag = "2")]
6795    pub paused: ::core::option::Option<bool>,
6796    #[prost(uint64, optional, tag = "3")]
6797    pub tv_listen_voice_indices: ::core::option::Option<u64>,
6798    #[prost(int32, optional, tag = "4")]
6799    pub dota_spectator_mode: ::core::option::Option<i32>,
6800    #[prost(bool, optional, tag = "5")]
6801    pub dota_spectator_watching_broadcaster: ::core::option::Option<bool>,
6802    #[prost(int32, optional, tag = "6")]
6803    pub dota_spectator_hero_index: ::core::option::Option<i32>,
6804    #[prost(int32, optional, tag = "7")]
6805    pub dota_spectator_autospeed: ::core::option::Option<i32>,
6806    #[prost(int32, optional, tag = "8")]
6807    pub dota_replay_speed: ::core::option::Option<i32>,
6808}
6809#[derive(serde::Serialize, serde::Deserialize)]
6810#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
6811#[repr(i32)]
6812pub enum P2pMessages {
6813    P2pTextMessage = 256,
6814    P2pVoice = 257,
6815    P2pPing = 258,
6816    P2pVrAvatarPosition = 259,
6817    P2pWatchSynchronization = 260,
6818    P2pFightingGameGameData = 261,
6819    P2pFightingGameConnection = 262,
6820}
6821impl P2pMessages {
6822    /// String value of the enum field names used in the ProtoBuf definition.
6823    ///
6824    /// The values are not transformed in any way and thus are considered stable
6825    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
6826    pub fn as_str_name(&self) -> &'static str {
6827        match self {
6828            Self::P2pTextMessage => "p2p_TextMessage",
6829            Self::P2pVoice => "p2p_Voice",
6830            Self::P2pPing => "p2p_Ping",
6831            Self::P2pVrAvatarPosition => "p2p_VRAvatarPosition",
6832            Self::P2pWatchSynchronization => "p2p_WatchSynchronization",
6833            Self::P2pFightingGameGameData => "p2p_FightingGame_GameData",
6834            Self::P2pFightingGameConnection => "p2p_FightingGame_Connection",
6835        }
6836    }
6837    /// Creates an enum from field names used in the ProtoBuf definition.
6838    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
6839        match value {
6840            "p2p_TextMessage" => Some(Self::P2pTextMessage),
6841            "p2p_Voice" => Some(Self::P2pVoice),
6842            "p2p_Ping" => Some(Self::P2pPing),
6843            "p2p_VRAvatarPosition" => Some(Self::P2pVrAvatarPosition),
6844            "p2p_WatchSynchronization" => Some(Self::P2pWatchSynchronization),
6845            "p2p_FightingGame_GameData" => Some(Self::P2pFightingGameGameData),
6846            "p2p_FightingGame_Connection" => Some(Self::P2pFightingGameConnection),
6847            _ => None,
6848        }
6849    }
6850}
6851#[derive(serde::Serialize, serde::Deserialize)]
6852#[derive(Clone, PartialEq, ::prost::Message)]
6853pub struct CsoCitadelLobby {
6854    #[prost(uint64, optional, tag = "1")]
6855    pub lobby_id: ::core::option::Option<u64>,
6856    #[prost(uint64, optional, tag = "2")]
6857    pub match_id: ::core::option::Option<u64>,
6858    #[prost(
6859        enumeration = "ECitadelMatchMode",
6860        optional,
6861        tag = "3",
6862        default = "KECitadelMatchModeInvalid"
6863    )]
6864    pub match_mode: ::core::option::Option<i32>,
6865    #[prost(
6866        enumeration = "ECitadelGameMode",
6867        optional,
6868        tag = "4",
6869        default = "KECitadelGameModeInvalid"
6870    )]
6871    pub game_mode: ::core::option::Option<i32>,
6872    #[prost(uint32, optional, tag = "5")]
6873    pub compatibility_version: ::core::option::Option<u32>,
6874    #[prost(message, repeated, tag = "6")]
6875    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
6876    #[prost(fixed64, optional, tag = "7")]
6877    pub server_steam_id: ::core::option::Option<u64>,
6878    #[prost(
6879        enumeration = "ELobbyServerState",
6880        optional,
6881        tag = "8",
6882        default = "KELobbyServerStateAssign"
6883    )]
6884    pub server_state: ::core::option::Option<i32>,
6885    #[prost(uint32, optional, tag = "9")]
6886    pub udp_connect_ip: ::core::option::Option<u32>,
6887    #[prost(uint32, optional, tag = "10")]
6888    pub udp_connect_port: ::core::option::Option<u32>,
6889    #[prost(bytes = "vec", optional, tag = "12")]
6890    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6891    #[prost(uint32, optional, tag = "13")]
6892    pub server_version: ::core::option::Option<u32>,
6893    #[prost(bool, optional, tag = "14")]
6894    pub safe_to_abandon: ::core::option::Option<bool>,
6895    #[prost(bool, optional, tag = "15")]
6896    pub match_punishes_abandons: ::core::option::Option<bool>,
6897    #[prost(uint32, optional, tag = "16")]
6898    pub game_mode_version: ::core::option::Option<u32>,
6899}
6900#[derive(serde::Serialize, serde::Deserialize)]
6901#[derive(Clone, PartialEq, ::prost::Message)]
6902pub struct CsoCitadelHideoutLobby {
6903    #[prost(uint64, optional, tag = "1")]
6904    pub hideout_lobby_id: ::core::option::Option<u64>,
6905    #[prost(uint64, optional, tag = "2")]
6906    pub party_id: ::core::option::Option<u64>,
6907    #[prost(fixed64, optional, tag = "3")]
6908    pub server_steam_id: ::core::option::Option<u64>,
6909    #[prost(uint32, optional, tag = "4")]
6910    pub udp_connect_ip: ::core::option::Option<u32>,
6911    #[prost(uint32, optional, tag = "5")]
6912    pub udp_connect_port: ::core::option::Option<u32>,
6913    #[prost(bytes = "vec", optional, tag = "6")]
6914    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
6915    #[prost(uint32, optional, tag = "7")]
6916    pub server_version: ::core::option::Option<u32>,
6917    #[prost(uint32, optional, tag = "8")]
6918    pub compat_version: ::core::option::Option<u32>,
6919    #[prost(message, repeated, tag = "9")]
6920    pub members: ::prost::alloc::vec::Vec<cso_citadel_hideout_lobby::Member>,
6921    #[prost(uint32, optional, tag = "10")]
6922    pub active_account_hideout: ::core::option::Option<u32>,
6923    #[prost(message, repeated, tag = "11")]
6924    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
6925}
6926/// Nested message and enum types in `CSOCitadelHideoutLobby`.
6927pub mod cso_citadel_hideout_lobby {
6928    #[derive(serde::Serialize, serde::Deserialize)]
6929    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6930    pub struct Member {
6931        #[prost(uint32, optional, tag = "1")]
6932        pub account_id: ::core::option::Option<u32>,
6933        #[prost(bool, optional, tag = "30")]
6934        pub hideout_holiday_award_2024: ::core::option::Option<bool>,
6935        #[prost(bool, optional, tag = "32")]
6936        pub hideout_holiday_award_2025: ::core::option::Option<bool>,
6937    }
6938}
6939#[derive(serde::Serialize, serde::Deserialize)]
6940#[derive(Clone, PartialEq, ::prost::Message)]
6941pub struct CLobbyDataPostMatchSurvey {
6942    #[prost(message, repeated, tag = "1")]
6943    pub surveys: ::prost::alloc::vec::Vec<c_lobby_data_post_match_survey::PlayerSurvey>,
6944}
6945/// Nested message and enum types in `CLobbyData_PostMatchSurvey`.
6946pub mod c_lobby_data_post_match_survey {
6947    #[derive(serde::Serialize, serde::Deserialize)]
6948    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6949    pub struct PlayerSurvey {
6950        #[prost(uint32, optional, tag = "1")]
6951        pub account_id: ::core::option::Option<u32>,
6952        #[prost(uint32, optional, tag = "2")]
6953        pub question_id: ::core::option::Option<u32>,
6954    }
6955}
6956#[derive(serde::Serialize, serde::Deserialize)]
6957#[derive(Clone, PartialEq, ::prost::Message)]
6958pub struct CMsgHeroSelectionMatchInfo {
6959    #[prost(message, repeated, tag = "1")]
6960    pub hero_selections: ::prost::alloc::vec::Vec<c_msg_hero_selection_match_info::Hero>,
6961    #[prost(uint32, repeated, packed = "false", tag = "2")]
6962    pub banned_heroes: ::prost::alloc::vec::Vec<u32>,
6963}
6964/// Nested message and enum types in `CMsgHeroSelectionMatchInfo`.
6965pub mod c_msg_hero_selection_match_info {
6966    #[derive(serde::Serialize, serde::Deserialize)]
6967    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
6968    pub struct Hero {
6969        #[prost(uint32, optional, tag = "1")]
6970        pub hero_id: ::core::option::Option<u32>,
6971        #[prost(uint32, optional, tag = "2")]
6972        pub priority: ::core::option::Option<u32>,
6973    }
6974}
6975#[derive(serde::Serialize, serde::Deserialize)]
6976#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
6977pub struct CMsgStartFindingMatchInfo {
6978    #[prost(string, optional, tag = "1")]
6979    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
6980    #[prost(string, optional, tag = "2")]
6981    pub server_command_string: ::core::option::Option<::prost::alloc::string::String>,
6982    #[prost(
6983        enumeration = "ECitadelMatchMode",
6984        optional,
6985        tag = "3",
6986        default = "KECitadelMatchModeInvalid"
6987    )]
6988    pub match_mode: ::core::option::Option<i32>,
6989    #[prost(
6990        enumeration = "ECitadelGameMode",
6991        optional,
6992        tag = "5",
6993        default = "KECitadelGameModeInvalid"
6994    )]
6995    pub game_mode: ::core::option::Option<i32>,
6996    #[prost(
6997        enumeration = "ECitadelBotDifficulty",
6998        optional,
6999        tag = "7",
7000        default = "KECitadelBotDifficultyNone"
7001    )]
7002    pub bot_difficulty: ::core::option::Option<i32>,
7003    #[prost(
7004        enumeration = "ECitadelRegionMode",
7005        optional,
7006        tag = "8",
7007        default = "KECitadelRegionModeRow"
7008    )]
7009    pub region_mode: ::core::option::Option<i32>,
7010    #[prost(bool, optional, tag = "9")]
7011    pub prefer_solo_only: ::core::option::Option<bool>,
7012    #[prost(
7013        enumeration = "ECitadelMmPreference",
7014        optional,
7015        tag = "10",
7016        default = "KECitadelMmPreferenceInvalid"
7017    )]
7018    pub mm_preference: ::core::option::Option<i32>,
7019}
7020#[derive(serde::Serialize, serde::Deserialize)]
7021#[derive(Clone, PartialEq, ::prost::Message)]
7022pub struct CMsgAnyToGcReportAsserts {
7023    #[prost(uint32, optional, tag = "1")]
7024    pub version: ::core::option::Option<u32>,
7025    #[prost(message, repeated, tag = "2")]
7026    pub asserts: ::prost::alloc::vec::Vec<c_msg_any_to_gc_report_asserts::TrackedAssert>,
7027    #[prost(uint64, optional, tag = "3")]
7028    pub match_id: ::core::option::Option<u64>,
7029}
7030/// Nested message and enum types in `CMsgAnyToGCReportAsserts`.
7031pub mod c_msg_any_to_gc_report_asserts {
7032    #[derive(serde::Serialize, serde::Deserialize)]
7033    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7034    pub struct TrackedAssert {
7035        #[prost(string, optional, tag = "1")]
7036        pub filename: ::core::option::Option<::prost::alloc::string::String>,
7037        #[prost(uint32, optional, tag = "2")]
7038        pub line_number: ::core::option::Option<u32>,
7039        #[prost(string, optional, tag = "3")]
7040        pub sample_msg: ::core::option::Option<::prost::alloc::string::String>,
7041        #[prost(string, optional, tag = "4")]
7042        pub sample_stack: ::core::option::Option<::prost::alloc::string::String>,
7043        #[prost(uint32, optional, tag = "5")]
7044        pub times_fired: ::core::option::Option<u32>,
7045        #[prost(string, optional, tag = "6")]
7046        pub function_name: ::core::option::Option<::prost::alloc::string::String>,
7047        #[prost(string, optional, tag = "7")]
7048        pub condition: ::core::option::Option<::prost::alloc::string::String>,
7049        #[prost(uint32, optional, tag = "8")]
7050        pub total_times_fired: ::core::option::Option<u32>,
7051    }
7052}
7053#[derive(serde::Serialize, serde::Deserialize)]
7054#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7055pub struct CMsgAnyToGcReportAssertsResponse {
7056    #[prost(bool, optional, tag = "1")]
7057    pub success: ::core::option::Option<bool>,
7058}
7059#[derive(serde::Serialize, serde::Deserialize)]
7060#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7061pub struct CMsgRegionPingTimesClient {
7062    #[prost(fixed32, repeated, tag = "1")]
7063    pub data_center_codes: ::prost::alloc::vec::Vec<u32>,
7064    #[prost(uint32, repeated, tag = "2")]
7065    pub ping_times: ::prost::alloc::vec::Vec<u32>,
7066}
7067#[derive(serde::Serialize, serde::Deserialize)]
7068#[derive(Clone, PartialEq, ::prost::Message)]
7069pub struct CMsgEquippedItemList {
7070    #[prost(message, repeated, tag = "1")]
7071    pub items: ::prost::alloc::vec::Vec<CsoEconItem>,
7072}
7073#[derive(serde::Serialize, serde::Deserialize)]
7074#[derive(Clone, PartialEq, ::prost::Message)]
7075pub struct CMsgPlayerHeroData {
7076    #[prost(uint32, optional, tag = "1")]
7077    pub hero_xp: ::core::option::Option<u32>,
7078    #[prost(message, optional, tag = "2")]
7079    pub hero_equips: ::core::option::Option<CMsgEquippedItemList>,
7080}
7081#[derive(serde::Serialize, serde::Deserialize)]
7082#[derive(Clone, PartialEq, ::prost::Message)]
7083pub struct CsoCitadelParty {
7084    #[prost(uint64, optional, tag = "1")]
7085    pub party_id: ::core::option::Option<u64>,
7086    #[prost(message, repeated, tag = "2")]
7087    pub members: ::prost::alloc::vec::Vec<cso_citadel_party::Member>,
7088    #[prost(message, repeated, tag = "3")]
7089    pub invites: ::prost::alloc::vec::Vec<cso_citadel_party::Invite>,
7090    #[prost(string, optional, tag = "4")]
7091    pub dev_server_command: ::core::option::Option<::prost::alloc::string::String>,
7092    #[prost(message, repeated, tag = "5")]
7093    pub left_members: ::prost::alloc::vec::Vec<cso_citadel_party::LeftMember>,
7094    #[prost(uint64, optional, tag = "6")]
7095    pub join_code: ::core::option::Option<u64>,
7096    #[prost(
7097        enumeration = "ECitadelBotDifficulty",
7098        optional,
7099        tag = "7",
7100        default = "KECitadelBotDifficultyNone"
7101    )]
7102    pub bot_difficulty: ::core::option::Option<i32>,
7103    #[prost(
7104        enumeration = "ECitadelMatchMode",
7105        optional,
7106        tag = "9",
7107        default = "KECitadelMatchModeInvalid"
7108    )]
7109    pub match_mode: ::core::option::Option<i32>,
7110    #[prost(
7111        enumeration = "ECitadelGameMode",
7112        optional,
7113        tag = "10",
7114        default = "KECitadelGameModeInvalid"
7115    )]
7116    pub game_mode: ::core::option::Option<i32>,
7117    #[prost(uint32, optional, tag = "11")]
7118    pub match_making_start_time: ::core::option::Option<u32>,
7119    #[prost(string, optional, tag = "12")]
7120    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
7121    #[prost(bool, optional, tag = "13")]
7122    pub is_high_skill_range_party: ::core::option::Option<bool>,
7123    #[prost(
7124        enumeration = "cso_citadel_party::EChatMode",
7125        optional,
7126        tag = "14",
7127        default = "KENone"
7128    )]
7129    pub chat_mode: ::core::option::Option<i32>,
7130    #[prost(
7131        enumeration = "ECitadelRegionMode",
7132        optional,
7133        tag = "15",
7134        default = "KECitadelRegionModeRow"
7135    )]
7136    pub region_mode: ::core::option::Option<i32>,
7137    #[prost(bool, optional, tag = "16")]
7138    pub is_private_lobby: ::core::option::Option<bool>,
7139    #[prost(message, optional, tag = "17")]
7140    pub private_lobby_settings: ::core::option::Option<
7141        cso_citadel_party::PrivateLobbySettings,
7142    >,
7143    #[prost(bool, optional, tag = "18")]
7144    pub desires_laning_together: ::core::option::Option<bool>,
7145    #[prost(
7146        enumeration = "ECitadelMmPreference",
7147        optional,
7148        tag = "19",
7149        default = "KECitadelMmPreferenceInvalid"
7150    )]
7151    pub mm_preference: ::core::option::Option<i32>,
7152    #[prost(string, optional, tag = "21")]
7153    pub hideout_search_key: ::core::option::Option<::prost::alloc::string::String>,
7154}
7155/// Nested message and enum types in `CSOCitadelParty`.
7156pub mod cso_citadel_party {
7157    #[derive(serde::Serialize, serde::Deserialize)]
7158    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7159    pub struct PrivateLobbySlot {
7160        #[prost(uint32, optional, tag = "1")]
7161        pub slot_id: ::core::option::Option<u32>,
7162        #[prost(uint32, optional, tag = "2")]
7163        pub player_account_id: ::core::option::Option<u32>,
7164    }
7165    #[derive(serde::Serialize, serde::Deserialize)]
7166    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7167    pub struct ServerRegion {
7168        #[prost(uint32, optional, tag = "1")]
7169        pub region_id: ::core::option::Option<u32>,
7170    }
7171    #[derive(serde::Serialize, serde::Deserialize)]
7172    #[derive(Clone, PartialEq, ::prost::Message)]
7173    pub struct PrivateLobbySettings {
7174        #[prost(uint32, optional, tag = "1")]
7175        pub min_roster_size: ::core::option::Option<u32>,
7176        #[prost(message, repeated, tag = "2")]
7177        pub match_slots: ::prost::alloc::vec::Vec<PrivateLobbySlot>,
7178        #[prost(bool, optional, tag = "3")]
7179        pub randomize_lanes: ::core::option::Option<bool>,
7180        #[prost(uint32, optional, tag = "4")]
7181        pub server_region: ::core::option::Option<u32>,
7182        #[prost(bool, optional, tag = "6")]
7183        pub is_publicly_visible: ::core::option::Option<bool>,
7184        #[prost(bool, optional, tag = "7")]
7185        pub cheats_enabled: ::core::option::Option<bool>,
7186        #[prost(message, repeated, tag = "8")]
7187        pub available_regions: ::prost::alloc::vec::Vec<ServerRegion>,
7188        #[prost(bool, optional, tag = "9")]
7189        pub duplicate_heroes_enabled: ::core::option::Option<bool>,
7190    }
7191    #[derive(serde::Serialize, serde::Deserialize)]
7192    #[derive(Clone, PartialEq, ::prost::Message)]
7193    pub struct Member {
7194        #[prost(uint32, optional, tag = "1")]
7195        pub account_id: ::core::option::Option<u32>,
7196        #[prost(string, optional, tag = "2")]
7197        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
7198        #[prost(uint32, optional, tag = "3")]
7199        pub rights_flags: ::core::option::Option<u32>,
7200        #[prost(bool, optional, tag = "4")]
7201        pub is_ready: ::core::option::Option<bool>,
7202        #[prost(
7203            enumeration = "EPlayerType",
7204            optional,
7205            tag = "5",
7206            default = "KEPlayerTypePlayer"
7207        )]
7208        pub player_type: ::core::option::Option<i32>,
7209        #[prost(uint32, optional, tag = "6")]
7210        pub compatibility_version: ::core::option::Option<u32>,
7211        #[prost(
7212            enumeration = "super::EgcPlatform",
7213            optional,
7214            tag = "7",
7215            default = "KEGcPlatformNone"
7216        )]
7217        pub platform: ::core::option::Option<i32>,
7218        #[prost(uint32, optional, tag = "8")]
7219        pub team: ::core::option::Option<u32>,
7220        #[prost(message, optional, tag = "9")]
7221        pub hero_roster: ::core::option::Option<super::CMsgHeroSelectionMatchInfo>,
7222        #[prost(uint64, optional, tag = "10")]
7223        pub permissions: ::core::option::Option<u64>,
7224        #[prost(uint64, optional, tag = "11")]
7225        pub new_player_progress: ::core::option::Option<u64>,
7226        #[prost(uint32, repeated, tag = "12")]
7227        pub owned_heroes: ::prost::alloc::vec::Vec<u32>,
7228        #[prost(uint32, optional, tag = "13")]
7229        pub low_priority_games_remaining: ::core::option::Option<u32>,
7230    }
7231    #[derive(serde::Serialize, serde::Deserialize)]
7232    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7233    pub struct LeftMember {
7234        #[prost(uint32, optional, tag = "1")]
7235        pub account_id: ::core::option::Option<u32>,
7236        #[prost(uint32, optional, tag = "2")]
7237        pub rights_flags: ::core::option::Option<u32>,
7238        #[prost(
7239            enumeration = "EPlayerType",
7240            optional,
7241            tag = "3",
7242            default = "KEPlayerTypePlayer"
7243        )]
7244        pub player_type: ::core::option::Option<i32>,
7245    }
7246    #[derive(serde::Serialize, serde::Deserialize)]
7247    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7248    pub struct Invite {
7249        #[prost(uint32, optional, tag = "1")]
7250        pub account_id: ::core::option::Option<u32>,
7251        #[prost(string, optional, tag = "2")]
7252        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
7253        #[prost(uint32, optional, tag = "3")]
7254        pub invited_by: ::core::option::Option<u32>,
7255    }
7256    #[derive(serde::Serialize, serde::Deserialize)]
7257    #[derive(
7258        Clone,
7259        Copy,
7260        Debug,
7261        PartialEq,
7262        Eq,
7263        Hash,
7264        PartialOrd,
7265        Ord,
7266        ::prost::Enumeration
7267    )]
7268    #[repr(i32)]
7269    pub enum EMemberRights {
7270        KEMemberRightsAdmin = 1,
7271        KEMemberRightsCreator = 2,
7272    }
7273    impl EMemberRights {
7274        /// String value of the enum field names used in the ProtoBuf definition.
7275        ///
7276        /// The values are not transformed in any way and thus are considered stable
7277        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7278        pub fn as_str_name(&self) -> &'static str {
7279            match self {
7280                Self::KEMemberRightsAdmin => "k_eMemberRights_Admin",
7281                Self::KEMemberRightsCreator => "k_eMemberRights_Creator",
7282            }
7283        }
7284        /// Creates an enum from field names used in the ProtoBuf definition.
7285        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7286            match value {
7287                "k_eMemberRights_Admin" => Some(Self::KEMemberRightsAdmin),
7288                "k_eMemberRights_Creator" => Some(Self::KEMemberRightsCreator),
7289                _ => None,
7290            }
7291        }
7292    }
7293    #[derive(serde::Serialize, serde::Deserialize)]
7294    #[derive(
7295        Clone,
7296        Copy,
7297        Debug,
7298        PartialEq,
7299        Eq,
7300        Hash,
7301        PartialOrd,
7302        Ord,
7303        ::prost::Enumeration
7304    )]
7305    #[repr(i32)]
7306    pub enum EPlayerType {
7307        KEPlayerTypePlayer = 0,
7308        KEPlayerTypeSpectator = 1,
7309    }
7310    impl EPlayerType {
7311        /// String value of the enum field names used in the ProtoBuf definition.
7312        ///
7313        /// The values are not transformed in any way and thus are considered stable
7314        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7315        pub fn as_str_name(&self) -> &'static str {
7316            match self {
7317                Self::KEPlayerTypePlayer => "k_ePlayerType_Player",
7318                Self::KEPlayerTypeSpectator => "k_ePlayerType_Spectator",
7319            }
7320        }
7321        /// Creates an enum from field names used in the ProtoBuf definition.
7322        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7323            match value {
7324                "k_ePlayerType_Player" => Some(Self::KEPlayerTypePlayer),
7325                "k_ePlayerType_Spectator" => Some(Self::KEPlayerTypeSpectator),
7326                _ => None,
7327            }
7328        }
7329    }
7330    #[derive(serde::Serialize, serde::Deserialize)]
7331    #[derive(
7332        Clone,
7333        Copy,
7334        Debug,
7335        PartialEq,
7336        Eq,
7337        Hash,
7338        PartialOrd,
7339        Ord,
7340        ::prost::Enumeration
7341    )]
7342    #[repr(i32)]
7343    pub enum EChatMode {
7344        KENone = 0,
7345        KEPartyChat = 1,
7346        KETeamChat = 2,
7347    }
7348    impl EChatMode {
7349        /// String value of the enum field names used in the ProtoBuf definition.
7350        ///
7351        /// The values are not transformed in any way and thus are considered stable
7352        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7353        pub fn as_str_name(&self) -> &'static str {
7354            match self {
7355                Self::KENone => "k_eNone",
7356                Self::KEPartyChat => "k_ePartyChat",
7357                Self::KETeamChat => "k_eTeamChat",
7358            }
7359        }
7360        /// Creates an enum from field names used in the ProtoBuf definition.
7361        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7362            match value {
7363                "k_eNone" => Some(Self::KENone),
7364                "k_ePartyChat" => Some(Self::KEPartyChat),
7365                "k_eTeamChat" => Some(Self::KETeamChat),
7366                _ => None,
7367            }
7368        }
7369    }
7370}
7371#[derive(serde::Serialize, serde::Deserialize)]
7372#[derive(Clone, PartialEq, ::prost::Message)]
7373pub struct CMsgMatchPlayerPathsData {
7374    #[prost(uint32, optional, tag = "1")]
7375    pub version: ::core::option::Option<u32>,
7376    #[prost(float, optional, tag = "2")]
7377    pub interval_s: ::core::option::Option<f32>,
7378    #[prost(uint32, optional, tag = "3")]
7379    pub x_resolution: ::core::option::Option<u32>,
7380    #[prost(uint32, optional, tag = "4")]
7381    pub y_resolution: ::core::option::Option<u32>,
7382    #[prost(message, repeated, tag = "5")]
7383    pub paths: ::prost::alloc::vec::Vec<c_msg_match_player_paths_data::Path>,
7384}
7385/// Nested message and enum types in `CMsgMatchPlayerPathsData`.
7386pub mod c_msg_match_player_paths_data {
7387    #[derive(serde::Serialize, serde::Deserialize)]
7388    #[derive(Clone, PartialEq, ::prost::Message)]
7389    pub struct Path {
7390        #[prost(uint32, optional, tag = "1")]
7391        pub player_slot: ::core::option::Option<u32>,
7392        #[prost(float, optional, tag = "2")]
7393        pub x_min: ::core::option::Option<f32>,
7394        #[prost(float, optional, tag = "3")]
7395        pub y_min: ::core::option::Option<f32>,
7396        #[prost(float, optional, tag = "4")]
7397        pub x_max: ::core::option::Option<f32>,
7398        #[prost(float, optional, tag = "5")]
7399        pub y_max: ::core::option::Option<f32>,
7400        #[prost(uint32, repeated, tag = "6")]
7401        pub x_pos: ::prost::alloc::vec::Vec<u32>,
7402        #[prost(uint32, repeated, tag = "7")]
7403        pub y_pos: ::prost::alloc::vec::Vec<u32>,
7404        #[prost(uint32, repeated, tag = "9")]
7405        pub health: ::prost::alloc::vec::Vec<u32>,
7406        #[prost(enumeration = "ECombatType", repeated, tag = "10")]
7407        pub combat_type: ::prost::alloc::vec::Vec<i32>,
7408        #[prost(enumeration = "EMoveType", repeated, tag = "11")]
7409        pub move_type: ::prost::alloc::vec::Vec<i32>,
7410    }
7411    #[derive(serde::Serialize, serde::Deserialize)]
7412    #[derive(
7413        Clone,
7414        Copy,
7415        Debug,
7416        PartialEq,
7417        Eq,
7418        Hash,
7419        PartialOrd,
7420        Ord,
7421        ::prost::Enumeration
7422    )]
7423    #[repr(i32)]
7424    pub enum ECombatType {
7425        KECombatTypeOut = 0,
7426        KECombatTypePlayer = 1,
7427        KECombatTypeEnemyNpc = 2,
7428        KECombatTypeNeutral = 3,
7429    }
7430    impl ECombatType {
7431        /// String value of the enum field names used in the ProtoBuf definition.
7432        ///
7433        /// The values are not transformed in any way and thus are considered stable
7434        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7435        pub fn as_str_name(&self) -> &'static str {
7436            match self {
7437                Self::KECombatTypeOut => "k_eCombatType_Out",
7438                Self::KECombatTypePlayer => "k_eCombatType_Player",
7439                Self::KECombatTypeEnemyNpc => "k_eCombatType_EnemyNPC",
7440                Self::KECombatTypeNeutral => "k_eCombatType_Neutral",
7441            }
7442        }
7443        /// Creates an enum from field names used in the ProtoBuf definition.
7444        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7445            match value {
7446                "k_eCombatType_Out" => Some(Self::KECombatTypeOut),
7447                "k_eCombatType_Player" => Some(Self::KECombatTypePlayer),
7448                "k_eCombatType_EnemyNPC" => Some(Self::KECombatTypeEnemyNpc),
7449                "k_eCombatType_Neutral" => Some(Self::KECombatTypeNeutral),
7450                _ => None,
7451            }
7452        }
7453    }
7454    #[derive(serde::Serialize, serde::Deserialize)]
7455    #[derive(
7456        Clone,
7457        Copy,
7458        Debug,
7459        PartialEq,
7460        Eq,
7461        Hash,
7462        PartialOrd,
7463        Ord,
7464        ::prost::Enumeration
7465    )]
7466    #[repr(i32)]
7467    pub enum EMoveType {
7468        KEMoveTypeNormal = 0,
7469        KEMoveTypeAbility = 1,
7470        KEMoveTypeAbilityDebuff = 2,
7471        KEMoveTypeGroundDash = 3,
7472        KEMoveTypeSlide = 4,
7473        KEMoveTypeRopeClimbing = 5,
7474        KEMoveTypeZiplining = 6,
7475        KEMoveTypeInAir = 7,
7476        KEMoveTypeAirDash = 8,
7477    }
7478    impl EMoveType {
7479        /// String value of the enum field names used in the ProtoBuf definition.
7480        ///
7481        /// The values are not transformed in any way and thus are considered stable
7482        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7483        pub fn as_str_name(&self) -> &'static str {
7484            match self {
7485                Self::KEMoveTypeNormal => "k_eMoveType_Normal",
7486                Self::KEMoveTypeAbility => "k_eMoveType_Ability",
7487                Self::KEMoveTypeAbilityDebuff => "k_eMoveType_AbilityDebuff",
7488                Self::KEMoveTypeGroundDash => "k_eMoveType_GroundDash",
7489                Self::KEMoveTypeSlide => "k_eMoveType_Slide",
7490                Self::KEMoveTypeRopeClimbing => "k_eMoveType_RopeClimbing",
7491                Self::KEMoveTypeZiplining => "k_eMoveType_Ziplining",
7492                Self::KEMoveTypeInAir => "k_eMoveType_InAir",
7493                Self::KEMoveTypeAirDash => "k_eMoveType_AirDash",
7494            }
7495        }
7496        /// Creates an enum from field names used in the ProtoBuf definition.
7497        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7498            match value {
7499                "k_eMoveType_Normal" => Some(Self::KEMoveTypeNormal),
7500                "k_eMoveType_Ability" => Some(Self::KEMoveTypeAbility),
7501                "k_eMoveType_AbilityDebuff" => Some(Self::KEMoveTypeAbilityDebuff),
7502                "k_eMoveType_GroundDash" => Some(Self::KEMoveTypeGroundDash),
7503                "k_eMoveType_Slide" => Some(Self::KEMoveTypeSlide),
7504                "k_eMoveType_RopeClimbing" => Some(Self::KEMoveTypeRopeClimbing),
7505                "k_eMoveType_Ziplining" => Some(Self::KEMoveTypeZiplining),
7506                "k_eMoveType_InAir" => Some(Self::KEMoveTypeInAir),
7507                "k_eMoveType_AirDash" => Some(Self::KEMoveTypeAirDash),
7508                _ => None,
7509            }
7510        }
7511    }
7512}
7513#[derive(serde::Serialize, serde::Deserialize)]
7514#[derive(Clone, PartialEq, ::prost::Message)]
7515pub struct CMsgMatchPlayerDamageMatrix {
7516    #[prost(message, repeated, tag = "1")]
7517    pub damage_dealers: ::prost::alloc::vec::Vec<
7518        c_msg_match_player_damage_matrix::DamageDealer,
7519    >,
7520    #[prost(uint32, repeated, tag = "2")]
7521    pub sample_time_s: ::prost::alloc::vec::Vec<u32>,
7522    #[prost(message, optional, tag = "3")]
7523    pub source_details: ::core::option::Option<
7524        c_msg_match_player_damage_matrix::SourceDetails,
7525    >,
7526}
7527/// Nested message and enum types in `CMsgMatchPlayerDamageMatrix`.
7528pub mod c_msg_match_player_damage_matrix {
7529    #[derive(serde::Serialize, serde::Deserialize)]
7530    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7531    pub struct DamageToPlayer {
7532        #[prost(uint32, optional, tag = "1")]
7533        pub target_player_slot: ::core::option::Option<u32>,
7534        #[prost(uint32, repeated, tag = "2")]
7535        pub damage: ::prost::alloc::vec::Vec<u32>,
7536    }
7537    #[derive(serde::Serialize, serde::Deserialize)]
7538    #[derive(Clone, PartialEq, ::prost::Message)]
7539    pub struct DamageSource {
7540        #[prost(message, repeated, tag = "2")]
7541        pub damage_to_players: ::prost::alloc::vec::Vec<DamageToPlayer>,
7542        #[prost(uint32, optional, tag = "4")]
7543        pub source_details_index: ::core::option::Option<u32>,
7544    }
7545    #[derive(serde::Serialize, serde::Deserialize)]
7546    #[derive(Clone, PartialEq, ::prost::Message)]
7547    pub struct DamageDealer {
7548        #[prost(uint32, optional, tag = "1")]
7549        pub dealer_player_slot: ::core::option::Option<u32>,
7550        #[prost(message, repeated, tag = "2")]
7551        pub damage_sources: ::prost::alloc::vec::Vec<DamageSource>,
7552    }
7553    #[derive(serde::Serialize, serde::Deserialize)]
7554    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7555    pub struct SourceDetails {
7556        #[prost(enumeration = "EStatType", repeated, tag = "1")]
7557        pub stat_type: ::prost::alloc::vec::Vec<i32>,
7558        #[prost(string, repeated, tag = "2")]
7559        pub source_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
7560    }
7561    #[derive(serde::Serialize, serde::Deserialize)]
7562    #[derive(
7563        Clone,
7564        Copy,
7565        Debug,
7566        PartialEq,
7567        Eq,
7568        Hash,
7569        PartialOrd,
7570        Ord,
7571        ::prost::Enumeration
7572    )]
7573    #[repr(i32)]
7574    pub enum EStatType {
7575        KETypeDamage = 0,
7576        KETypeHealing = 1,
7577        KETypeHealPrevented = 2,
7578        KETypeMitigated = 3,
7579        KETypeLethalDamage = 4,
7580        KETypeRegen = 5,
7581    }
7582    impl EStatType {
7583        /// String value of the enum field names used in the ProtoBuf definition.
7584        ///
7585        /// The values are not transformed in any way and thus are considered stable
7586        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
7587        pub fn as_str_name(&self) -> &'static str {
7588            match self {
7589                Self::KETypeDamage => "k_eType_Damage",
7590                Self::KETypeHealing => "k_eType_Healing",
7591                Self::KETypeHealPrevented => "k_eType_HealPrevented",
7592                Self::KETypeMitigated => "k_eType_Mitigated",
7593                Self::KETypeLethalDamage => "k_eType_LethalDamage",
7594                Self::KETypeRegen => "k_eType_Regen",
7595            }
7596        }
7597        /// Creates an enum from field names used in the ProtoBuf definition.
7598        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
7599            match value {
7600                "k_eType_Damage" => Some(Self::KETypeDamage),
7601                "k_eType_Healing" => Some(Self::KETypeHealing),
7602                "k_eType_HealPrevented" => Some(Self::KETypeHealPrevented),
7603                "k_eType_Mitigated" => Some(Self::KETypeMitigated),
7604                "k_eType_LethalDamage" => Some(Self::KETypeLethalDamage),
7605                "k_eType_Regen" => Some(Self::KETypeRegen),
7606                _ => None,
7607            }
7608        }
7609    }
7610}
7611#[derive(serde::Serialize, serde::Deserialize)]
7612#[derive(Clone, PartialEq, ::prost::Message)]
7613pub struct CMsgMatchMetaDataContents {
7614    #[prost(message, optional, tag = "2")]
7615    pub match_info: ::core::option::Option<c_msg_match_meta_data_contents::MatchInfo>,
7616}
7617/// Nested message and enum types in `CMsgMatchMetaDataContents`.
7618pub mod c_msg_match_meta_data_contents {
7619    #[derive(serde::Serialize, serde::Deserialize)]
7620    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7621    pub struct Position {
7622        #[prost(float, optional, tag = "1")]
7623        pub x: ::core::option::Option<f32>,
7624        #[prost(float, optional, tag = "2")]
7625        pub y: ::core::option::Option<f32>,
7626        #[prost(float, optional, tag = "3")]
7627        pub z: ::core::option::Option<f32>,
7628    }
7629    #[derive(serde::Serialize, serde::Deserialize)]
7630    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
7631    pub struct Deaths {
7632        #[prost(uint32, optional, tag = "1")]
7633        pub game_time_s: ::core::option::Option<u32>,
7634        #[prost(float, optional, tag = "2")]
7635        pub time_to_kill_s: ::core::option::Option<f32>,
7636        #[prost(uint32, optional, tag = "9")]
7637        pub killer_player_slot: ::core::option::Option<u32>,
7638        #[prost(message, optional, tag = "10")]
7639        pub death_pos: ::core::option::Option<Position>,
7640        #[prost(message, optional, tag = "11")]
7641        pub killer_pos: ::core::option::Option<Position>,
7642        #[prost(uint32, optional, tag = "12")]
7643        pub death_duration_s: ::core::option::Option<u32>,
7644    }
7645    #[derive(serde::Serialize, serde::Deserialize)]
7646    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7647    pub struct Items {
7648        #[prost(uint32, optional, tag = "1")]
7649        pub game_time_s: ::core::option::Option<u32>,
7650        #[prost(uint32, optional, tag = "2")]
7651        pub item_id: ::core::option::Option<u32>,
7652        #[prost(uint32, optional, tag = "3")]
7653        pub upgrade_id: ::core::option::Option<u32>,
7654        #[prost(uint32, optional, tag = "4")]
7655        pub sold_time_s: ::core::option::Option<u32>,
7656        #[prost(uint32, optional, tag = "5")]
7657        pub flags: ::core::option::Option<u32>,
7658        #[prost(uint32, optional, tag = "6")]
7659        pub imbued_ability_id: ::core::option::Option<u32>,
7660    }
7661    #[derive(serde::Serialize, serde::Deserialize)]
7662    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7663    pub struct Ping {
7664        #[prost(uint32, optional, tag = "1")]
7665        pub ping_type: ::core::option::Option<u32>,
7666        #[prost(uint32, optional, tag = "2")]
7667        pub ping_data: ::core::option::Option<u32>,
7668        #[prost(uint32, optional, tag = "3")]
7669        pub game_time_s: ::core::option::Option<u32>,
7670    }
7671    #[derive(serde::Serialize, serde::Deserialize)]
7672    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7673    pub struct GoldSource {
7674        #[prost(enumeration = "EGoldSource", optional, tag = "1", default = "KEPlayers")]
7675        pub source: ::core::option::Option<i32>,
7676        #[prost(uint32, optional, tag = "2")]
7677        pub kills: ::core::option::Option<u32>,
7678        #[prost(uint32, optional, tag = "3")]
7679        pub damage: ::core::option::Option<u32>,
7680        #[prost(uint32, optional, tag = "4")]
7681        pub gold: ::core::option::Option<u32>,
7682        #[prost(uint32, optional, tag = "5")]
7683        pub gold_orbs: ::core::option::Option<u32>,
7684    }
7685    #[derive(serde::Serialize, serde::Deserialize)]
7686    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7687    pub struct CustomUserStatInfo {
7688        #[prost(string, optional, tag = "1")]
7689        pub name: ::core::option::Option<::prost::alloc::string::String>,
7690        #[prost(uint32, optional, tag = "2")]
7691        pub id: ::core::option::Option<u32>,
7692    }
7693    #[derive(serde::Serialize, serde::Deserialize)]
7694    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7695    pub struct CustomUserStat {
7696        #[prost(uint32, optional, tag = "2")]
7697        pub value: ::core::option::Option<u32>,
7698        #[prost(uint32, optional, tag = "3")]
7699        pub id: ::core::option::Option<u32>,
7700    }
7701    #[derive(serde::Serialize, serde::Deserialize)]
7702    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
7703    pub struct PowerUpBuff {
7704        #[prost(string, optional, tag = "1")]
7705        pub r#type: ::core::option::Option<::prost::alloc::string::String>,
7706        #[prost(uint32, optional, tag = "2")]
7707        pub value: ::core::option::Option<u32>,
7708        #[prost(bool, optional, tag = "3")]
7709        pub is_permanent: ::core::option::Option<bool>,
7710    }
7711    #[derive(serde::Serialize, serde::Deserialize)]
7712    #[derive(Clone, PartialEq, ::prost::Message)]
7713    pub struct PlayerStats {
7714        #[prost(uint32, optional, tag = "1")]
7715        pub time_stamp_s: ::core::option::Option<u32>,
7716        #[prost(uint32, optional, tag = "2")]
7717        pub net_worth: ::core::option::Option<u32>,
7718        #[prost(uint32, optional, tag = "3")]
7719        pub gold_player: ::core::option::Option<u32>,
7720        #[prost(uint32, optional, tag = "4")]
7721        pub gold_player_orbs: ::core::option::Option<u32>,
7722        #[prost(uint32, optional, tag = "5")]
7723        pub gold_lane_creep_orbs: ::core::option::Option<u32>,
7724        #[prost(uint32, optional, tag = "6")]
7725        pub gold_neutral_creep_orbs: ::core::option::Option<u32>,
7726        #[prost(uint32, optional, tag = "7")]
7727        pub gold_boss: ::core::option::Option<u32>,
7728        #[prost(uint32, optional, tag = "8")]
7729        pub gold_boss_orb: ::core::option::Option<u32>,
7730        #[prost(uint32, optional, tag = "9")]
7731        pub gold_treasure: ::core::option::Option<u32>,
7732        #[prost(uint32, optional, tag = "10")]
7733        pub gold_denied: ::core::option::Option<u32>,
7734        #[prost(uint32, optional, tag = "11")]
7735        pub gold_death_loss: ::core::option::Option<u32>,
7736        #[prost(uint32, optional, tag = "12")]
7737        pub gold_lane_creep: ::core::option::Option<u32>,
7738        #[prost(uint32, optional, tag = "13")]
7739        pub gold_neutral_creep: ::core::option::Option<u32>,
7740        #[prost(uint32, optional, tag = "14")]
7741        pub kills: ::core::option::Option<u32>,
7742        #[prost(uint32, optional, tag = "15")]
7743        pub deaths: ::core::option::Option<u32>,
7744        #[prost(uint32, optional, tag = "16")]
7745        pub assists: ::core::option::Option<u32>,
7746        #[prost(uint32, optional, tag = "17")]
7747        pub creep_kills: ::core::option::Option<u32>,
7748        #[prost(uint32, optional, tag = "18")]
7749        pub neutral_kills: ::core::option::Option<u32>,
7750        #[prost(uint32, optional, tag = "19")]
7751        pub possible_creeps: ::core::option::Option<u32>,
7752        #[prost(uint32, optional, tag = "20")]
7753        pub creep_damage: ::core::option::Option<u32>,
7754        #[prost(uint32, optional, tag = "21")]
7755        pub player_damage: ::core::option::Option<u32>,
7756        #[prost(uint32, optional, tag = "22")]
7757        pub neutral_damage: ::core::option::Option<u32>,
7758        #[prost(uint32, optional, tag = "23")]
7759        pub boss_damage: ::core::option::Option<u32>,
7760        #[prost(uint32, optional, tag = "24")]
7761        pub denies: ::core::option::Option<u32>,
7762        #[prost(uint32, optional, tag = "25")]
7763        pub player_healing: ::core::option::Option<u32>,
7764        #[prost(uint32, optional, tag = "26")]
7765        pub ability_points: ::core::option::Option<u32>,
7766        #[prost(uint32, optional, tag = "27")]
7767        pub self_healing: ::core::option::Option<u32>,
7768        #[prost(uint32, optional, tag = "28")]
7769        pub player_damage_taken: ::core::option::Option<u32>,
7770        #[prost(uint32, optional, tag = "29")]
7771        pub max_health: ::core::option::Option<u32>,
7772        #[prost(uint32, optional, tag = "30")]
7773        pub weapon_power: ::core::option::Option<u32>,
7774        #[prost(uint32, optional, tag = "31")]
7775        pub tech_power: ::core::option::Option<u32>,
7776        #[prost(uint32, optional, tag = "32")]
7777        pub shots_hit: ::core::option::Option<u32>,
7778        #[prost(uint32, optional, tag = "33")]
7779        pub shots_missed: ::core::option::Option<u32>,
7780        #[prost(uint32, optional, tag = "34")]
7781        pub damage_absorbed: ::core::option::Option<u32>,
7782        #[prost(uint32, optional, tag = "35")]
7783        pub absorption_provided: ::core::option::Option<u32>,
7784        #[prost(uint32, optional, tag = "36")]
7785        pub hero_bullets_hit: ::core::option::Option<u32>,
7786        #[prost(uint32, optional, tag = "37")]
7787        pub hero_bullets_hit_crit: ::core::option::Option<u32>,
7788        #[prost(uint32, optional, tag = "38")]
7789        pub heal_prevented: ::core::option::Option<u32>,
7790        #[prost(uint32, optional, tag = "39")]
7791        pub heal_lost: ::core::option::Option<u32>,
7792        #[prost(message, repeated, tag = "40")]
7793        pub gold_sources: ::prost::alloc::vec::Vec<GoldSource>,
7794        #[prost(message, repeated, tag = "41")]
7795        pub custom_user_stats: ::prost::alloc::vec::Vec<CustomUserStat>,
7796        #[prost(uint32, optional, tag = "42")]
7797        pub damage_mitigated: ::core::option::Option<u32>,
7798        #[prost(uint32, optional, tag = "43")]
7799        pub level: ::core::option::Option<u32>,
7800        #[prost(uint32, optional, tag = "44")]
7801        pub player_barriering: ::core::option::Option<u32>,
7802        #[prost(uint32, optional, tag = "45")]
7803        pub teammate_healing: ::core::option::Option<u32>,
7804        #[prost(uint32, optional, tag = "46")]
7805        pub teammate_barriering: ::core::option::Option<u32>,
7806        #[prost(uint32, optional, tag = "47")]
7807        pub self_damage: ::core::option::Option<u32>,
7808        #[prost(uint32, optional, tag = "48")]
7809        pub bullet_kills: ::core::option::Option<u32>,
7810        #[prost(uint32, optional, tag = "49")]
7811        pub melee_kills: ::core::option::Option<u32>,
7812        #[prost(uint32, optional, tag = "50")]
7813        pub ability_kills: ::core::option::Option<u32>,
7814        #[prost(uint32, optional, tag = "51")]
7815        pub headshot_kills: ::core::option::Option<u32>,
7816    }
7817    #[derive(serde::Serialize, serde::Deserialize)]
7818    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7819    pub struct AbilityStat {
7820        #[prost(uint32, optional, tag = "1")]
7821        pub ability_id: ::core::option::Option<u32>,
7822        #[prost(uint32, optional, tag = "2")]
7823        pub ability_value: ::core::option::Option<u32>,
7824    }
7825    #[derive(serde::Serialize, serde::Deserialize)]
7826    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7827    pub struct BookReward {
7828        #[prost(uint32, optional, tag = "1")]
7829        pub book_id: ::core::option::Option<u32>,
7830        #[prost(uint32, optional, tag = "2")]
7831        pub xp_amount: ::core::option::Option<u32>,
7832        #[prost(uint32, optional, tag = "3")]
7833        pub starting_xp: ::core::option::Option<u32>,
7834    }
7835    #[derive(serde::Serialize, serde::Deserialize)]
7836    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7837    pub struct PlayerAccolade {
7838        #[prost(uint32, optional, tag = "1")]
7839        pub accolade_id: ::core::option::Option<u32>,
7840        #[prost(int32, optional, tag = "2")]
7841        pub accolade_stat_value: ::core::option::Option<i32>,
7842        #[prost(int32, optional, tag = "3")]
7843        pub accolade_threshold_achieved: ::core::option::Option<i32>,
7844    }
7845    #[derive(serde::Serialize, serde::Deserialize)]
7846    #[derive(Clone, PartialEq, ::prost::Message)]
7847    pub struct Players {
7848        #[prost(uint32, optional, tag = "1")]
7849        pub account_id: ::core::option::Option<u32>,
7850        #[prost(uint32, optional, tag = "2")]
7851        pub player_slot: ::core::option::Option<u32>,
7852        #[prost(message, repeated, tag = "3")]
7853        pub death_details: ::prost::alloc::vec::Vec<Deaths>,
7854        #[prost(message, repeated, tag = "4")]
7855        pub items: ::prost::alloc::vec::Vec<Items>,
7856        #[prost(message, repeated, tag = "5")]
7857        pub stats: ::prost::alloc::vec::Vec<PlayerStats>,
7858        #[prost(
7859            enumeration = "super::ECitadelLobbyTeam",
7860            optional,
7861            tag = "6",
7862            default = "KECitadelLobbyTeamTeam0"
7863        )]
7864        pub team: ::core::option::Option<i32>,
7865        #[prost(uint32, optional, tag = "8")]
7866        pub kills: ::core::option::Option<u32>,
7867        #[prost(uint32, optional, tag = "9")]
7868        pub deaths: ::core::option::Option<u32>,
7869        #[prost(uint32, optional, tag = "10")]
7870        pub assists: ::core::option::Option<u32>,
7871        #[prost(uint32, optional, tag = "11")]
7872        pub net_worth: ::core::option::Option<u32>,
7873        #[prost(uint32, optional, tag = "12")]
7874        pub hero_id: ::core::option::Option<u32>,
7875        #[prost(uint32, optional, tag = "13")]
7876        pub last_hits: ::core::option::Option<u32>,
7877        #[prost(uint32, optional, tag = "14")]
7878        pub denies: ::core::option::Option<u32>,
7879        #[prost(uint32, optional, tag = "15")]
7880        pub ability_points: ::core::option::Option<u32>,
7881        #[prost(uint32, optional, tag = "16")]
7882        pub party: ::core::option::Option<u32>,
7883        #[prost(uint32, optional, tag = "17")]
7884        pub assigned_lane: ::core::option::Option<u32>,
7885        #[prost(uint32, optional, tag = "18")]
7886        pub level: ::core::option::Option<u32>,
7887        #[prost(message, repeated, tag = "19")]
7888        pub pings: ::prost::alloc::vec::Vec<Ping>,
7889        #[prost(message, repeated, tag = "20")]
7890        pub ability_stats: ::prost::alloc::vec::Vec<AbilityStat>,
7891        #[prost(float, repeated, tag = "21")]
7892        pub stats_type_stat: ::prost::alloc::vec::Vec<f32>,
7893        #[prost(message, repeated, tag = "22")]
7894        pub book_rewards: ::prost::alloc::vec::Vec<BookReward>,
7895        #[prost(uint32, optional, tag = "23")]
7896        pub abandon_match_time_s: ::core::option::Option<u32>,
7897        #[prost(message, optional, tag = "25")]
7898        pub hero_data: ::core::option::Option<super::CMsgPlayerHeroData>,
7899        #[prost(bool, optional, tag = "26")]
7900        pub rewards_eligible: ::core::option::Option<bool>,
7901        #[prost(message, repeated, tag = "48")]
7902        pub player_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
7903        #[prost(message, repeated, tag = "27")]
7904        pub accolades: ::prost::alloc::vec::Vec<PlayerAccolade>,
7905        #[prost(uint32, optional, tag = "28")]
7906        pub mvp_rank: ::core::option::Option<u32>,
7907        #[prost(bool, optional, tag = "29")]
7908        pub earned_holiday_award_2025: ::core::option::Option<bool>,
7909        #[prost(message, repeated, tag = "30")]
7910        pub power_up_buffs: ::prost::alloc::vec::Vec<PowerUpBuff>,
7911    }
7912    #[derive(serde::Serialize, serde::Deserialize)]
7913    #[derive(Clone, PartialEq, ::prost::Message)]
7914    pub struct Teams {
7915        #[prost(
7916            enumeration = "super::ECitadelLobbyTeam",
7917            optional,
7918            tag = "1",
7919            default = "KECitadelLobbyTeamTeam0"
7920        )]
7921        pub team: ::core::option::Option<i32>,
7922        #[prost(message, repeated, tag = "2")]
7923        pub team_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
7924    }
7925    #[derive(serde::Serialize, serde::Deserialize)]
7926    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7927    pub struct Objective {
7928        #[prost(
7929            enumeration = "super::ECitadelObjective",
7930            optional,
7931            tag = "1",
7932            default = "KECitadelObjectiveTeam0Core"
7933        )]
7934        pub legacy_objective_id: ::core::option::Option<i32>,
7935        #[prost(uint32, optional, tag = "2")]
7936        pub destroyed_time_s: ::core::option::Option<u32>,
7937        #[prost(uint32, optional, tag = "4")]
7938        pub creep_damage: ::core::option::Option<u32>,
7939        #[prost(uint32, optional, tag = "5")]
7940        pub creep_damage_mitigated: ::core::option::Option<u32>,
7941        #[prost(uint32, optional, tag = "6")]
7942        pub player_damage: ::core::option::Option<u32>,
7943        #[prost(uint32, optional, tag = "7")]
7944        pub player_damage_mitigated: ::core::option::Option<u32>,
7945        #[prost(uint32, optional, tag = "8")]
7946        pub first_damage_time_s: ::core::option::Option<u32>,
7947        #[prost(
7948            enumeration = "super::ECitadelTeamObjective",
7949            optional,
7950            tag = "9",
7951            default = "KECitadelTeamObjectiveCore"
7952        )]
7953        pub team_objective_id: ::core::option::Option<i32>,
7954        #[prost(
7955            enumeration = "super::ECitadelLobbyTeam",
7956            optional,
7957            tag = "10",
7958            default = "KECitadelLobbyTeamTeam0"
7959        )]
7960        pub team: ::core::option::Option<i32>,
7961        #[prost(uint32, optional, tag = "11")]
7962        pub player_spirit_damage: ::core::option::Option<u32>,
7963    }
7964    #[derive(serde::Serialize, serde::Deserialize)]
7965    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7966    pub struct MidBoss {
7967        #[prost(
7968            enumeration = "super::ECitadelLobbyTeam",
7969            optional,
7970            tag = "1",
7971            default = "KECitadelLobbyTeamTeam0"
7972        )]
7973        pub team_killed: ::core::option::Option<i32>,
7974        #[prost(
7975            enumeration = "super::ECitadelLobbyTeam",
7976            optional,
7977            tag = "2",
7978            default = "KECitadelLobbyTeamTeam0"
7979        )]
7980        pub team_claimed: ::core::option::Option<i32>,
7981        #[prost(uint32, optional, tag = "3")]
7982        pub destroyed_time_s: ::core::option::Option<u32>,
7983    }
7984    #[derive(serde::Serialize, serde::Deserialize)]
7985    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7986    pub struct Pause {
7987        #[prost(uint32, optional, tag = "1")]
7988        pub game_time_s: ::core::option::Option<u32>,
7989        #[prost(uint32, optional, tag = "2")]
7990        pub pause_duration_s: ::core::option::Option<u32>,
7991        #[prost(uint32, optional, tag = "3")]
7992        pub player_slot: ::core::option::Option<u32>,
7993    }
7994    #[derive(serde::Serialize, serde::Deserialize)]
7995    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
7996    pub struct WatchedDeathReplay {
7997        #[prost(uint32, optional, tag = "1")]
7998        pub game_time_s: ::core::option::Option<u32>,
7999        #[prost(uint32, optional, tag = "2")]
8000        pub player_slot: ::core::option::Option<u32>,
8001    }
8002    #[derive(serde::Serialize, serde::Deserialize)]
8003    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8004    pub struct StreetBrawlRound {
8005        #[prost(uint32, optional, tag = "1")]
8006        pub round_duration_s: ::core::option::Option<u32>,
8007        #[prost(
8008            enumeration = "super::ECitadelLobbyTeam",
8009            optional,
8010            tag = "2",
8011            default = "KECitadelLobbyTeamTeam0"
8012        )]
8013        pub winning_team: ::core::option::Option<i32>,
8014    }
8015    #[derive(serde::Serialize, serde::Deserialize)]
8016    #[derive(Clone, PartialEq, ::prost::Message)]
8017    pub struct MatchInfo {
8018        #[prost(uint32, optional, tag = "1")]
8019        pub duration_s: ::core::option::Option<u32>,
8020        #[prost(
8021            enumeration = "EMatchOutcome",
8022            optional,
8023            tag = "2",
8024            default = "KEOutcomeTeamWin"
8025        )]
8026        pub match_outcome: ::core::option::Option<i32>,
8027        #[prost(
8028            enumeration = "super::ECitadelLobbyTeam",
8029            optional,
8030            tag = "3",
8031            default = "KECitadelLobbyTeamTeam0"
8032        )]
8033        pub winning_team: ::core::option::Option<i32>,
8034        #[prost(message, repeated, tag = "4")]
8035        pub players: ::prost::alloc::vec::Vec<Players>,
8036        #[prost(uint32, optional, tag = "5")]
8037        pub start_time: ::core::option::Option<u32>,
8038        #[prost(uint64, optional, tag = "6")]
8039        pub match_id: ::core::option::Option<u64>,
8040        #[prost(uint32, optional, tag = "8")]
8041        pub legacy_objectives_mask: ::core::option::Option<u32>,
8042        #[prost(
8043            enumeration = "super::ECitadelGameMode",
8044            optional,
8045            tag = "9",
8046            default = "KECitadelGameModeInvalid"
8047        )]
8048        pub game_mode: ::core::option::Option<i32>,
8049        #[prost(
8050            enumeration = "super::ECitadelMatchMode",
8051            optional,
8052            tag = "10",
8053            default = "KECitadelMatchModeInvalid"
8054        )]
8055        pub match_mode: ::core::option::Option<i32>,
8056        #[prost(message, repeated, tag = "11")]
8057        pub objectives: ::prost::alloc::vec::Vec<Objective>,
8058        #[prost(message, optional, tag = "12")]
8059        pub match_paths: ::core::option::Option<super::CMsgMatchPlayerPathsData>,
8060        #[prost(message, optional, tag = "13")]
8061        pub damage_matrix: ::core::option::Option<super::CMsgMatchPlayerDamageMatrix>,
8062        #[prost(message, repeated, tag = "14")]
8063        pub match_pauses: ::prost::alloc::vec::Vec<Pause>,
8064        #[prost(message, repeated, tag = "15")]
8065        pub custom_user_stats: ::prost::alloc::vec::Vec<CustomUserStatInfo>,
8066        #[prost(message, repeated, tag = "16")]
8067        pub watched_death_replays: ::prost::alloc::vec::Vec<WatchedDeathReplay>,
8068        #[prost(uint64, optional, tag = "17")]
8069        pub objectives_mask_team0: ::core::option::Option<u64>,
8070        #[prost(uint64, optional, tag = "18")]
8071        pub objectives_mask_team1: ::core::option::Option<u64>,
8072        #[prost(message, repeated, tag = "19")]
8073        pub mid_boss: ::prost::alloc::vec::Vec<MidBoss>,
8074        #[prost(bool, optional, tag = "20")]
8075        pub is_high_skill_range_parties: ::core::option::Option<bool>,
8076        #[prost(bool, optional, tag = "21")]
8077        pub low_pri_pool: ::core::option::Option<bool>,
8078        #[prost(bool, optional, tag = "22")]
8079        pub new_player_pool: ::core::option::Option<bool>,
8080        #[prost(uint32, optional, tag = "23")]
8081        pub average_badge_team0: ::core::option::Option<u32>,
8082        #[prost(uint32, optional, tag = "24")]
8083        pub average_badge_team1: ::core::option::Option<u32>,
8084        #[prost(uint32, optional, tag = "25")]
8085        pub game_mode_version: ::core::option::Option<u32>,
8086        #[prost(bool, optional, tag = "26")]
8087        pub rewards_eligible: ::core::option::Option<bool>,
8088        #[prost(bool, optional, tag = "27")]
8089        pub not_scored: ::core::option::Option<bool>,
8090        #[prost(uint32, repeated, packed = "false", tag = "28")]
8091        pub team_score: ::prost::alloc::vec::Vec<u32>,
8092        #[prost(message, repeated, tag = "29")]
8093        pub match_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
8094        #[prost(message, repeated, tag = "30")]
8095        pub teams: ::prost::alloc::vec::Vec<Teams>,
8096        #[prost(
8097            enumeration = "super::ECitadelBotDifficulty",
8098            optional,
8099            tag = "32",
8100            default = "KECitadelBotDifficultyNone"
8101        )]
8102        pub bot_difficulty: ::core::option::Option<i32>,
8103        #[prost(message, repeated, tag = "33")]
8104        pub street_brawl_rounds: ::prost::alloc::vec::Vec<StreetBrawlRound>,
8105    }
8106    #[derive(serde::Serialize, serde::Deserialize)]
8107    #[derive(
8108        Clone,
8109        Copy,
8110        Debug,
8111        PartialEq,
8112        Eq,
8113        Hash,
8114        PartialOrd,
8115        Ord,
8116        ::prost::Enumeration
8117    )]
8118    #[repr(i32)]
8119    pub enum EMatchOutcome {
8120        KEOutcomeTeamWin = 0,
8121        KEOutcomeError = 1,
8122        KEOutcomeMatchDraw = 2,
8123    }
8124    impl EMatchOutcome {
8125        /// String value of the enum field names used in the ProtoBuf definition.
8126        ///
8127        /// The values are not transformed in any way and thus are considered stable
8128        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8129        pub fn as_str_name(&self) -> &'static str {
8130            match self {
8131                Self::KEOutcomeTeamWin => "k_eOutcome_TeamWin",
8132                Self::KEOutcomeError => "k_eOutcome_Error",
8133                Self::KEOutcomeMatchDraw => "k_eOutcome_MatchDraw",
8134            }
8135        }
8136        /// Creates an enum from field names used in the ProtoBuf definition.
8137        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8138            match value {
8139                "k_eOutcome_TeamWin" => Some(Self::KEOutcomeTeamWin),
8140                "k_eOutcome_Error" => Some(Self::KEOutcomeError),
8141                "k_eOutcome_MatchDraw" => Some(Self::KEOutcomeMatchDraw),
8142                _ => None,
8143            }
8144        }
8145    }
8146    #[derive(serde::Serialize, serde::Deserialize)]
8147    #[derive(
8148        Clone,
8149        Copy,
8150        Debug,
8151        PartialEq,
8152        Eq,
8153        Hash,
8154        PartialOrd,
8155        Ord,
8156        ::prost::Enumeration
8157    )]
8158    #[repr(i32)]
8159    pub enum EGoldSource {
8160        KEPlayers = 1,
8161        KELaneCreeps = 2,
8162        KENeutrals = 3,
8163        KEBosses = 4,
8164        KETreasure = 5,
8165        KEAssists = 6,
8166        KEDenies = 7,
8167        KETeamBonus = 8,
8168        KEAbilityAssassinate = 9,
8169        KEItemTrophyCollector = 10,
8170        KEItemCultistSacrifice = 11,
8171        KEBreakable = 12,
8172    }
8173    impl EGoldSource {
8174        /// String value of the enum field names used in the ProtoBuf definition.
8175        ///
8176        /// The values are not transformed in any way and thus are considered stable
8177        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8178        pub fn as_str_name(&self) -> &'static str {
8179            match self {
8180                Self::KEPlayers => "k_ePlayers",
8181                Self::KELaneCreeps => "k_eLaneCreeps",
8182                Self::KENeutrals => "k_eNeutrals",
8183                Self::KEBosses => "k_eBosses",
8184                Self::KETreasure => "k_eTreasure",
8185                Self::KEAssists => "k_eAssists",
8186                Self::KEDenies => "k_eDenies",
8187                Self::KETeamBonus => "k_eTeamBonus",
8188                Self::KEAbilityAssassinate => "k_eAbilityAssassinate",
8189                Self::KEItemTrophyCollector => "k_eItemTrophyCollector",
8190                Self::KEItemCultistSacrifice => "k_eItemCultistSacrifice",
8191                Self::KEBreakable => "k_eBreakable",
8192            }
8193        }
8194        /// Creates an enum from field names used in the ProtoBuf definition.
8195        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8196            match value {
8197                "k_ePlayers" => Some(Self::KEPlayers),
8198                "k_eLaneCreeps" => Some(Self::KELaneCreeps),
8199                "k_eNeutrals" => Some(Self::KENeutrals),
8200                "k_eBosses" => Some(Self::KEBosses),
8201                "k_eTreasure" => Some(Self::KETreasure),
8202                "k_eAssists" => Some(Self::KEAssists),
8203                "k_eDenies" => Some(Self::KEDenies),
8204                "k_eTeamBonus" => Some(Self::KETeamBonus),
8205                "k_eAbilityAssassinate" => Some(Self::KEAbilityAssassinate),
8206                "k_eItemTrophyCollector" => Some(Self::KEItemTrophyCollector),
8207                "k_eItemCultistSacrifice" => Some(Self::KEItemCultistSacrifice),
8208                "k_eBreakable" => Some(Self::KEBreakable),
8209                _ => None,
8210            }
8211        }
8212    }
8213}
8214#[derive(serde::Serialize, serde::Deserialize)]
8215#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8216pub struct CMsgMatchMetaData {
8217    #[prost(uint32, optional, tag = "1")]
8218    pub version: ::core::option::Option<u32>,
8219    #[prost(bytes = "vec", optional, tag = "2")]
8220    pub match_details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
8221    #[prost(uint64, optional, tag = "3")]
8222    pub match_id: ::core::option::Option<u64>,
8223}
8224#[derive(serde::Serialize, serde::Deserialize)]
8225#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8226pub struct CMsgMapLine {
8227    #[prost(int32, optional, tag = "1")]
8228    pub x: ::core::option::Option<i32>,
8229    #[prost(int32, optional, tag = "2")]
8230    pub y: ::core::option::Option<i32>,
8231    #[prost(bool, optional, tag = "3")]
8232    pub initial: ::core::option::Option<bool>,
8233}
8234#[derive(serde::Serialize, serde::Deserialize)]
8235#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8236pub struct CMsgAccountHeroStats {
8237    #[prost(uint32, optional, tag = "1")]
8238    pub hero_id: ::core::option::Option<u32>,
8239    #[prost(uint32, repeated, packed = "false", tag = "2")]
8240    pub stat_id: ::prost::alloc::vec::Vec<u32>,
8241    #[prost(uint64, repeated, packed = "false", tag = "3")]
8242    pub total_value: ::prost::alloc::vec::Vec<u64>,
8243    #[prost(uint32, repeated, packed = "false", tag = "4")]
8244    pub medals_bronze: ::prost::alloc::vec::Vec<u32>,
8245    #[prost(uint32, repeated, packed = "false", tag = "5")]
8246    pub medals_silver: ::prost::alloc::vec::Vec<u32>,
8247    #[prost(uint32, repeated, packed = "false", tag = "6")]
8248    pub medals_gold: ::prost::alloc::vec::Vec<u32>,
8249}
8250#[derive(serde::Serialize, serde::Deserialize)]
8251#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8252pub struct CMsgAccountBookStats {
8253    #[prost(uint32, optional, tag = "1")]
8254    pub book_id: ::core::option::Option<u32>,
8255    #[prost(uint32, optional, tag = "2")]
8256    pub book_xp: ::core::option::Option<u32>,
8257    #[prost(uint32, optional, tag = "3")]
8258    pub book_max_xp: ::core::option::Option<u32>,
8259}
8260#[derive(serde::Serialize, serde::Deserialize)]
8261#[derive(Clone, PartialEq, ::prost::Message)]
8262pub struct CMsgAccountStats {
8263    #[prost(uint32, optional, tag = "1")]
8264    pub account_id: ::core::option::Option<u32>,
8265    #[prost(message, repeated, tag = "2")]
8266    pub stats: ::prost::alloc::vec::Vec<CMsgAccountHeroStats>,
8267}
8268#[derive(serde::Serialize, serde::Deserialize)]
8269#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8270pub struct CMsgTrackedStat {
8271    #[prost(uint32, optional, tag = "1")]
8272    pub tracked_stat_id: ::core::option::Option<u32>,
8273    #[prost(int32, optional, tag = "2")]
8274    pub tracked_stat_value: ::core::option::Option<i32>,
8275}
8276#[derive(serde::Serialize, serde::Deserialize)]
8277#[derive(Clone, Copy, PartialEq, ::prost::Message)]
8278pub struct CMsgGcAccountData {
8279    #[prost(uint32, optional, tag = "1")]
8280    pub account_id: ::core::option::Option<u32>,
8281    #[prost(float, optional, tag = "2")]
8282    pub cheater_report_score: ::core::option::Option<f32>,
8283}
8284#[derive(serde::Serialize, serde::Deserialize)]
8285#[derive(Clone, PartialEq, ::prost::Message)]
8286pub struct CMsgHeroBuild {
8287    #[prost(uint32, optional, tag = "1")]
8288    pub hero_build_id: ::core::option::Option<u32>,
8289    #[prost(uint32, optional, tag = "2")]
8290    pub hero_id: ::core::option::Option<u32>,
8291    #[prost(uint32, optional, tag = "3")]
8292    pub author_account_id: ::core::option::Option<u32>,
8293    #[prost(uint32, optional, tag = "4")]
8294    pub last_updated_timestamp: ::core::option::Option<u32>,
8295    #[prost(string, optional, tag = "5")]
8296    pub name: ::core::option::Option<::prost::alloc::string::String>,
8297    #[prost(string, optional, tag = "6")]
8298    pub description: ::core::option::Option<::prost::alloc::string::String>,
8299    #[prost(uint32, optional, tag = "7")]
8300    pub language: ::core::option::Option<u32>,
8301    #[prost(uint32, optional, tag = "8")]
8302    pub version: ::core::option::Option<u32>,
8303    #[prost(uint32, optional, tag = "9")]
8304    pub origin_build_id: ::core::option::Option<u32>,
8305    #[prost(message, optional, tag = "10")]
8306    pub details: ::core::option::Option<c_msg_hero_build::DetailsV0>,
8307    #[prost(uint32, repeated, packed = "false", tag = "11")]
8308    pub tags: ::prost::alloc::vec::Vec<u32>,
8309    #[prost(bool, optional, tag = "12")]
8310    pub development_build: ::core::option::Option<bool>,
8311    #[prost(uint32, optional, tag = "13")]
8312    pub publish_timestamp: ::core::option::Option<u32>,
8313}
8314/// Nested message and enum types in `CMsgHeroBuild`.
8315pub mod c_msg_hero_build {
8316    #[derive(serde::Serialize, serde::Deserialize)]
8317    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8318    pub struct BuildModEntry {
8319        #[prost(uint32, optional, tag = "1")]
8320        pub ability_id: ::core::option::Option<u32>,
8321        #[prost(string, optional, tag = "2")]
8322        pub annotation: ::core::option::Option<::prost::alloc::string::String>,
8323        #[prost(uint32, optional, tag = "3")]
8324        pub required_flex_slots: ::core::option::Option<u32>,
8325        #[prost(uint32, optional, tag = "4")]
8326        pub sell_priority: ::core::option::Option<u32>,
8327        #[prost(uint32, optional, tag = "5")]
8328        pub imbue_target_ability_id: ::core::option::Option<u32>,
8329    }
8330    #[derive(serde::Serialize, serde::Deserialize)]
8331    #[derive(Clone, PartialEq, ::prost::Message)]
8332    pub struct BuildModCategory {
8333        #[prost(message, repeated, tag = "1")]
8334        pub mods: ::prost::alloc::vec::Vec<BuildModEntry>,
8335        #[prost(string, optional, tag = "2")]
8336        pub name: ::core::option::Option<::prost::alloc::string::String>,
8337        #[prost(string, optional, tag = "3")]
8338        pub description: ::core::option::Option<::prost::alloc::string::String>,
8339        #[prost(float, optional, tag = "4")]
8340        pub width: ::core::option::Option<f32>,
8341        #[prost(float, optional, tag = "5")]
8342        pub height: ::core::option::Option<f32>,
8343        #[prost(bool, optional, tag = "6")]
8344        pub optional: ::core::option::Option<bool>,
8345    }
8346    #[derive(serde::Serialize, serde::Deserialize)]
8347    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8348    pub struct CurrencyChange {
8349        #[prost(uint32, optional, tag = "1")]
8350        pub ability_id: ::core::option::Option<u32>,
8351        #[prost(int32, optional, tag = "2")]
8352        pub currency_type: ::core::option::Option<i32>,
8353        #[prost(int32, optional, tag = "3")]
8354        pub delta: ::core::option::Option<i32>,
8355        #[prost(string, optional, tag = "4")]
8356        pub annotation: ::core::option::Option<::prost::alloc::string::String>,
8357    }
8358    #[derive(serde::Serialize, serde::Deserialize)]
8359    #[derive(Clone, PartialEq, ::prost::Message)]
8360    pub struct AbilityOrder {
8361        #[prost(message, repeated, tag = "1")]
8362        pub currency_changes: ::prost::alloc::vec::Vec<CurrencyChange>,
8363    }
8364    #[derive(serde::Serialize, serde::Deserialize)]
8365    #[derive(Clone, PartialEq, ::prost::Message)]
8366    pub struct DetailsV0 {
8367        #[prost(message, repeated, tag = "1")]
8368        pub mod_categories: ::prost::alloc::vec::Vec<BuildModCategory>,
8369        #[prost(message, optional, tag = "2")]
8370        pub ability_order: ::core::option::Option<AbilityOrder>,
8371    }
8372}
8373#[derive(serde::Serialize, serde::Deserialize)]
8374#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
8375pub struct CMsgHeroBuildPreference {
8376    #[prost(bool, optional, tag = "1")]
8377    pub favorited: ::core::option::Option<bool>,
8378    #[prost(bool, optional, tag = "2")]
8379    pub ignored: ::core::option::Option<bool>,
8380    #[prost(bool, optional, tag = "3")]
8381    pub reported: ::core::option::Option<bool>,
8382}
8383#[derive(serde::Serialize, serde::Deserialize)]
8384#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
8385pub struct CMsgHeroReleaseVoteTally {
8386    #[prost(uint32, optional, tag = "1")]
8387    pub remaining_votes: ::core::option::Option<u32>,
8388    #[prost(uint32, repeated, tag = "2")]
8389    pub votes_cast: ::prost::alloc::vec::Vec<u32>,
8390    #[prost(uint32, optional, tag = "3")]
8391    pub daily_reward_time_stamp: ::core::option::Option<u32>,
8392}
8393#[derive(serde::Serialize, serde::Deserialize)]
8394#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8395#[repr(i32)]
8396pub enum CMsgLaneColor {
8397    KELaneColorInvalid = 0,
8398    KELaneColorYellow = 1,
8399    KELaneColorGreen = 3,
8400    KELaneColorBlue = 4,
8401    KELaneColorPurple = 6,
8402}
8403impl CMsgLaneColor {
8404    /// String value of the enum field names used in the ProtoBuf definition.
8405    ///
8406    /// The values are not transformed in any way and thus are considered stable
8407    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8408    pub fn as_str_name(&self) -> &'static str {
8409        match self {
8410            Self::KELaneColorInvalid => "k_ELaneColor_Invalid",
8411            Self::KELaneColorYellow => "k_ELaneColor_Yellow",
8412            Self::KELaneColorGreen => "k_ELaneColor_Green",
8413            Self::KELaneColorBlue => "k_ELaneColor_Blue",
8414            Self::KELaneColorPurple => "k_ELaneColor_Purple",
8415        }
8416    }
8417    /// Creates an enum from field names used in the ProtoBuf definition.
8418    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8419        match value {
8420            "k_ELaneColor_Invalid" => Some(Self::KELaneColorInvalid),
8421            "k_ELaneColor_Yellow" => Some(Self::KELaneColorYellow),
8422            "k_ELaneColor_Green" => Some(Self::KELaneColorGreen),
8423            "k_ELaneColor_Blue" => Some(Self::KELaneColorBlue),
8424            "k_ELaneColor_Purple" => Some(Self::KELaneColorPurple),
8425            _ => None,
8426        }
8427    }
8428}
8429#[derive(serde::Serialize, serde::Deserialize)]
8430#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8431#[repr(i32)]
8432pub enum EgcCitadelCommonMessages {
8433    KEMsgAnyToGcReportAsserts = 7000,
8434    KEMsgAnyToGcReportAssertsResponse = 7001,
8435}
8436impl EgcCitadelCommonMessages {
8437    /// String value of the enum field names used in the ProtoBuf definition.
8438    ///
8439    /// The values are not transformed in any way and thus are considered stable
8440    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8441    pub fn as_str_name(&self) -> &'static str {
8442        match self {
8443            Self::KEMsgAnyToGcReportAsserts => "k_EMsgAnyToGCReportAsserts",
8444            Self::KEMsgAnyToGcReportAssertsResponse => {
8445                "k_EMsgAnyToGCReportAssertsResponse"
8446            }
8447        }
8448    }
8449    /// Creates an enum from field names used in the ProtoBuf definition.
8450    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8451        match value {
8452            "k_EMsgAnyToGCReportAsserts" => Some(Self::KEMsgAnyToGcReportAsserts),
8453            "k_EMsgAnyToGCReportAssertsResponse" => {
8454                Some(Self::KEMsgAnyToGcReportAssertsResponse)
8455            }
8456            _ => None,
8457        }
8458    }
8459}
8460#[derive(serde::Serialize, serde::Deserialize)]
8461#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8462#[repr(i32)]
8463pub enum ECitadelMatchMode {
8464    KECitadelMatchModeInvalid = 0,
8465    KECitadelMatchModeUnranked = 1,
8466    KECitadelMatchModePrivateLobby = 2,
8467    KECitadelMatchModeCoopBot = 3,
8468    KECitadelMatchModeRanked = 4,
8469    KECitadelMatchModeServerTest = 5,
8470    KECitadelMatchModeTutorial = 6,
8471    KECitadelMatchModeHeroLabs = 7,
8472    KECitadelMatchModeCalibration = 8,
8473}
8474impl ECitadelMatchMode {
8475    /// String value of the enum field names used in the ProtoBuf definition.
8476    ///
8477    /// The values are not transformed in any way and thus are considered stable
8478    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8479    pub fn as_str_name(&self) -> &'static str {
8480        match self {
8481            Self::KECitadelMatchModeInvalid => "k_ECitadelMatchMode_Invalid",
8482            Self::KECitadelMatchModeUnranked => "k_ECitadelMatchMode_Unranked",
8483            Self::KECitadelMatchModePrivateLobby => "k_ECitadelMatchMode_PrivateLobby",
8484            Self::KECitadelMatchModeCoopBot => "k_ECitadelMatchMode_CoopBot",
8485            Self::KECitadelMatchModeRanked => "k_ECitadelMatchMode_Ranked",
8486            Self::KECitadelMatchModeServerTest => "k_ECitadelMatchMode_ServerTest",
8487            Self::KECitadelMatchModeTutorial => "k_ECitadelMatchMode_Tutorial",
8488            Self::KECitadelMatchModeHeroLabs => "k_ECitadelMatchMode_HeroLabs",
8489            Self::KECitadelMatchModeCalibration => "k_ECitadelMatchMode_Calibration",
8490        }
8491    }
8492    /// Creates an enum from field names used in the ProtoBuf definition.
8493    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8494        match value {
8495            "k_ECitadelMatchMode_Invalid" => Some(Self::KECitadelMatchModeInvalid),
8496            "k_ECitadelMatchMode_Unranked" => Some(Self::KECitadelMatchModeUnranked),
8497            "k_ECitadelMatchMode_PrivateLobby" => {
8498                Some(Self::KECitadelMatchModePrivateLobby)
8499            }
8500            "k_ECitadelMatchMode_CoopBot" => Some(Self::KECitadelMatchModeCoopBot),
8501            "k_ECitadelMatchMode_Ranked" => Some(Self::KECitadelMatchModeRanked),
8502            "k_ECitadelMatchMode_ServerTest" => Some(Self::KECitadelMatchModeServerTest),
8503            "k_ECitadelMatchMode_Tutorial" => Some(Self::KECitadelMatchModeTutorial),
8504            "k_ECitadelMatchMode_HeroLabs" => Some(Self::KECitadelMatchModeHeroLabs),
8505            "k_ECitadelMatchMode_Calibration" => {
8506                Some(Self::KECitadelMatchModeCalibration)
8507            }
8508            _ => None,
8509        }
8510    }
8511}
8512#[derive(serde::Serialize, serde::Deserialize)]
8513#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8514#[repr(i32)]
8515pub enum ECitadelLobbyTeam {
8516    KECitadelLobbyTeamTeam0 = 0,
8517    KECitadelLobbyTeamTeam1 = 1,
8518    KECitadelLobbyTeamSpectator = 16,
8519}
8520impl ECitadelLobbyTeam {
8521    /// String value of the enum field names used in the ProtoBuf definition.
8522    ///
8523    /// The values are not transformed in any way and thus are considered stable
8524    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8525    pub fn as_str_name(&self) -> &'static str {
8526        match self {
8527            Self::KECitadelLobbyTeamTeam0 => "k_ECitadelLobbyTeam_Team0",
8528            Self::KECitadelLobbyTeamTeam1 => "k_ECitadelLobbyTeam_Team1",
8529            Self::KECitadelLobbyTeamSpectator => "k_ECitadelLobbyTeam_Spectator",
8530        }
8531    }
8532    /// Creates an enum from field names used in the ProtoBuf definition.
8533    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8534        match value {
8535            "k_ECitadelLobbyTeam_Team0" => Some(Self::KECitadelLobbyTeamTeam0),
8536            "k_ECitadelLobbyTeam_Team1" => Some(Self::KECitadelLobbyTeamTeam1),
8537            "k_ECitadelLobbyTeam_Spectator" => Some(Self::KECitadelLobbyTeamSpectator),
8538            _ => None,
8539        }
8540    }
8541}
8542#[derive(serde::Serialize, serde::Deserialize)]
8543#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8544#[repr(i32)]
8545pub enum ECitadelAccountStatMedal {
8546    KENone = 0,
8547    KEBronze = 1,
8548    KESilver = 2,
8549    KEGold = 3,
8550}
8551impl ECitadelAccountStatMedal {
8552    /// String value of the enum field names used in the ProtoBuf definition.
8553    ///
8554    /// The values are not transformed in any way and thus are considered stable
8555    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8556    pub fn as_str_name(&self) -> &'static str {
8557        match self {
8558            Self::KENone => "k_eNone",
8559            Self::KEBronze => "k_eBronze",
8560            Self::KESilver => "k_eSilver",
8561            Self::KEGold => "k_eGold",
8562        }
8563    }
8564    /// Creates an enum from field names used in the ProtoBuf definition.
8565    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8566        match value {
8567            "k_eNone" => Some(Self::KENone),
8568            "k_eBronze" => Some(Self::KEBronze),
8569            "k_eSilver" => Some(Self::KESilver),
8570            "k_eGold" => Some(Self::KEGold),
8571            _ => None,
8572        }
8573    }
8574}
8575#[derive(serde::Serialize, serde::Deserialize)]
8576#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8577#[repr(i32)]
8578pub enum ECitadelMmPreference {
8579    KECitadelMmPreferenceInvalid = 0,
8580    KECitadelMmPreferenceCasual = 1,
8581    KECitadelMmPreferenceSerious = 2,
8582}
8583impl ECitadelMmPreference {
8584    /// String value of the enum field names used in the ProtoBuf definition.
8585    ///
8586    /// The values are not transformed in any way and thus are considered stable
8587    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8588    pub fn as_str_name(&self) -> &'static str {
8589        match self {
8590            Self::KECitadelMmPreferenceInvalid => "k_ECitadelMMPreference_Invalid",
8591            Self::KECitadelMmPreferenceCasual => "k_ECitadelMMPreference_Casual",
8592            Self::KECitadelMmPreferenceSerious => "k_ECitadelMMPreference_Serious",
8593        }
8594    }
8595    /// Creates an enum from field names used in the ProtoBuf definition.
8596    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8597        match value {
8598            "k_ECitadelMMPreference_Invalid" => Some(Self::KECitadelMmPreferenceInvalid),
8599            "k_ECitadelMMPreference_Casual" => Some(Self::KECitadelMmPreferenceCasual),
8600            "k_ECitadelMMPreference_Serious" => Some(Self::KECitadelMmPreferenceSerious),
8601            _ => None,
8602        }
8603    }
8604}
8605#[derive(serde::Serialize, serde::Deserialize)]
8606#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8607#[repr(i32)]
8608pub enum ECitadelObjective {
8609    KECitadelObjectiveTeam0Core = 0,
8610    KECitadelObjectiveTeam0Tier1Lane1 = 1,
8611    KECitadelObjectiveTeam0Tier1Lane2 = 2,
8612    KECitadelObjectiveTeam0Tier1Lane3 = 3,
8613    KECitadelObjectiveTeam0Tier1Lane4 = 4,
8614    KECitadelObjectiveTeam0Tier2Lane1 = 5,
8615    KECitadelObjectiveTeam0Tier2Lane2 = 6,
8616    KECitadelObjectiveTeam0Tier2Lane3 = 7,
8617    KECitadelObjectiveTeam0Tier2Lane4 = 8,
8618    KECitadelObjectiveTeam0Titan = 9,
8619    KECitadelObjectiveTeam0TitanShieldGenerator1 = 10,
8620    KECitadelObjectiveTeam0TitanShieldGenerator2 = 11,
8621    KECitadelObjectiveTeam0BarrackBossLane1 = 12,
8622    KECitadelObjectiveTeam0BarrackBossLane2 = 13,
8623    KECitadelObjectiveTeam0BarrackBossLane3 = 14,
8624    KECitadelObjectiveTeam0BarrackBossLane4 = 15,
8625    KECitadelObjectiveTeam1Core = 16,
8626    KECitadelObjectiveTeam1Tier1Lane1 = 17,
8627    KECitadelObjectiveTeam1Tier1Lane2 = 18,
8628    KECitadelObjectiveTeam1Tier1Lane3 = 19,
8629    KECitadelObjectiveTeam1Tier1Lane4 = 20,
8630    KECitadelObjectiveTeam1Tier2Lane1 = 21,
8631    KECitadelObjectiveTeam1Tier2Lane2 = 22,
8632    KECitadelObjectiveTeam1Tier2Lane3 = 23,
8633    KECitadelObjectiveTeam1Tier2Lane4 = 24,
8634    KECitadelObjectiveTeam1Titan = 25,
8635    KECitadelObjectiveTeam1TitanShieldGenerator1 = 26,
8636    KECitadelObjectiveTeam1TitanShieldGenerator2 = 27,
8637    KECitadelObjectiveTeam1BarrackBossLane1 = 28,
8638    KECitadelObjectiveTeam1BarrackBossLane2 = 29,
8639    KECitadelObjectiveTeam1BarrackBossLane3 = 30,
8640    KECitadelObjectiveTeam1BarrackBossLane4 = 31,
8641    KECitadelObjectiveNeutralMid = 32,
8642}
8643impl ECitadelObjective {
8644    /// String value of the enum field names used in the ProtoBuf definition.
8645    ///
8646    /// The values are not transformed in any way and thus are considered stable
8647    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8648    pub fn as_str_name(&self) -> &'static str {
8649        match self {
8650            Self::KECitadelObjectiveTeam0Core => "k_eCitadelObjective_Team0_Core",
8651            Self::KECitadelObjectiveTeam0Tier1Lane1 => {
8652                "k_eCitadelObjective_Team0_Tier1_Lane1"
8653            }
8654            Self::KECitadelObjectiveTeam0Tier1Lane2 => {
8655                "k_eCitadelObjective_Team0_Tier1_Lane2"
8656            }
8657            Self::KECitadelObjectiveTeam0Tier1Lane3 => {
8658                "k_eCitadelObjective_Team0_Tier1_Lane3"
8659            }
8660            Self::KECitadelObjectiveTeam0Tier1Lane4 => {
8661                "k_eCitadelObjective_Team0_Tier1_Lane4"
8662            }
8663            Self::KECitadelObjectiveTeam0Tier2Lane1 => {
8664                "k_eCitadelObjective_Team0_Tier2_Lane1"
8665            }
8666            Self::KECitadelObjectiveTeam0Tier2Lane2 => {
8667                "k_eCitadelObjective_Team0_Tier2_Lane2"
8668            }
8669            Self::KECitadelObjectiveTeam0Tier2Lane3 => {
8670                "k_eCitadelObjective_Team0_Tier2_Lane3"
8671            }
8672            Self::KECitadelObjectiveTeam0Tier2Lane4 => {
8673                "k_eCitadelObjective_Team0_Tier2_Lane4"
8674            }
8675            Self::KECitadelObjectiveTeam0Titan => "k_eCitadelObjective_Team0_Titan",
8676            Self::KECitadelObjectiveTeam0TitanShieldGenerator1 => {
8677                "k_eCitadelObjective_Team0_TitanShieldGenerator_1"
8678            }
8679            Self::KECitadelObjectiveTeam0TitanShieldGenerator2 => {
8680                "k_eCitadelObjective_Team0_TitanShieldGenerator_2"
8681            }
8682            Self::KECitadelObjectiveTeam0BarrackBossLane1 => {
8683                "k_eCitadelObjective_Team0_BarrackBoss_Lane1"
8684            }
8685            Self::KECitadelObjectiveTeam0BarrackBossLane2 => {
8686                "k_eCitadelObjective_Team0_BarrackBoss_Lane2"
8687            }
8688            Self::KECitadelObjectiveTeam0BarrackBossLane3 => {
8689                "k_eCitadelObjective_Team0_BarrackBoss_Lane3"
8690            }
8691            Self::KECitadelObjectiveTeam0BarrackBossLane4 => {
8692                "k_eCitadelObjective_Team0_BarrackBoss_Lane4"
8693            }
8694            Self::KECitadelObjectiveTeam1Core => "k_eCitadelObjective_Team1_Core",
8695            Self::KECitadelObjectiveTeam1Tier1Lane1 => {
8696                "k_eCitadelObjective_Team1_Tier1_Lane1"
8697            }
8698            Self::KECitadelObjectiveTeam1Tier1Lane2 => {
8699                "k_eCitadelObjective_Team1_Tier1_Lane2"
8700            }
8701            Self::KECitadelObjectiveTeam1Tier1Lane3 => {
8702                "k_eCitadelObjective_Team1_Tier1_Lane3"
8703            }
8704            Self::KECitadelObjectiveTeam1Tier1Lane4 => {
8705                "k_eCitadelObjective_Team1_Tier1_Lane4"
8706            }
8707            Self::KECitadelObjectiveTeam1Tier2Lane1 => {
8708                "k_eCitadelObjective_Team1_Tier2_Lane1"
8709            }
8710            Self::KECitadelObjectiveTeam1Tier2Lane2 => {
8711                "k_eCitadelObjective_Team1_Tier2_Lane2"
8712            }
8713            Self::KECitadelObjectiveTeam1Tier2Lane3 => {
8714                "k_eCitadelObjective_Team1_Tier2_Lane3"
8715            }
8716            Self::KECitadelObjectiveTeam1Tier2Lane4 => {
8717                "k_eCitadelObjective_Team1_Tier2_Lane4"
8718            }
8719            Self::KECitadelObjectiveTeam1Titan => "k_eCitadelObjective_Team1_Titan",
8720            Self::KECitadelObjectiveTeam1TitanShieldGenerator1 => {
8721                "k_eCitadelObjective_Team1_TitanShieldGenerator_1"
8722            }
8723            Self::KECitadelObjectiveTeam1TitanShieldGenerator2 => {
8724                "k_eCitadelObjective_Team1_TitanShieldGenerator_2"
8725            }
8726            Self::KECitadelObjectiveTeam1BarrackBossLane1 => {
8727                "k_eCitadelObjective_Team1_BarrackBoss_Lane1"
8728            }
8729            Self::KECitadelObjectiveTeam1BarrackBossLane2 => {
8730                "k_eCitadelObjective_Team1_BarrackBoss_Lane2"
8731            }
8732            Self::KECitadelObjectiveTeam1BarrackBossLane3 => {
8733                "k_eCitadelObjective_Team1_BarrackBoss_Lane3"
8734            }
8735            Self::KECitadelObjectiveTeam1BarrackBossLane4 => {
8736                "k_eCitadelObjective_Team1_BarrackBoss_Lane4"
8737            }
8738            Self::KECitadelObjectiveNeutralMid => "k_eCitadelObjective_Neutral_Mid",
8739        }
8740    }
8741    /// Creates an enum from field names used in the ProtoBuf definition.
8742    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8743        match value {
8744            "k_eCitadelObjective_Team0_Core" => Some(Self::KECitadelObjectiveTeam0Core),
8745            "k_eCitadelObjective_Team0_Tier1_Lane1" => {
8746                Some(Self::KECitadelObjectiveTeam0Tier1Lane1)
8747            }
8748            "k_eCitadelObjective_Team0_Tier1_Lane2" => {
8749                Some(Self::KECitadelObjectiveTeam0Tier1Lane2)
8750            }
8751            "k_eCitadelObjective_Team0_Tier1_Lane3" => {
8752                Some(Self::KECitadelObjectiveTeam0Tier1Lane3)
8753            }
8754            "k_eCitadelObjective_Team0_Tier1_Lane4" => {
8755                Some(Self::KECitadelObjectiveTeam0Tier1Lane4)
8756            }
8757            "k_eCitadelObjective_Team0_Tier2_Lane1" => {
8758                Some(Self::KECitadelObjectiveTeam0Tier2Lane1)
8759            }
8760            "k_eCitadelObjective_Team0_Tier2_Lane2" => {
8761                Some(Self::KECitadelObjectiveTeam0Tier2Lane2)
8762            }
8763            "k_eCitadelObjective_Team0_Tier2_Lane3" => {
8764                Some(Self::KECitadelObjectiveTeam0Tier2Lane3)
8765            }
8766            "k_eCitadelObjective_Team0_Tier2_Lane4" => {
8767                Some(Self::KECitadelObjectiveTeam0Tier2Lane4)
8768            }
8769            "k_eCitadelObjective_Team0_Titan" => Some(Self::KECitadelObjectiveTeam0Titan),
8770            "k_eCitadelObjective_Team0_TitanShieldGenerator_1" => {
8771                Some(Self::KECitadelObjectiveTeam0TitanShieldGenerator1)
8772            }
8773            "k_eCitadelObjective_Team0_TitanShieldGenerator_2" => {
8774                Some(Self::KECitadelObjectiveTeam0TitanShieldGenerator2)
8775            }
8776            "k_eCitadelObjective_Team0_BarrackBoss_Lane1" => {
8777                Some(Self::KECitadelObjectiveTeam0BarrackBossLane1)
8778            }
8779            "k_eCitadelObjective_Team0_BarrackBoss_Lane2" => {
8780                Some(Self::KECitadelObjectiveTeam0BarrackBossLane2)
8781            }
8782            "k_eCitadelObjective_Team0_BarrackBoss_Lane3" => {
8783                Some(Self::KECitadelObjectiveTeam0BarrackBossLane3)
8784            }
8785            "k_eCitadelObjective_Team0_BarrackBoss_Lane4" => {
8786                Some(Self::KECitadelObjectiveTeam0BarrackBossLane4)
8787            }
8788            "k_eCitadelObjective_Team1_Core" => Some(Self::KECitadelObjectiveTeam1Core),
8789            "k_eCitadelObjective_Team1_Tier1_Lane1" => {
8790                Some(Self::KECitadelObjectiveTeam1Tier1Lane1)
8791            }
8792            "k_eCitadelObjective_Team1_Tier1_Lane2" => {
8793                Some(Self::KECitadelObjectiveTeam1Tier1Lane2)
8794            }
8795            "k_eCitadelObjective_Team1_Tier1_Lane3" => {
8796                Some(Self::KECitadelObjectiveTeam1Tier1Lane3)
8797            }
8798            "k_eCitadelObjective_Team1_Tier1_Lane4" => {
8799                Some(Self::KECitadelObjectiveTeam1Tier1Lane4)
8800            }
8801            "k_eCitadelObjective_Team1_Tier2_Lane1" => {
8802                Some(Self::KECitadelObjectiveTeam1Tier2Lane1)
8803            }
8804            "k_eCitadelObjective_Team1_Tier2_Lane2" => {
8805                Some(Self::KECitadelObjectiveTeam1Tier2Lane2)
8806            }
8807            "k_eCitadelObjective_Team1_Tier2_Lane3" => {
8808                Some(Self::KECitadelObjectiveTeam1Tier2Lane3)
8809            }
8810            "k_eCitadelObjective_Team1_Tier2_Lane4" => {
8811                Some(Self::KECitadelObjectiveTeam1Tier2Lane4)
8812            }
8813            "k_eCitadelObjective_Team1_Titan" => Some(Self::KECitadelObjectiveTeam1Titan),
8814            "k_eCitadelObjective_Team1_TitanShieldGenerator_1" => {
8815                Some(Self::KECitadelObjectiveTeam1TitanShieldGenerator1)
8816            }
8817            "k_eCitadelObjective_Team1_TitanShieldGenerator_2" => {
8818                Some(Self::KECitadelObjectiveTeam1TitanShieldGenerator2)
8819            }
8820            "k_eCitadelObjective_Team1_BarrackBoss_Lane1" => {
8821                Some(Self::KECitadelObjectiveTeam1BarrackBossLane1)
8822            }
8823            "k_eCitadelObjective_Team1_BarrackBoss_Lane2" => {
8824                Some(Self::KECitadelObjectiveTeam1BarrackBossLane2)
8825            }
8826            "k_eCitadelObjective_Team1_BarrackBoss_Lane3" => {
8827                Some(Self::KECitadelObjectiveTeam1BarrackBossLane3)
8828            }
8829            "k_eCitadelObjective_Team1_BarrackBoss_Lane4" => {
8830                Some(Self::KECitadelObjectiveTeam1BarrackBossLane4)
8831            }
8832            "k_eCitadelObjective_Neutral_Mid" => Some(Self::KECitadelObjectiveNeutralMid),
8833            _ => None,
8834        }
8835    }
8836}
8837#[derive(serde::Serialize, serde::Deserialize)]
8838#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8839#[repr(i32)]
8840pub enum ECitadelTeamObjective {
8841    KECitadelTeamObjectiveCore = 0,
8842    KECitadelTeamObjectiveTier1Lane1 = 1,
8843    KECitadelTeamObjectiveTier1Lane2 = 2,
8844    KECitadelTeamObjectiveTier1Lane3 = 3,
8845    KECitadelTeamObjectiveTier1Lane4 = 4,
8846    KECitadelTeamObjectiveTier2Lane1 = 5,
8847    KECitadelTeamObjectiveTier2Lane2 = 6,
8848    KECitadelTeamObjectiveTier2Lane3 = 7,
8849    KECitadelTeamObjectiveTier2Lane4 = 8,
8850    KECitadelTeamObjectiveTitan = 9,
8851    KECitadelTeamObjectiveTitanShieldGenerator1 = 10,
8852    KECitadelTeamObjectiveTitanShieldGenerator2 = 11,
8853    KECitadelTeamObjectiveBarrackBossLane1 = 12,
8854    KECitadelTeamObjectiveBarrackBossLane2 = 13,
8855    KECitadelTeamObjectiveBarrackBossLane3 = 14,
8856    KECitadelTeamObjectiveBarrackBossLane4 = 15,
8857}
8858impl ECitadelTeamObjective {
8859    /// String value of the enum field names used in the ProtoBuf definition.
8860    ///
8861    /// The values are not transformed in any way and thus are considered stable
8862    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8863    pub fn as_str_name(&self) -> &'static str {
8864        match self {
8865            Self::KECitadelTeamObjectiveCore => "k_eCitadelTeamObjective_Core",
8866            Self::KECitadelTeamObjectiveTier1Lane1 => {
8867                "k_eCitadelTeamObjective_Tier1_Lane1"
8868            }
8869            Self::KECitadelTeamObjectiveTier1Lane2 => {
8870                "k_eCitadelTeamObjective_Tier1_Lane2"
8871            }
8872            Self::KECitadelTeamObjectiveTier1Lane3 => {
8873                "k_eCitadelTeamObjective_Tier1_Lane3"
8874            }
8875            Self::KECitadelTeamObjectiveTier1Lane4 => {
8876                "k_eCitadelTeamObjective_Tier1_Lane4"
8877            }
8878            Self::KECitadelTeamObjectiveTier2Lane1 => {
8879                "k_eCitadelTeamObjective_Tier2_Lane1"
8880            }
8881            Self::KECitadelTeamObjectiveTier2Lane2 => {
8882                "k_eCitadelTeamObjective_Tier2_Lane2"
8883            }
8884            Self::KECitadelTeamObjectiveTier2Lane3 => {
8885                "k_eCitadelTeamObjective_Tier2_Lane3"
8886            }
8887            Self::KECitadelTeamObjectiveTier2Lane4 => {
8888                "k_eCitadelTeamObjective_Tier2_Lane4"
8889            }
8890            Self::KECitadelTeamObjectiveTitan => "k_eCitadelTeamObjective_Titan",
8891            Self::KECitadelTeamObjectiveTitanShieldGenerator1 => {
8892                "k_eCitadelTeamObjective_TitanShieldGenerator_1"
8893            }
8894            Self::KECitadelTeamObjectiveTitanShieldGenerator2 => {
8895                "k_eCitadelTeamObjective_TitanShieldGenerator_2"
8896            }
8897            Self::KECitadelTeamObjectiveBarrackBossLane1 => {
8898                "k_eCitadelTeamObjective_BarrackBoss_Lane1"
8899            }
8900            Self::KECitadelTeamObjectiveBarrackBossLane2 => {
8901                "k_eCitadelTeamObjective_BarrackBoss_Lane2"
8902            }
8903            Self::KECitadelTeamObjectiveBarrackBossLane3 => {
8904                "k_eCitadelTeamObjective_BarrackBoss_Lane3"
8905            }
8906            Self::KECitadelTeamObjectiveBarrackBossLane4 => {
8907                "k_eCitadelTeamObjective_BarrackBoss_Lane4"
8908            }
8909        }
8910    }
8911    /// Creates an enum from field names used in the ProtoBuf definition.
8912    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8913        match value {
8914            "k_eCitadelTeamObjective_Core" => Some(Self::KECitadelTeamObjectiveCore),
8915            "k_eCitadelTeamObjective_Tier1_Lane1" => {
8916                Some(Self::KECitadelTeamObjectiveTier1Lane1)
8917            }
8918            "k_eCitadelTeamObjective_Tier1_Lane2" => {
8919                Some(Self::KECitadelTeamObjectiveTier1Lane2)
8920            }
8921            "k_eCitadelTeamObjective_Tier1_Lane3" => {
8922                Some(Self::KECitadelTeamObjectiveTier1Lane3)
8923            }
8924            "k_eCitadelTeamObjective_Tier1_Lane4" => {
8925                Some(Self::KECitadelTeamObjectiveTier1Lane4)
8926            }
8927            "k_eCitadelTeamObjective_Tier2_Lane1" => {
8928                Some(Self::KECitadelTeamObjectiveTier2Lane1)
8929            }
8930            "k_eCitadelTeamObjective_Tier2_Lane2" => {
8931                Some(Self::KECitadelTeamObjectiveTier2Lane2)
8932            }
8933            "k_eCitadelTeamObjective_Tier2_Lane3" => {
8934                Some(Self::KECitadelTeamObjectiveTier2Lane3)
8935            }
8936            "k_eCitadelTeamObjective_Tier2_Lane4" => {
8937                Some(Self::KECitadelTeamObjectiveTier2Lane4)
8938            }
8939            "k_eCitadelTeamObjective_Titan" => Some(Self::KECitadelTeamObjectiveTitan),
8940            "k_eCitadelTeamObjective_TitanShieldGenerator_1" => {
8941                Some(Self::KECitadelTeamObjectiveTitanShieldGenerator1)
8942            }
8943            "k_eCitadelTeamObjective_TitanShieldGenerator_2" => {
8944                Some(Self::KECitadelTeamObjectiveTitanShieldGenerator2)
8945            }
8946            "k_eCitadelTeamObjective_BarrackBoss_Lane1" => {
8947                Some(Self::KECitadelTeamObjectiveBarrackBossLane1)
8948            }
8949            "k_eCitadelTeamObjective_BarrackBoss_Lane2" => {
8950                Some(Self::KECitadelTeamObjectiveBarrackBossLane2)
8951            }
8952            "k_eCitadelTeamObjective_BarrackBoss_Lane3" => {
8953                Some(Self::KECitadelTeamObjectiveBarrackBossLane3)
8954            }
8955            "k_eCitadelTeamObjective_BarrackBoss_Lane4" => {
8956                Some(Self::KECitadelTeamObjectiveBarrackBossLane4)
8957            }
8958            _ => None,
8959        }
8960    }
8961}
8962#[derive(serde::Serialize, serde::Deserialize)]
8963#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
8964#[repr(i32)]
8965pub enum ECitadelBotDifficulty {
8966    KECitadelBotDifficultyNone = 0,
8967    KECitadelBotDifficultyEasy = 1,
8968    KECitadelBotDifficultyMedium = 2,
8969    KECitadelBotDifficultyHard = 3,
8970    KECitadelBotDifficultyNightmare = 4,
8971    KECitadelBotDifficultyGuided = 5,
8972}
8973impl ECitadelBotDifficulty {
8974    /// String value of the enum field names used in the ProtoBuf definition.
8975    ///
8976    /// The values are not transformed in any way and thus are considered stable
8977    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
8978    pub fn as_str_name(&self) -> &'static str {
8979        match self {
8980            Self::KECitadelBotDifficultyNone => "k_ECitadelBotDifficulty_None",
8981            Self::KECitadelBotDifficultyEasy => "k_ECitadelBotDifficulty_Easy",
8982            Self::KECitadelBotDifficultyMedium => "k_ECitadelBotDifficulty_Medium",
8983            Self::KECitadelBotDifficultyHard => "k_ECitadelBotDifficulty_Hard",
8984            Self::KECitadelBotDifficultyNightmare => "k_ECitadelBotDifficulty_Nightmare",
8985            Self::KECitadelBotDifficultyGuided => "k_ECitadelBotDifficulty_Guided",
8986        }
8987    }
8988    /// Creates an enum from field names used in the ProtoBuf definition.
8989    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
8990        match value {
8991            "k_ECitadelBotDifficulty_None" => Some(Self::KECitadelBotDifficultyNone),
8992            "k_ECitadelBotDifficulty_Easy" => Some(Self::KECitadelBotDifficultyEasy),
8993            "k_ECitadelBotDifficulty_Medium" => Some(Self::KECitadelBotDifficultyMedium),
8994            "k_ECitadelBotDifficulty_Hard" => Some(Self::KECitadelBotDifficultyHard),
8995            "k_ECitadelBotDifficulty_Nightmare" => {
8996                Some(Self::KECitadelBotDifficultyNightmare)
8997            }
8998            "k_ECitadelBotDifficulty_Guided" => Some(Self::KECitadelBotDifficultyGuided),
8999            _ => None,
9000        }
9001    }
9002}
9003#[derive(serde::Serialize, serde::Deserialize)]
9004#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9005#[repr(i32)]
9006pub enum ECitadelRegionMode {
9007    KECitadelRegionModeRow = 0,
9008    KECitadelRegionModeEurope = 1,
9009    KECitadelRegionModeSeAsia = 2,
9010    KECitadelRegionModeSAmerica = 3,
9011    KECitadelRegionModeRussia = 4,
9012    KECitadelRegionModeOceania = 5,
9013}
9014impl ECitadelRegionMode {
9015    /// String value of the enum field names used in the ProtoBuf definition.
9016    ///
9017    /// The values are not transformed in any way and thus are considered stable
9018    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9019    pub fn as_str_name(&self) -> &'static str {
9020        match self {
9021            Self::KECitadelRegionModeRow => "k_ECitadelRegionMode_ROW",
9022            Self::KECitadelRegionModeEurope => "k_ECitadelRegionMode_Europe",
9023            Self::KECitadelRegionModeSeAsia => "k_ECitadelRegionMode_SEAsia",
9024            Self::KECitadelRegionModeSAmerica => "k_ECitadelRegionMode_SAmerica",
9025            Self::KECitadelRegionModeRussia => "k_ECitadelRegionMode_Russia",
9026            Self::KECitadelRegionModeOceania => "k_ECitadelRegionMode_Oceania",
9027        }
9028    }
9029    /// Creates an enum from field names used in the ProtoBuf definition.
9030    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9031        match value {
9032            "k_ECitadelRegionMode_ROW" => Some(Self::KECitadelRegionModeRow),
9033            "k_ECitadelRegionMode_Europe" => Some(Self::KECitadelRegionModeEurope),
9034            "k_ECitadelRegionMode_SEAsia" => Some(Self::KECitadelRegionModeSeAsia),
9035            "k_ECitadelRegionMode_SAmerica" => Some(Self::KECitadelRegionModeSAmerica),
9036            "k_ECitadelRegionMode_Russia" => Some(Self::KECitadelRegionModeRussia),
9037            "k_ECitadelRegionMode_Oceania" => Some(Self::KECitadelRegionModeOceania),
9038            _ => None,
9039        }
9040    }
9041}
9042#[derive(serde::Serialize, serde::Deserialize)]
9043#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9044#[repr(i32)]
9045pub enum ECitadelLeaderboardRegion {
9046    KECitadelLeaderboardRegionNone = 0,
9047    KECitadelLeaderboardRegionEurope = 1,
9048    KECitadelLeaderboardRegionAsia = 2,
9049    KECitadelLeaderboardRegionNAmerica = 3,
9050    KECitadelLeaderboardRegionSAmerica = 4,
9051    KECitadelLeaderboardRegionOceania = 5,
9052}
9053impl ECitadelLeaderboardRegion {
9054    /// String value of the enum field names used in the ProtoBuf definition.
9055    ///
9056    /// The values are not transformed in any way and thus are considered stable
9057    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9058    pub fn as_str_name(&self) -> &'static str {
9059        match self {
9060            Self::KECitadelLeaderboardRegionNone => "k_ECitadelLeaderboardRegion_None",
9061            Self::KECitadelLeaderboardRegionEurope => {
9062                "k_ECitadelLeaderboardRegion_Europe"
9063            }
9064            Self::KECitadelLeaderboardRegionAsia => "k_ECitadelLeaderboardRegion_Asia",
9065            Self::KECitadelLeaderboardRegionNAmerica => {
9066                "k_ECitadelLeaderboardRegion_NAmerica"
9067            }
9068            Self::KECitadelLeaderboardRegionSAmerica => {
9069                "k_ECitadelLeaderboardRegion_SAmerica"
9070            }
9071            Self::KECitadelLeaderboardRegionOceania => {
9072                "k_ECitadelLeaderboardRegion_Oceania"
9073            }
9074        }
9075    }
9076    /// Creates an enum from field names used in the ProtoBuf definition.
9077    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9078        match value {
9079            "k_ECitadelLeaderboardRegion_None" => {
9080                Some(Self::KECitadelLeaderboardRegionNone)
9081            }
9082            "k_ECitadelLeaderboardRegion_Europe" => {
9083                Some(Self::KECitadelLeaderboardRegionEurope)
9084            }
9085            "k_ECitadelLeaderboardRegion_Asia" => {
9086                Some(Self::KECitadelLeaderboardRegionAsia)
9087            }
9088            "k_ECitadelLeaderboardRegion_NAmerica" => {
9089                Some(Self::KECitadelLeaderboardRegionNAmerica)
9090            }
9091            "k_ECitadelLeaderboardRegion_SAmerica" => {
9092                Some(Self::KECitadelLeaderboardRegionSAmerica)
9093            }
9094            "k_ECitadelLeaderboardRegion_Oceania" => {
9095                Some(Self::KECitadelLeaderboardRegionOceania)
9096            }
9097            _ => None,
9098        }
9099    }
9100}
9101#[derive(serde::Serialize, serde::Deserialize)]
9102#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9103#[repr(i32)]
9104pub enum ECitadelGameMode {
9105    KECitadelGameModeInvalid = 0,
9106    KECitadelGameModeNormal = 1,
9107    KECitadelGameMode1v1Test = 2,
9108    KECitadelGameModeSandbox = 3,
9109    KECitadelGameModeStreetBrawl = 4,
9110}
9111impl ECitadelGameMode {
9112    /// String value of the enum field names used in the ProtoBuf definition.
9113    ///
9114    /// The values are not transformed in any way and thus are considered stable
9115    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9116    pub fn as_str_name(&self) -> &'static str {
9117        match self {
9118            Self::KECitadelGameModeInvalid => "k_ECitadelGameMode_Invalid",
9119            Self::KECitadelGameModeNormal => "k_ECitadelGameMode_Normal",
9120            Self::KECitadelGameMode1v1Test => "k_ECitadelGameMode_1v1Test",
9121            Self::KECitadelGameModeSandbox => "k_ECitadelGameMode_Sandbox",
9122            Self::KECitadelGameModeStreetBrawl => "k_ECitadelGameMode_StreetBrawl",
9123        }
9124    }
9125    /// Creates an enum from field names used in the ProtoBuf definition.
9126    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9127        match value {
9128            "k_ECitadelGameMode_Invalid" => Some(Self::KECitadelGameModeInvalid),
9129            "k_ECitadelGameMode_Normal" => Some(Self::KECitadelGameModeNormal),
9130            "k_ECitadelGameMode_1v1Test" => Some(Self::KECitadelGameMode1v1Test),
9131            "k_ECitadelGameMode_Sandbox" => Some(Self::KECitadelGameModeSandbox),
9132            "k_ECitadelGameMode_StreetBrawl" => Some(Self::KECitadelGameModeStreetBrawl),
9133            _ => None,
9134        }
9135    }
9136}
9137#[derive(serde::Serialize, serde::Deserialize)]
9138#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9139#[repr(i32)]
9140pub enum ELobbyServerState {
9141    KELobbyServerStateAssign = 0,
9142    KELobbyServerStateInGame = 1,
9143    KELobbyServerStatePostMatch = 2,
9144    KELobbyServerStateSignedOut = 3,
9145    KELobbyServerStateAbandoned = 4,
9146}
9147impl ELobbyServerState {
9148    /// String value of the enum field names used in the ProtoBuf definition.
9149    ///
9150    /// The values are not transformed in any way and thus are considered stable
9151    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9152    pub fn as_str_name(&self) -> &'static str {
9153        match self {
9154            Self::KELobbyServerStateAssign => "k_eLobbyServerState_Assign",
9155            Self::KELobbyServerStateInGame => "k_eLobbyServerState_InGame",
9156            Self::KELobbyServerStatePostMatch => "k_eLobbyServerState_PostMatch",
9157            Self::KELobbyServerStateSignedOut => "k_eLobbyServerState_SignedOut",
9158            Self::KELobbyServerStateAbandoned => "k_eLobbyServerState_Abandoned",
9159        }
9160    }
9161    /// Creates an enum from field names used in the ProtoBuf definition.
9162    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9163        match value {
9164            "k_eLobbyServerState_Assign" => Some(Self::KELobbyServerStateAssign),
9165            "k_eLobbyServerState_InGame" => Some(Self::KELobbyServerStateInGame),
9166            "k_eLobbyServerState_PostMatch" => Some(Self::KELobbyServerStatePostMatch),
9167            "k_eLobbyServerState_SignedOut" => Some(Self::KELobbyServerStateSignedOut),
9168            "k_eLobbyServerState_Abandoned" => Some(Self::KELobbyServerStateAbandoned),
9169            _ => None,
9170        }
9171    }
9172}
9173#[derive(serde::Serialize, serde::Deserialize)]
9174#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9175#[repr(i32)]
9176pub enum EBannedFeature {
9177    KEBannedFeatureInvalid = 0,
9178    KEBannedFeatureLowPriorityMatchmaking = 1,
9179    KEBannedFeatureCommsRestricted = 2,
9180    KEBannedFeatureReportingDisabled = 3,
9181}
9182impl EBannedFeature {
9183    /// String value of the enum field names used in the ProtoBuf definition.
9184    ///
9185    /// The values are not transformed in any way and thus are considered stable
9186    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9187    pub fn as_str_name(&self) -> &'static str {
9188        match self {
9189            Self::KEBannedFeatureInvalid => "k_eBannedFeature_Invalid",
9190            Self::KEBannedFeatureLowPriorityMatchmaking => {
9191                "k_eBannedFeature_LowPriorityMatchmaking"
9192            }
9193            Self::KEBannedFeatureCommsRestricted => "k_eBannedFeature_CommsRestricted",
9194            Self::KEBannedFeatureReportingDisabled => {
9195                "k_eBannedFeature_ReportingDisabled"
9196            }
9197        }
9198    }
9199    /// Creates an enum from field names used in the ProtoBuf definition.
9200    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9201        match value {
9202            "k_eBannedFeature_Invalid" => Some(Self::KEBannedFeatureInvalid),
9203            "k_eBannedFeature_LowPriorityMatchmaking" => {
9204                Some(Self::KEBannedFeatureLowPriorityMatchmaking)
9205            }
9206            "k_eBannedFeature_CommsRestricted" => {
9207                Some(Self::KEBannedFeatureCommsRestricted)
9208            }
9209            "k_eBannedFeature_ReportingDisabled" => {
9210                Some(Self::KEBannedFeatureReportingDisabled)
9211            }
9212            _ => None,
9213        }
9214    }
9215}
9216#[derive(serde::Serialize, serde::Deserialize)]
9217#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9218#[repr(i32)]
9219pub enum EFeatureBanReason {
9220    KEFeatureBanReasonInvalid = 0,
9221    KEFeatureBanReasonDevCommand = 1,
9222    KEFeatureBanReasonReportedByOtherPlayers = 2,
9223    KEFeatureBanReasonMatchAbandons = 3,
9224    KEFeatureBanReasonTooManyReportsSubmitted = 4,
9225}
9226impl EFeatureBanReason {
9227    /// String value of the enum field names used in the ProtoBuf definition.
9228    ///
9229    /// The values are not transformed in any way and thus are considered stable
9230    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9231    pub fn as_str_name(&self) -> &'static str {
9232        match self {
9233            Self::KEFeatureBanReasonInvalid => "k_eFeatureBanReason_Invalid",
9234            Self::KEFeatureBanReasonDevCommand => "k_eFeatureBanReason_DevCommand",
9235            Self::KEFeatureBanReasonReportedByOtherPlayers => {
9236                "k_eFeatureBanReason_ReportedByOtherPlayers"
9237            }
9238            Self::KEFeatureBanReasonMatchAbandons => "k_eFeatureBanReason_MatchAbandons",
9239            Self::KEFeatureBanReasonTooManyReportsSubmitted => {
9240                "k_eFeatureBanReason_TooManyReportsSubmitted"
9241            }
9242        }
9243    }
9244    /// Creates an enum from field names used in the ProtoBuf definition.
9245    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9246        match value {
9247            "k_eFeatureBanReason_Invalid" => Some(Self::KEFeatureBanReasonInvalid),
9248            "k_eFeatureBanReason_DevCommand" => Some(Self::KEFeatureBanReasonDevCommand),
9249            "k_eFeatureBanReason_ReportedByOtherPlayers" => {
9250                Some(Self::KEFeatureBanReasonReportedByOtherPlayers)
9251            }
9252            "k_eFeatureBanReason_MatchAbandons" => {
9253                Some(Self::KEFeatureBanReasonMatchAbandons)
9254            }
9255            "k_eFeatureBanReason_TooManyReportsSubmitted" => {
9256                Some(Self::KEFeatureBanReasonTooManyReportsSubmitted)
9257            }
9258            _ => None,
9259        }
9260    }
9261}
9262#[derive(serde::Serialize, serde::Deserialize)]
9263#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9264pub struct CCitadelClientMsgPause {}
9265#[derive(serde::Serialize, serde::Deserialize)]
9266#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9267pub struct CCitadelClientMsgMapPing {
9268    #[prost(message, optional, tag = "1")]
9269    pub ping_location: ::core::option::Option<CMsgVector>,
9270    #[prost(int32, optional, tag = "2")]
9271    pub event_type: ::core::option::Option<i32>,
9272    #[prost(int32, optional, tag = "3", default = "-1")]
9273    pub entity_index: ::core::option::Option<i32>,
9274    #[prost(bool, optional, tag = "4")]
9275    pub is_aggressive_ping: ::core::option::Option<bool>,
9276    #[prost(bool, optional, tag = "5")]
9277    pub is_minimap_ping: ::core::option::Option<bool>,
9278    #[prost(bool, optional, tag = "6")]
9279    pub is_blind_ping: ::core::option::Option<bool>,
9280}
9281#[derive(serde::Serialize, serde::Deserialize)]
9282#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9283pub struct CCitadelClientMsgPingWheel {
9284    #[prost(uint32, optional, tag = "1")]
9285    pub ping_wheel_option_id: ::core::option::Option<u32>,
9286    #[prost(uint32, optional, tag = "2")]
9287    pub subnav_message_id: ::core::option::Option<u32>,
9288    #[prost(message, optional, tag = "3")]
9289    pub ping_location: ::core::option::Option<CMsgVector>,
9290    #[prost(int32, optional, tag = "4", default = "-1")]
9291    pub entity_index: ::core::option::Option<i32>,
9292}
9293#[derive(serde::Serialize, serde::Deserialize)]
9294#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9295pub struct CCitadelClientMsgAbilityPing {
9296    #[prost(int32, optional, tag = "1", default = "-1")]
9297    pub entity_index: ::core::option::Option<i32>,
9298    #[prost(uint32, optional, tag = "2")]
9299    pub pinged_ability_id: ::core::option::Option<u32>,
9300    #[prost(int32, optional, tag = "3", default = "-1")]
9301    pub pinged_player_slot: ::core::option::Option<i32>,
9302}
9303#[derive(serde::Serialize, serde::Deserialize)]
9304#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9305pub struct CCitadelClientMsgMapLine {
9306    #[prost(message, optional, tag = "1")]
9307    pub mapline: ::core::option::Option<CMsgMapLine>,
9308}
9309#[derive(serde::Serialize, serde::Deserialize)]
9310#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9311pub struct CCitadelClientMsgQuickResponse {
9312    #[prost(uint32, optional, tag = "1")]
9313    pub ping_wheel_message_id: ::core::option::Option<u32>,
9314    #[prost(uint32, optional, tag = "2")]
9315    pub responding_to_ping_message_id: ::core::option::Option<u32>,
9316    #[prost(int32, optional, tag = "3", default = "-1")]
9317    pub responding_to_player_slot: ::core::option::Option<i32>,
9318}
9319#[derive(serde::Serialize, serde::Deserialize)]
9320#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9321pub struct CCitadelClientMsgPerformanceStats {
9322    #[prost(float, optional, tag = "1")]
9323    pub current_game_time: ::core::option::Option<f32>,
9324    #[prost(float, optional, tag = "2")]
9325    pub average_fps: ::core::option::Option<f32>,
9326    #[prost(float, optional, tag = "3")]
9327    pub min_fps: ::core::option::Option<f32>,
9328    #[prost(float, optional, tag = "4")]
9329    pub max_fps: ::core::option::Option<f32>,
9330}
9331#[derive(serde::Serialize, serde::Deserialize)]
9332#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9333pub struct CCitadelClientMsgChatMsg {
9334    #[prost(string, optional, tag = "1")]
9335    pub chat_text: ::core::option::Option<::prost::alloc::string::String>,
9336    #[prost(bool, optional, tag = "2")]
9337    pub all_chat: ::core::option::Option<bool>,
9338    #[prost(
9339        enumeration = "CMsgLaneColor",
9340        optional,
9341        tag = "3",
9342        default = "KELaneColorInvalid"
9343    )]
9344    pub lane_color: ::core::option::Option<i32>,
9345}
9346#[derive(serde::Serialize, serde::Deserialize)]
9347#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9348pub struct CCitadelClientMsgPerfReport {
9349    #[prost(float, optional, tag = "1")]
9350    pub average_frame_time: ::core::option::Option<f32>,
9351    #[prost(float, optional, tag = "2")]
9352    pub max_frame_time: ::core::option::Option<f32>,
9353    #[prost(float, optional, tag = "3")]
9354    pub average_compute_time: ::core::option::Option<f32>,
9355    #[prost(float, optional, tag = "4")]
9356    pub max_compute_time: ::core::option::Option<f32>,
9357    #[prost(float, optional, tag = "5")]
9358    pub average_client_tick_time: ::core::option::Option<f32>,
9359    #[prost(float, optional, tag = "6")]
9360    pub max_client_tick_time: ::core::option::Option<f32>,
9361    #[prost(float, optional, tag = "7")]
9362    pub average_client_simulate_time: ::core::option::Option<f32>,
9363    #[prost(float, optional, tag = "8")]
9364    pub max_client_simulate_time: ::core::option::Option<f32>,
9365    #[prost(float, optional, tag = "9")]
9366    pub average_output_time: ::core::option::Option<f32>,
9367    #[prost(float, optional, tag = "10")]
9368    pub max_output_time: ::core::option::Option<f32>,
9369    #[prost(float, optional, tag = "11")]
9370    pub average_wait_for_rendering_to_complete_time: ::core::option::Option<f32>,
9371    #[prost(float, optional, tag = "12")]
9372    pub max_wait_for_rendering_to_complete_time: ::core::option::Option<f32>,
9373    #[prost(float, optional, tag = "13")]
9374    pub average_swap_time: ::core::option::Option<f32>,
9375    #[prost(float, optional, tag = "14")]
9376    pub max_swap_time: ::core::option::Option<f32>,
9377    #[prost(float, optional, tag = "15")]
9378    pub average_frame_update_time: ::core::option::Option<f32>,
9379    #[prost(float, optional, tag = "16")]
9380    pub max_frame_update_time: ::core::option::Option<f32>,
9381    #[prost(float, optional, tag = "17")]
9382    pub average_idle_time: ::core::option::Option<f32>,
9383    #[prost(float, optional, tag = "18")]
9384    pub max_idle_time: ::core::option::Option<f32>,
9385    #[prost(float, optional, tag = "19")]
9386    pub average_input_processing_time: ::core::option::Option<f32>,
9387    #[prost(float, optional, tag = "20")]
9388    pub max_input_processing_time: ::core::option::Option<f32>,
9389}
9390#[derive(serde::Serialize, serde::Deserialize)]
9391#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9392pub struct CCitadelClientMsgGetDamageStats {
9393    #[prost(uint32, optional, tag = "1")]
9394    pub lobby_player_slot: ::core::option::Option<u32>,
9395    #[prost(string, optional, tag = "2")]
9396    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
9397}
9398#[derive(serde::Serialize, serde::Deserialize)]
9399#[derive(Clone, PartialEq, ::prost::Message)]
9400pub struct CCitadelClientCachedPlayerStats {
9401    #[prost(uint32, optional, tag = "1")]
9402    pub version: ::core::option::Option<u32>,
9403    #[prost(message, repeated, tag = "2")]
9404    pub stats: ::prost::alloc::vec::Vec<c_citadel_client_cached_player_stats::Stat>,
9405}
9406/// Nested message and enum types in `CCitadelClientCachedPlayerStats`.
9407pub mod c_citadel_client_cached_player_stats {
9408    #[derive(serde::Serialize, serde::Deserialize)]
9409    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9410    pub struct Stat {
9411        #[prost(string, optional, tag = "1")]
9412        pub stat_name: ::core::option::Option<::prost::alloc::string::String>,
9413        #[prost(uint64, optional, tag = "2")]
9414        pub all_time_total: ::core::option::Option<u64>,
9415        #[prost(uint32, optional, tag = "3")]
9416        pub all_time_match_max: ::core::option::Option<u32>,
9417        #[prost(uint32, optional, tag = "4")]
9418        pub all_time_life_max: ::core::option::Option<u32>,
9419    }
9420}
9421#[derive(serde::Serialize, serde::Deserialize)]
9422#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9423pub struct CCitadelClientMsgExecuteMapUnitAbility {
9424    #[prost(int32, optional, tag = "1")]
9425    pub ability_entity_index: ::core::option::Option<i32>,
9426    #[prost(int32, optional, tag = "2")]
9427    pub target_entity_index: ::core::option::Option<i32>,
9428}
9429#[derive(serde::Serialize, serde::Deserialize)]
9430#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9431pub struct CCitadelClientMsgCheaterVote {
9432    #[prost(bool, optional, tag = "1")]
9433    pub end_game_immediately: ::core::option::Option<bool>,
9434}
9435#[derive(serde::Serialize, serde::Deserialize)]
9436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9437pub struct CCitadelClientMsgMutePlayers {
9438    #[prost(int32, repeated, packed = "false", tag = "1")]
9439    pub player_slots: ::prost::alloc::vec::Vec<i32>,
9440    #[prost(bool, optional, tag = "2")]
9441    pub unmute: ::core::option::Option<bool>,
9442}
9443#[derive(serde::Serialize, serde::Deserialize)]
9444#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9445pub struct CCitadelClientMsgHitMismatch {
9446    #[prost(int32, optional, tag = "1", default = "-1")]
9447    pub client_hit_entity_index: ::core::option::Option<i32>,
9448    #[prost(int32, optional, tag = "2", default = "-1")]
9449    pub server_hit_entity_index: ::core::option::Option<i32>,
9450}
9451#[derive(serde::Serialize, serde::Deserialize)]
9452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9453pub struct CCitadelClientMsgHideoutStart {}
9454#[derive(serde::Serialize, serde::Deserialize)]
9455#[derive(Clone, PartialEq, ::prost::Message)]
9456pub struct CCitadelClientMsgHeroBuild {
9457    #[prost(message, optional, tag = "1")]
9458    pub hero_build: ::core::option::Option<CMsgHeroBuild>,
9459}
9460#[derive(serde::Serialize, serde::Deserialize)]
9461#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9462pub struct CCitadelClientMsgHideoutMenuState {
9463    #[prost(
9464        enumeration = "c_citadel_client_msg_hideout_menu_state::MenuState",
9465        optional,
9466        tag = "1",
9467        default = "KENone"
9468    )]
9469    pub menu_state: ::core::option::Option<i32>,
9470}
9471/// Nested message and enum types in `CCitadelClientMsg_HideoutMenuState`.
9472pub mod c_citadel_client_msg_hideout_menu_state {
9473    #[derive(serde::Serialize, serde::Deserialize)]
9474    #[derive(
9475        Clone,
9476        Copy,
9477        Debug,
9478        PartialEq,
9479        Eq,
9480        Hash,
9481        PartialOrd,
9482        Ord,
9483        ::prost::Enumeration
9484    )]
9485    #[repr(i32)]
9486    pub enum MenuState {
9487        KENone = 0,
9488        KEEscapeMenu = 1,
9489        KEDashboard = 2,
9490    }
9491    impl MenuState {
9492        /// String value of the enum field names used in the ProtoBuf definition.
9493        ///
9494        /// The values are not transformed in any way and thus are considered stable
9495        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9496        pub fn as_str_name(&self) -> &'static str {
9497            match self {
9498                Self::KENone => "k_eNone",
9499                Self::KEEscapeMenu => "k_eEscapeMenu",
9500                Self::KEDashboard => "k_eDashboard",
9501            }
9502        }
9503        /// Creates an enum from field names used in the ProtoBuf definition.
9504        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9505            match value {
9506                "k_eNone" => Some(Self::KENone),
9507                "k_eEscapeMenu" => Some(Self::KEEscapeMenu),
9508                "k_eDashboard" => Some(Self::KEDashboard),
9509                _ => None,
9510            }
9511        }
9512    }
9513}
9514#[derive(serde::Serialize, serde::Deserialize)]
9515#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9516pub struct CCitadelClientMsgHideoutSpawn {
9517    #[prost(uint32, optional, tag = "1")]
9518    pub hero_id: ::core::option::Option<u32>,
9519    #[prost(bool, optional, tag = "2")]
9520    pub show_intro: ::core::option::Option<bool>,
9521}
9522#[derive(serde::Serialize, serde::Deserialize)]
9523#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9524pub struct CCitadelClientMsgHideoutMatchmakingState {
9525    #[prost(bool, optional, tag = "1")]
9526    pub is_matchmaking: ::core::option::Option<bool>,
9527}
9528#[derive(serde::Serialize, serde::Deserialize)]
9529#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9530pub struct CCitadelClientMsgPlayerStatsUpdated {}
9531#[derive(serde::Serialize, serde::Deserialize)]
9532#[derive(Clone, PartialEq, ::prost::Message)]
9533pub struct CCitadelClientMsgHideoutUpdateHeroReleaseVoteTally {
9534    #[prost(message, repeated, tag = "1")]
9535    pub vote_round_to_tally: ::prost::alloc::vec::Vec<
9536        c_citadel_client_msg_hideout_update_hero_release_vote_tally::VoteRoundToTallyEntry,
9537    >,
9538}
9539/// Nested message and enum types in `CCitadelClientMsg_HideoutUpdateHeroReleaseVoteTally`.
9540pub mod c_citadel_client_msg_hideout_update_hero_release_vote_tally {
9541    #[derive(serde::Serialize, serde::Deserialize)]
9542    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
9543    pub struct VoteRoundToTallyEntry {
9544        #[prost(uint32, optional, tag = "1")]
9545        pub key: ::core::option::Option<u32>,
9546        #[prost(message, optional, tag = "2")]
9547        pub value: ::core::option::Option<super::CMsgHeroReleaseVoteTally>,
9548    }
9549}
9550#[derive(serde::Serialize, serde::Deserialize)]
9551#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
9552#[repr(i32)]
9553pub enum ECitadelClientMessages {
9554    CitadelCmMapPing = 1002,
9555    CitadelCmPerformanceStats = 1003,
9556    CitadelCmPingWheel = 1004,
9557    CitadelCmChatMsg = 1005,
9558    CitadelCmPerfReport = 1006,
9559    CitadelCmQuickResponse = 1007,
9560    CitadelCmPause = 1008,
9561    CitadelCmMapLine = 1009,
9562    CitadelCmAbilityPing = 1010,
9563    CitadelCmExecuteMapUnitAbility = 1011,
9564    CitadelCmGetDamageStats = 1012,
9565    CitadelCmCheaterVote = 1013,
9566    CitadelCmMutePlayers = 1014,
9567    CitadelCmHitMismatch = 1015,
9568    CitadelCmHideoutStart = 1016,
9569    CitadelCmHeroBuild = 1017,
9570    CitadelCmHideoutMenuState = 1018,
9571    CitadelCmHideoutSpawn = 1019,
9572    CitadelCmHideoutMatchmakingState = 1020,
9573    CitadelCmPlayerStatsUpdated = 1021,
9574    CitadelCmHideoutUpdateHeroReleaseVoteTally = 1022,
9575}
9576impl ECitadelClientMessages {
9577    /// String value of the enum field names used in the ProtoBuf definition.
9578    ///
9579    /// The values are not transformed in any way and thus are considered stable
9580    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
9581    pub fn as_str_name(&self) -> &'static str {
9582        match self {
9583            Self::CitadelCmMapPing => "CITADEL_CM_MapPing",
9584            Self::CitadelCmPerformanceStats => "CITADEL_CM_PerformanceStats",
9585            Self::CitadelCmPingWheel => "CITADEL_CM_PingWheel",
9586            Self::CitadelCmChatMsg => "CITADEL_CM_ChatMsg",
9587            Self::CitadelCmPerfReport => "CITADEL_CM_PerfReport",
9588            Self::CitadelCmQuickResponse => "CITADEL_CM_QuickResponse",
9589            Self::CitadelCmPause => "CITADEL_CM_Pause",
9590            Self::CitadelCmMapLine => "CITADEL_CM_MapLine",
9591            Self::CitadelCmAbilityPing => "CITADEL_CM_AbilityPing",
9592            Self::CitadelCmExecuteMapUnitAbility => "CITADEL_CM_ExecuteMapUnitAbility",
9593            Self::CitadelCmGetDamageStats => "CITADEL_CM_GetDamageStats",
9594            Self::CitadelCmCheaterVote => "CITADEL_CM_CheaterVote",
9595            Self::CitadelCmMutePlayers => "CITADEL_CM_MutePlayers",
9596            Self::CitadelCmHitMismatch => "CITADEL_CM_HitMismatch",
9597            Self::CitadelCmHideoutStart => "CITADEL_CM_HideoutStart",
9598            Self::CitadelCmHeroBuild => "CITADEL_CM_HeroBuild",
9599            Self::CitadelCmHideoutMenuState => "CITADEL_CM_HideoutMenuState",
9600            Self::CitadelCmHideoutSpawn => "CITADEL_CM_HideoutSpawn",
9601            Self::CitadelCmHideoutMatchmakingState => {
9602                "CITADEL_CM_HideoutMatchmakingState"
9603            }
9604            Self::CitadelCmPlayerStatsUpdated => "CITADEL_CM_PlayerStatsUpdated",
9605            Self::CitadelCmHideoutUpdateHeroReleaseVoteTally => {
9606                "CITADEL_CM_HideoutUpdateHeroReleaseVoteTally"
9607            }
9608        }
9609    }
9610    /// Creates an enum from field names used in the ProtoBuf definition.
9611    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
9612        match value {
9613            "CITADEL_CM_MapPing" => Some(Self::CitadelCmMapPing),
9614            "CITADEL_CM_PerformanceStats" => Some(Self::CitadelCmPerformanceStats),
9615            "CITADEL_CM_PingWheel" => Some(Self::CitadelCmPingWheel),
9616            "CITADEL_CM_ChatMsg" => Some(Self::CitadelCmChatMsg),
9617            "CITADEL_CM_PerfReport" => Some(Self::CitadelCmPerfReport),
9618            "CITADEL_CM_QuickResponse" => Some(Self::CitadelCmQuickResponse),
9619            "CITADEL_CM_Pause" => Some(Self::CitadelCmPause),
9620            "CITADEL_CM_MapLine" => Some(Self::CitadelCmMapLine),
9621            "CITADEL_CM_AbilityPing" => Some(Self::CitadelCmAbilityPing),
9622            "CITADEL_CM_ExecuteMapUnitAbility" => {
9623                Some(Self::CitadelCmExecuteMapUnitAbility)
9624            }
9625            "CITADEL_CM_GetDamageStats" => Some(Self::CitadelCmGetDamageStats),
9626            "CITADEL_CM_CheaterVote" => Some(Self::CitadelCmCheaterVote),
9627            "CITADEL_CM_MutePlayers" => Some(Self::CitadelCmMutePlayers),
9628            "CITADEL_CM_HitMismatch" => Some(Self::CitadelCmHitMismatch),
9629            "CITADEL_CM_HideoutStart" => Some(Self::CitadelCmHideoutStart),
9630            "CITADEL_CM_HeroBuild" => Some(Self::CitadelCmHeroBuild),
9631            "CITADEL_CM_HideoutMenuState" => Some(Self::CitadelCmHideoutMenuState),
9632            "CITADEL_CM_HideoutSpawn" => Some(Self::CitadelCmHideoutSpawn),
9633            "CITADEL_CM_HideoutMatchmakingState" => {
9634                Some(Self::CitadelCmHideoutMatchmakingState)
9635            }
9636            "CITADEL_CM_PlayerStatsUpdated" => Some(Self::CitadelCmPlayerStatsUpdated),
9637            "CITADEL_CM_HideoutUpdateHeroReleaseVoteTally" => {
9638                Some(Self::CitadelCmHideoutUpdateHeroReleaseVoteTally)
9639            }
9640            _ => None,
9641        }
9642    }
9643}
9644#[derive(serde::Serialize, serde::Deserialize)]
9645#[derive(Clone, PartialEq, ::prost::Message)]
9646pub struct CMsgFireBullets {
9647    #[prost(message, optional, tag = "1")]
9648    pub origin: ::core::option::Option<CMsgVector>,
9649    #[prost(message, optional, tag = "2")]
9650    pub angles: ::core::option::Option<CMsgQAngle>,
9651    #[prost(uint32, optional, tag = "4")]
9652    pub seed: ::core::option::Option<u32>,
9653    #[prost(int32, optional, tag = "5", default = "-1")]
9654    pub shooter_entity: ::core::option::Option<i32>,
9655    #[prost(int32, optional, tag = "7", default = "-1")]
9656    pub ability: ::core::option::Option<i32>,
9657    #[prost(float, optional, tag = "8")]
9658    pub penetration_percent: ::core::option::Option<f32>,
9659    #[prost(float, optional, tag = "9")]
9660    pub spread: ::core::option::Option<f32>,
9661    #[prost(bool, optional, tag = "10", default = "true")]
9662    pub fired_from_gun: ::core::option::Option<bool>,
9663    #[prost(uint32, optional, tag = "11")]
9664    pub bullets_override: ::core::option::Option<u32>,
9665    #[prost(message, optional, tag = "12")]
9666    pub tracer_replacement: ::core::option::Option<c_msg_fire_bullets::TracerAssignment>,
9667    #[prost(message, repeated, tag = "13")]
9668    pub tracer_additional: ::prost::alloc::vec::Vec<
9669        c_msg_fire_bullets::TracerAssignment,
9670    >,
9671    #[prost(message, optional, tag = "14")]
9672    pub angles_original: ::core::option::Option<CMsgQAngle>,
9673    #[prost(uint32, optional, tag = "15")]
9674    pub weapon_subclass_id: ::core::option::Option<u32>,
9675    #[prost(uint32, optional, tag = "16")]
9676    pub shot_number: ::core::option::Option<u32>,
9677    #[prost(int32, optional, tag = "17", default = "-1")]
9678    pub ignore_entity: ::core::option::Option<i32>,
9679    #[prost(float, optional, tag = "18")]
9680    pub max_range: ::core::option::Option<f32>,
9681    #[prost(uint32, optional, tag = "19")]
9682    pub shot_id: ::core::option::Option<u32>,
9683    #[prost(bool, optional, tag = "20", default = "true")]
9684    pub predict_hits_against_units: ::core::option::Option<bool>,
9685    #[prost(float, optional, tag = "21", default = "0")]
9686    pub bullet_radius_override: ::core::option::Option<f32>,
9687    #[prost(float, optional, tag = "22", default = "0")]
9688    pub bullet_speed_override: ::core::option::Option<f32>,
9689    #[prost(float, optional, tag = "23", default = "0")]
9690    pub bullet_gravity_override: ::core::option::Option<f32>,
9691    #[prost(int32, optional, tag = "24")]
9692    pub muzzle_number: ::core::option::Option<i32>,
9693    #[prost(bool, optional, tag = "25")]
9694    pub ability_as_bullet: ::core::option::Option<bool>,
9695}
9696/// Nested message and enum types in `CMsgFireBullets`.
9697pub mod c_msg_fire_bullets {
9698    #[derive(serde::Serialize, serde::Deserialize)]
9699    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9700    pub struct TracerAssignment {
9701        #[prost(uint64, optional, tag = "1")]
9702        pub tracer_resource_id: ::core::option::Option<u64>,
9703        #[prost(uint32, optional, tag = "2")]
9704        pub bullet_indicies: ::core::option::Option<u32>,
9705    }
9706}
9707#[derive(serde::Serialize, serde::Deserialize)]
9708#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9709pub struct CMsgBulletImpact {
9710    #[prost(message, optional, tag = "1")]
9711    pub trace_start: ::core::option::Option<CMsgVector>,
9712    #[prost(message, optional, tag = "2")]
9713    pub impact_origin: ::core::option::Option<CMsgVector>,
9714    #[prost(message, optional, tag = "3")]
9715    pub surface_normal: ::core::option::Option<CMsgVector>,
9716    #[prost(uint32, optional, tag = "4")]
9717    pub damage: ::core::option::Option<u32>,
9718    #[prost(uint32, optional, tag = "5")]
9719    pub surface_type: ::core::option::Option<u32>,
9720    #[prost(uint32, optional, tag = "7", default = "16777215")]
9721    pub ability_ehandle: ::core::option::Option<u32>,
9722    #[prost(uint32, optional, tag = "8", default = "16777215")]
9723    pub impacted_ehandle: ::core::option::Option<u32>,
9724    #[prost(uint32, optional, tag = "9")]
9725    pub impacted_bone_index: ::core::option::Option<u32>,
9726    #[prost(uint32, optional, tag = "10")]
9727    pub weapon_subclass_id: ::core::option::Option<u32>,
9728    #[prost(uint32, optional, tag = "11", default = "16777215")]
9729    pub shooter_ehandle: ::core::option::Option<u32>,
9730    #[prost(float, optional, tag = "12")]
9731    pub bullet_radius_override: ::core::option::Option<f32>,
9732}
9733#[derive(serde::Serialize, serde::Deserialize)]
9734#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9735pub struct CMsgPlayerAnimEvent {
9736    #[prost(fixed32, optional, tag = "1", default = "16777215")]
9737    pub player: ::core::option::Option<u32>,
9738    #[prost(uint32, optional, tag = "2")]
9739    pub event: ::core::option::Option<u32>,
9740    #[prost(int32, optional, tag = "3")]
9741    pub data: ::core::option::Option<i32>,
9742}
9743#[derive(serde::Serialize, serde::Deserialize)]
9744#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9745pub struct CMsgParticleSystemManager {
9746    #[prost(
9747        enumeration = "ParticleSystemManagerMessage",
9748        optional,
9749        tag = "1",
9750        default = "ParticleSystemManagerEventCreate"
9751    )]
9752    pub r#type: ::core::option::Option<i32>,
9753    #[prost(uint32, optional, tag = "2")]
9754    pub index: ::core::option::Option<u32>,
9755    #[prost(message, optional, tag = "3")]
9756    pub create_particle: ::core::option::Option<
9757        c_msg_particle_system_manager::CreateParticle,
9758    >,
9759    #[prost(message, optional, tag = "4")]
9760    pub destroy_particle: ::core::option::Option<
9761        c_msg_particle_system_manager::DestroyParticle,
9762    >,
9763    #[prost(message, optional, tag = "5")]
9764    pub destroy_particle_involving: ::core::option::Option<
9765        c_msg_particle_system_manager::DestroyParticleInvolving,
9766    >,
9767    #[prost(message, optional, tag = "6")]
9768    pub release_particle_index: ::core::option::Option<
9769        c_msg_particle_system_manager::ReleaseParticleIndex,
9770    >,
9771    #[prost(message, optional, tag = "7")]
9772    pub update_particle: ::core::option::Option<
9773        c_msg_particle_system_manager::UpdateParticle,
9774    >,
9775    #[prost(message, optional, tag = "8")]
9776    pub update_particle_fwd: ::core::option::Option<
9777        c_msg_particle_system_manager::UpdateParticleFwd,
9778    >,
9779    #[prost(message, optional, tag = "9")]
9780    pub update_particle_orient: ::core::option::Option<
9781        c_msg_particle_system_manager::UpdateParticleOrient,
9782    >,
9783    #[prost(message, optional, tag = "10")]
9784    pub update_particle_fallback: ::core::option::Option<
9785        c_msg_particle_system_manager::UpdateParticleFallback,
9786    >,
9787    #[prost(message, optional, tag = "11")]
9788    pub update_particle_offset: ::core::option::Option<
9789        c_msg_particle_system_manager::UpdateParticleOffset,
9790    >,
9791    #[prost(message, optional, tag = "12")]
9792    pub update_particle_ent: ::core::option::Option<
9793        c_msg_particle_system_manager::UpdateParticleEnt,
9794    >,
9795    #[prost(message, optional, tag = "13")]
9796    pub update_particle_frozen: ::core::option::Option<
9797        c_msg_particle_system_manager::UpdateParticleFrozen,
9798    >,
9799    #[prost(message, optional, tag = "14")]
9800    pub update_particle_should_draw: ::core::option::Option<
9801        c_msg_particle_system_manager::UpdateParticleShouldDraw,
9802    >,
9803}
9804/// Nested message and enum types in `CMsgParticleSystemManager`.
9805pub mod c_msg_particle_system_manager {
9806    #[derive(serde::Serialize, serde::Deserialize)]
9807    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9808    pub struct CreateParticle {
9809        #[prost(fixed64, optional, tag = "1")]
9810        pub particle_name_index: ::core::option::Option<u64>,
9811        #[prost(int32, optional, tag = "2")]
9812        pub attach_type: ::core::option::Option<i32>,
9813        #[prost(uint32, optional, tag = "3", default = "16777215")]
9814        pub entity_handle: ::core::option::Option<u32>,
9815        #[prost(message, optional, tag = "4")]
9816        pub position: ::core::option::Option<super::CMsgVector>,
9817        #[prost(message, optional, tag = "5")]
9818        pub angles: ::core::option::Option<super::CMsgQAngle>,
9819    }
9820    #[derive(serde::Serialize, serde::Deserialize)]
9821    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9822    pub struct DestroyParticle {
9823        #[prost(bool, optional, tag = "1")]
9824        pub destroy_immediately: ::core::option::Option<bool>,
9825    }
9826    #[derive(serde::Serialize, serde::Deserialize)]
9827    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9828    pub struct DestroyParticleInvolving {
9829        #[prost(bool, optional, tag = "1")]
9830        pub destroy_immediately: ::core::option::Option<bool>,
9831        #[prost(uint32, optional, tag = "3", default = "16777215")]
9832        pub entity_handle: ::core::option::Option<u32>,
9833    }
9834    #[derive(serde::Serialize, serde::Deserialize)]
9835    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9836    pub struct ReleaseParticleIndex {}
9837    #[derive(serde::Serialize, serde::Deserialize)]
9838    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9839    pub struct UpdateParticle {
9840        #[prost(int32, optional, tag = "1")]
9841        pub control_point: ::core::option::Option<i32>,
9842        #[prost(message, optional, tag = "2")]
9843        pub position: ::core::option::Option<super::CMsgVector>,
9844    }
9845    #[derive(serde::Serialize, serde::Deserialize)]
9846    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9847    pub struct UpdateParticleFwd {
9848        #[prost(int32, optional, tag = "1")]
9849        pub control_point: ::core::option::Option<i32>,
9850        #[prost(message, optional, tag = "2")]
9851        pub forward: ::core::option::Option<super::CMsgVector>,
9852    }
9853    #[derive(serde::Serialize, serde::Deserialize)]
9854    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9855    pub struct UpdateParticleOrient {
9856        #[prost(int32, optional, tag = "1")]
9857        pub control_point: ::core::option::Option<i32>,
9858        #[prost(message, optional, tag = "2")]
9859        pub forward: ::core::option::Option<super::CMsgVector>,
9860        #[prost(message, optional, tag = "3")]
9861        pub left: ::core::option::Option<super::CMsgVector>,
9862        #[prost(message, optional, tag = "4")]
9863        pub up: ::core::option::Option<super::CMsgVector>,
9864    }
9865    #[derive(serde::Serialize, serde::Deserialize)]
9866    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9867    pub struct UpdateParticleFallback {
9868        #[prost(int32, optional, tag = "1")]
9869        pub control_point: ::core::option::Option<i32>,
9870        #[prost(message, optional, tag = "2")]
9871        pub position: ::core::option::Option<super::CMsgVector>,
9872    }
9873    #[derive(serde::Serialize, serde::Deserialize)]
9874    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9875    pub struct UpdateParticleEnt {
9876        #[prost(int32, optional, tag = "1")]
9877        pub control_point: ::core::option::Option<i32>,
9878        #[prost(uint32, optional, tag = "2", default = "16777215")]
9879        pub entity_handle: ::core::option::Option<u32>,
9880        #[prost(int32, optional, tag = "3")]
9881        pub attach_type: ::core::option::Option<i32>,
9882        #[prost(int32, optional, tag = "4")]
9883        pub attachment: ::core::option::Option<i32>,
9884        #[prost(message, optional, tag = "5")]
9885        pub fallback_position: ::core::option::Option<super::CMsgVector>,
9886    }
9887    #[derive(serde::Serialize, serde::Deserialize)]
9888    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
9889    pub struct UpdateParticleOffset {
9890        #[prost(int32, optional, tag = "1")]
9891        pub control_point: ::core::option::Option<i32>,
9892        #[prost(message, optional, tag = "2")]
9893        pub origin_offset: ::core::option::Option<super::CMsgVector>,
9894    }
9895    #[derive(serde::Serialize, serde::Deserialize)]
9896    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9897    pub struct UpdateParticleFrozen {
9898        #[prost(bool, optional, tag = "1")]
9899        pub set_frozen: ::core::option::Option<bool>,
9900    }
9901    #[derive(serde::Serialize, serde::Deserialize)]
9902    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9903    pub struct UpdateParticleShouldDraw {
9904        #[prost(bool, optional, tag = "1")]
9905        pub should_draw: ::core::option::Option<bool>,
9906    }
9907}
9908#[derive(serde::Serialize, serde::Deserialize)]
9909#[derive(Clone, PartialEq, ::prost::Message)]
9910pub struct CMsgScreenTextPretty {
9911    #[prost(float, optional, tag = "1")]
9912    pub x_pos: ::core::option::Option<f32>,
9913    #[prost(float, optional, tag = "2")]
9914    pub y_pos: ::core::option::Option<f32>,
9915    #[prost(int32, optional, tag = "3")]
9916    pub line: ::core::option::Option<i32>,
9917    #[prost(string, optional, tag = "4")]
9918    pub text: ::core::option::Option<::prost::alloc::string::String>,
9919    #[prost(int32, optional, tag = "5")]
9920    pub r: ::core::option::Option<i32>,
9921    #[prost(int32, optional, tag = "6")]
9922    pub g: ::core::option::Option<i32>,
9923    #[prost(int32, optional, tag = "7")]
9924    pub b: ::core::option::Option<i32>,
9925    #[prost(int32, optional, tag = "8")]
9926    pub a: ::core::option::Option<i32>,
9927    #[prost(float, optional, tag = "9")]
9928    pub duration: ::core::option::Option<f32>,
9929    #[prost(string, optional, tag = "10")]
9930    pub font_name: ::core::option::Option<::prost::alloc::string::String>,
9931    #[prost(int32, optional, tag = "11")]
9932    pub font_size: ::core::option::Option<i32>,
9933    #[prost(bool, optional, tag = "12")]
9934    pub bold_font: ::core::option::Option<bool>,
9935}
9936#[derive(serde::Serialize, serde::Deserialize)]
9937#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9938pub struct CMsgServerRequestedTracer {
9939    #[prost(message, optional, tag = "1")]
9940    pub origin: ::core::option::Option<CMsgVector>,
9941    #[prost(message, optional, tag = "2")]
9942    pub end: ::core::option::Option<CMsgVector>,
9943    #[prost(int32, optional, tag = "3", default = "-1")]
9944    pub weaponid: ::core::option::Option<i32>,
9945    #[prost(uint32, optional, tag = "4", default = "16777215")]
9946    pub entity_handle: ::core::option::Option<u32>,
9947    #[prost(float, optional, tag = "5")]
9948    pub dps: ::core::option::Option<f32>,
9949}
9950#[derive(serde::Serialize, serde::Deserialize)]
9951#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9952pub struct CMsgEnableSatVolumesEvent {
9953    #[prost(uint32, optional, tag = "1")]
9954    pub mode: ::core::option::Option<u32>,
9955    #[prost(float, optional, tag = "2")]
9956    pub desat_amount: ::core::option::Option<f32>,
9957    #[prost(fixed32, optional, tag = "3")]
9958    pub sat_tint: ::core::option::Option<u32>,
9959    #[prost(fixed32, optional, tag = "4")]
9960    pub desat_tint: ::core::option::Option<u32>,
9961    #[prost(fixed32, optional, tag = "5")]
9962    pub outline_color: ::core::option::Option<u32>,
9963}
9964#[derive(serde::Serialize, serde::Deserialize)]
9965#[derive(Clone, Copy, PartialEq, ::prost::Message)]
9966pub struct CMsgPlaceSatVolumeEvent {
9967    #[prost(message, optional, tag = "1")]
9968    pub position: ::core::option::Option<CMsgVector>,
9969    #[prost(message, optional, tag = "2")]
9970    pub direction: ::core::option::Option<CMsgVector>,
9971    #[prost(float, optional, tag = "3")]
9972    pub radius: ::core::option::Option<f32>,
9973    #[prost(float, optional, tag = "4")]
9974    pub falloff_distance: ::core::option::Option<f32>,
9975    #[prost(float, optional, tag = "5")]
9976    pub theta_dot: ::core::option::Option<f32>,
9977    #[prost(float, optional, tag = "6")]
9978    pub phi_dot: ::core::option::Option<f32>,
9979    #[prost(uint32, optional, tag = "7", default = "16777215")]
9980    pub entity_handle: ::core::option::Option<u32>,
9981    #[prost(uint32, optional, tag = "8")]
9982    pub attachment_handle: ::core::option::Option<u32>,
9983    #[prost(uint32, optional, tag = "9")]
9984    pub r#type: ::core::option::Option<u32>,
9985    #[prost(int32, optional, tag = "10")]
9986    pub volume_id: ::core::option::Option<i32>,
9987}
9988#[derive(serde::Serialize, serde::Deserialize)]
9989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9990pub struct CMsgRemoveSatVolumeEvent {
9991    #[prost(int32, optional, tag = "1")]
9992    pub volume_id: ::core::option::Option<i32>,
9993}
9994#[derive(serde::Serialize, serde::Deserialize)]
9995#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9996pub struct CMsgDisableSatVolumesEvent {}
9997#[derive(serde::Serialize, serde::Deserialize)]
9998#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
9999pub struct CMsgRemoveBullet {
10000    #[prost(int32, optional, tag = "1", default = "-1")]
10001    pub shooter_entindex: ::core::option::Option<i32>,
10002    #[prost(uint32, optional, tag = "2")]
10003    pub shot_id: ::core::option::Option<u32>,
10004    #[prost(uint32, optional, tag = "3")]
10005    pub bullet_index: ::core::option::Option<u32>,
10006}
10007#[derive(serde::Serialize, serde::Deserialize)]
10008#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10009#[repr(i32)]
10010pub enum ECitadelGameEvents {
10011    GeFireBullets = 450,
10012    GePlayerAnimEvent = 451,
10013    GeParticleSystemManager = 458,
10014    GeScreenTextPretty = 459,
10015    GeBulletImpact = 461,
10016    GeEnableSatVolumesEvent = 462,
10017    GePlaceSatVolumeEvent = 463,
10018    GeDisableSatVolumesEvent = 464,
10019    GeRemoveSatVolumeEvent = 465,
10020    GeRemoveBullet = 466,
10021}
10022impl ECitadelGameEvents {
10023    /// String value of the enum field names used in the ProtoBuf definition.
10024    ///
10025    /// The values are not transformed in any way and thus are considered stable
10026    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10027    pub fn as_str_name(&self) -> &'static str {
10028        match self {
10029            Self::GeFireBullets => "GE_FireBullets",
10030            Self::GePlayerAnimEvent => "GE_PlayerAnimEvent",
10031            Self::GeParticleSystemManager => "GE_ParticleSystemManager",
10032            Self::GeScreenTextPretty => "GE_ScreenTextPretty",
10033            Self::GeBulletImpact => "GE_BulletImpact",
10034            Self::GeEnableSatVolumesEvent => "GE_EnableSatVolumesEvent",
10035            Self::GePlaceSatVolumeEvent => "GE_PlaceSatVolumeEvent",
10036            Self::GeDisableSatVolumesEvent => "GE_DisableSatVolumesEvent",
10037            Self::GeRemoveSatVolumeEvent => "GE_RemoveSatVolumeEvent",
10038            Self::GeRemoveBullet => "GE_RemoveBullet",
10039        }
10040    }
10041    /// Creates an enum from field names used in the ProtoBuf definition.
10042    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10043        match value {
10044            "GE_FireBullets" => Some(Self::GeFireBullets),
10045            "GE_PlayerAnimEvent" => Some(Self::GePlayerAnimEvent),
10046            "GE_ParticleSystemManager" => Some(Self::GeParticleSystemManager),
10047            "GE_ScreenTextPretty" => Some(Self::GeScreenTextPretty),
10048            "GE_BulletImpact" => Some(Self::GeBulletImpact),
10049            "GE_EnableSatVolumesEvent" => Some(Self::GeEnableSatVolumesEvent),
10050            "GE_PlaceSatVolumeEvent" => Some(Self::GePlaceSatVolumeEvent),
10051            "GE_DisableSatVolumesEvent" => Some(Self::GeDisableSatVolumesEvent),
10052            "GE_RemoveSatVolumeEvent" => Some(Self::GeRemoveSatVolumeEvent),
10053            "GE_RemoveBullet" => Some(Self::GeRemoveBullet),
10054            _ => None,
10055        }
10056    }
10057}
10058#[derive(serde::Serialize, serde::Deserialize)]
10059#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
10060#[repr(i32)]
10061pub enum ParticleSystemManagerMessage {
10062    ParticleSystemManagerEventCreate = 0,
10063    ParticleSystemManagerEventDestroy = 1,
10064    ParticleSystemManagerEventDestroyInvolving = 2,
10065    ParticleSystemManagerEventRelease = 3,
10066    ParticleSystemManagerEventUpdate = 4,
10067    ParticleSystemManagerEventUpdateForward = 5,
10068    ParticleSystemManagerEventUpdateOrientation = 6,
10069    ParticleSystemManagerEventUpdateFallback = 7,
10070    ParticleSystemManagerEventUpdateEnt = 8,
10071    ParticleSystemManagerEventUpdateOffset = 9,
10072    ParticleSystemManagerEventUpdateFrozen = 10,
10073    ParticleSystemManagerEventUpdateShouldDraw = 11,
10074}
10075impl ParticleSystemManagerMessage {
10076    /// String value of the enum field names used in the ProtoBuf definition.
10077    ///
10078    /// The values are not transformed in any way and thus are considered stable
10079    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10080    pub fn as_str_name(&self) -> &'static str {
10081        match self {
10082            Self::ParticleSystemManagerEventCreate => {
10083                "PARTICLE_SYSTEM_MANAGER_EVENT_CREATE"
10084            }
10085            Self::ParticleSystemManagerEventDestroy => {
10086                "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY"
10087            }
10088            Self::ParticleSystemManagerEventDestroyInvolving => {
10089                "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY_INVOLVING"
10090            }
10091            Self::ParticleSystemManagerEventRelease => {
10092                "PARTICLE_SYSTEM_MANAGER_EVENT_RELEASE"
10093            }
10094            Self::ParticleSystemManagerEventUpdate => {
10095                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE"
10096            }
10097            Self::ParticleSystemManagerEventUpdateForward => {
10098                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FORWARD"
10099            }
10100            Self::ParticleSystemManagerEventUpdateOrientation => {
10101                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ORIENTATION"
10102            }
10103            Self::ParticleSystemManagerEventUpdateFallback => {
10104                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FALLBACK"
10105            }
10106            Self::ParticleSystemManagerEventUpdateEnt => {
10107                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ENT"
10108            }
10109            Self::ParticleSystemManagerEventUpdateOffset => {
10110                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_OFFSET"
10111            }
10112            Self::ParticleSystemManagerEventUpdateFrozen => {
10113                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FROZEN"
10114            }
10115            Self::ParticleSystemManagerEventUpdateShouldDraw => {
10116                "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_SHOULD_DRAW"
10117            }
10118        }
10119    }
10120    /// Creates an enum from field names used in the ProtoBuf definition.
10121    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10122        match value {
10123            "PARTICLE_SYSTEM_MANAGER_EVENT_CREATE" => {
10124                Some(Self::ParticleSystemManagerEventCreate)
10125            }
10126            "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY" => {
10127                Some(Self::ParticleSystemManagerEventDestroy)
10128            }
10129            "PARTICLE_SYSTEM_MANAGER_EVENT_DESTROY_INVOLVING" => {
10130                Some(Self::ParticleSystemManagerEventDestroyInvolving)
10131            }
10132            "PARTICLE_SYSTEM_MANAGER_EVENT_RELEASE" => {
10133                Some(Self::ParticleSystemManagerEventRelease)
10134            }
10135            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE" => {
10136                Some(Self::ParticleSystemManagerEventUpdate)
10137            }
10138            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FORWARD" => {
10139                Some(Self::ParticleSystemManagerEventUpdateForward)
10140            }
10141            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ORIENTATION" => {
10142                Some(Self::ParticleSystemManagerEventUpdateOrientation)
10143            }
10144            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FALLBACK" => {
10145                Some(Self::ParticleSystemManagerEventUpdateFallback)
10146            }
10147            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_ENT" => {
10148                Some(Self::ParticleSystemManagerEventUpdateEnt)
10149            }
10150            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_OFFSET" => {
10151                Some(Self::ParticleSystemManagerEventUpdateOffset)
10152            }
10153            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_FROZEN" => {
10154                Some(Self::ParticleSystemManagerEventUpdateFrozen)
10155            }
10156            "PARTICLE_SYSTEM_MANAGER_EVENT_UPDATE_SHOULD_DRAW" => {
10157                Some(Self::ParticleSystemManagerEventUpdateShouldDraw)
10158            }
10159            _ => None,
10160        }
10161    }
10162}
10163#[derive(serde::Serialize, serde::Deserialize)]
10164#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10165pub struct CsoGameAccountClient {
10166    #[prost(uint32, optional, tag = "1")]
10167    pub account_id: ::core::option::Option<u32>,
10168    #[prost(uint64, optional, tag = "2")]
10169    pub flags: ::core::option::Option<u64>,
10170    #[prost(uint32, optional, tag = "3")]
10171    pub wins: ::core::option::Option<u32>,
10172    #[prost(uint32, optional, tag = "4")]
10173    pub losses: ::core::option::Option<u32>,
10174    #[prost(uint32, optional, tag = "5")]
10175    pub kills: ::core::option::Option<u32>,
10176    #[prost(uint32, optional, tag = "6")]
10177    pub most_played_hero_id: ::core::option::Option<u32>,
10178    #[prost(uint64, optional, tag = "7")]
10179    pub permissions: ::core::option::Option<u64>,
10180    #[prost(uint64, optional, tag = "8")]
10181    pub new_player_progress: ::core::option::Option<u64>,
10182    #[prost(uint32, optional, tag = "9")]
10183    pub hero_unlock_credits: ::core::option::Option<u32>,
10184    #[prost(uint32, optional, tag = "10")]
10185    pub mm_ban_until: ::core::option::Option<u32>,
10186    #[prost(uint32, optional, tag = "11")]
10187    pub comms_ban_until: ::core::option::Option<u32>,
10188    #[prost(uint32, optional, tag = "12")]
10189    pub low_priority_games_remaining: ::core::option::Option<u32>,
10190    #[prost(uint32, optional, tag = "13")]
10191    pub report_ban_until: ::core::option::Option<u32>,
10192    #[prost(uint32, optional, tag = "14")]
10193    pub ranked_badge_level: ::core::option::Option<u32>,
10194    #[prost(uint32, optional, tag = "15")]
10195    pub priority_tokens: ::core::option::Option<u32>,
10196    #[prost(uint32, optional, tag = "16")]
10197    pub priority_token_progress: ::core::option::Option<u32>,
10198    #[prost(uint32, optional, tag = "17")]
10199    pub priority_tokens_earned: ::core::option::Option<u32>,
10200    #[prost(uint32, optional, tag = "18")]
10201    pub brawl_wins: ::core::option::Option<u32>,
10202    #[prost(uint32, optional, tag = "19")]
10203    pub brawl_losses: ::core::option::Option<u32>,
10204    #[prost(uint32, optional, tag = "20")]
10205    pub brawl_kills: ::core::option::Option<u32>,
10206}
10207/// Nested message and enum types in `CSOGameAccountClient`.
10208pub mod cso_game_account_client {
10209    #[derive(serde::Serialize, serde::Deserialize)]
10210    #[derive(
10211        Clone,
10212        Copy,
10213        Debug,
10214        PartialEq,
10215        Eq,
10216        Hash,
10217        PartialOrd,
10218        Ord,
10219        ::prost::Enumeration
10220    )]
10221    #[repr(i32)]
10222    pub enum EFlags {
10223        KEDeveloper = 1,
10224        KEExternalModerator = 2,
10225        KEGotInitialHeroes = 4,
10226        KEHideHolidayModels = 8,
10227        KEClaimedDiscordLink = 16,
10228        KEClaimedForum = 32,
10229        KEAccountBanned = 64,
10230    }
10231    impl EFlags {
10232        /// String value of the enum field names used in the ProtoBuf definition.
10233        ///
10234        /// The values are not transformed in any way and thus are considered stable
10235        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10236        pub fn as_str_name(&self) -> &'static str {
10237            match self {
10238                Self::KEDeveloper => "k_eDeveloper",
10239                Self::KEExternalModerator => "k_eExternalModerator",
10240                Self::KEGotInitialHeroes => "k_eGotInitialHeroes",
10241                Self::KEHideHolidayModels => "k_eHideHolidayModels",
10242                Self::KEClaimedDiscordLink => "k_eClaimedDiscordLink",
10243                Self::KEClaimedForum => "k_eClaimedForum",
10244                Self::KEAccountBanned => "k_eAccountBanned",
10245            }
10246        }
10247        /// Creates an enum from field names used in the ProtoBuf definition.
10248        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10249            match value {
10250                "k_eDeveloper" => Some(Self::KEDeveloper),
10251                "k_eExternalModerator" => Some(Self::KEExternalModerator),
10252                "k_eGotInitialHeroes" => Some(Self::KEGotInitialHeroes),
10253                "k_eHideHolidayModels" => Some(Self::KEHideHolidayModels),
10254                "k_eClaimedDiscordLink" => Some(Self::KEClaimedDiscordLink),
10255                "k_eClaimedForum" => Some(Self::KEClaimedForum),
10256                "k_eAccountBanned" => Some(Self::KEAccountBanned),
10257                _ => None,
10258            }
10259        }
10260    }
10261}
10262#[derive(serde::Serialize, serde::Deserialize)]
10263#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10264pub struct CsoAccountSyncStorage {
10265    #[prost(uint32, optional, tag = "1")]
10266    pub account_id: ::core::option::Option<u32>,
10267    #[prost(uint32, optional, tag = "2")]
10268    pub id: ::core::option::Option<u32>,
10269    #[prost(uint32, optional, tag = "3")]
10270    pub value: ::core::option::Option<u32>,
10271}
10272#[derive(serde::Serialize, serde::Deserialize)]
10273#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10274pub struct CsoAccountHeroInfo {
10275    #[prost(uint32, optional, tag = "1")]
10276    pub account_id: ::core::option::Option<u32>,
10277    #[prost(uint32, optional, tag = "2")]
10278    pub hero_id: ::core::option::Option<u32>,
10279    #[prost(
10280        enumeration = "cso_account_hero_info::EHeroStatus",
10281        optional,
10282        tag = "3",
10283        default = "KELocked"
10284    )]
10285    pub status: ::core::option::Option<i32>,
10286    #[prost(uint32, optional, tag = "4")]
10287    pub wins: ::core::option::Option<u32>,
10288    #[prost(uint32, optional, tag = "5")]
10289    pub kills: ::core::option::Option<u32>,
10290    #[prost(uint32, optional, tag = "6")]
10291    pub hero_xp: ::core::option::Option<u32>,
10292    #[prost(uint32, optional, tag = "7")]
10293    pub brawl_wins: ::core::option::Option<u32>,
10294    #[prost(uint32, optional, tag = "8")]
10295    pub brawl_kills: ::core::option::Option<u32>,
10296}
10297/// Nested message and enum types in `CSOAccountHeroInfo`.
10298pub mod cso_account_hero_info {
10299    #[derive(serde::Serialize, serde::Deserialize)]
10300    #[derive(
10301        Clone,
10302        Copy,
10303        Debug,
10304        PartialEq,
10305        Eq,
10306        Hash,
10307        PartialOrd,
10308        Ord,
10309        ::prost::Enumeration
10310    )]
10311    #[repr(i32)]
10312    pub enum EHeroStatus {
10313        KELocked = 0,
10314        KEOwned = 1,
10315    }
10316    impl EHeroStatus {
10317        /// String value of the enum field names used in the ProtoBuf definition.
10318        ///
10319        /// The values are not transformed in any way and thus are considered stable
10320        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10321        pub fn as_str_name(&self) -> &'static str {
10322            match self {
10323                Self::KELocked => "k_eLocked",
10324                Self::KEOwned => "k_eOwned",
10325            }
10326        }
10327        /// Creates an enum from field names used in the ProtoBuf definition.
10328        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10329            match value {
10330                "k_eLocked" => Some(Self::KELocked),
10331                "k_eOwned" => Some(Self::KEOwned),
10332                _ => None,
10333            }
10334        }
10335    }
10336}
10337#[derive(serde::Serialize, serde::Deserialize)]
10338#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10339pub struct CsoAccountChallenge {
10340    #[prost(uint32, optional, tag = "1")]
10341    pub account_id: ::core::option::Option<u32>,
10342    #[prost(uint64, optional, tag = "2")]
10343    pub challenge_id: ::core::option::Option<u64>,
10344    #[prost(
10345        enumeration = "cso_account_challenge::EChallengeStatus",
10346        optional,
10347        tag = "3",
10348        default = "KEInvalid"
10349    )]
10350    pub status: ::core::option::Option<i32>,
10351    #[prost(uint32, optional, tag = "4")]
10352    pub progress: ::core::option::Option<u32>,
10353    #[prost(uint32, optional, tag = "5")]
10354    pub max_progress: ::core::option::Option<u32>,
10355    #[prost(uint32, optional, tag = "6")]
10356    pub choice_group: ::core::option::Option<u32>,
10357    #[prost(
10358        enumeration = "cso_account_challenge::ERewardType",
10359        optional,
10360        tag = "7",
10361        default = "KERewardHeroXp"
10362    )]
10363    pub reward_type: ::core::option::Option<i32>,
10364    #[prost(uint32, optional, tag = "8")]
10365    pub reward_param: ::core::option::Option<u32>,
10366    #[prost(uint32, optional, tag = "9")]
10367    pub reward_amount: ::core::option::Option<u32>,
10368}
10369/// Nested message and enum types in `CSOAccountChallenge`.
10370pub mod cso_account_challenge {
10371    #[derive(serde::Serialize, serde::Deserialize)]
10372    #[derive(
10373        Clone,
10374        Copy,
10375        Debug,
10376        PartialEq,
10377        Eq,
10378        Hash,
10379        PartialOrd,
10380        Ord,
10381        ::prost::Enumeration
10382    )]
10383    #[repr(i32)]
10384    pub enum EChallengeStatus {
10385        KEInvalid = 0,
10386        KERejected = 1,
10387        KEActiveChoice = 2,
10388        KEActive = 3,
10389        KECompleted = 4,
10390        KEExpired = 5,
10391    }
10392    impl EChallengeStatus {
10393        /// String value of the enum field names used in the ProtoBuf definition.
10394        ///
10395        /// The values are not transformed in any way and thus are considered stable
10396        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10397        pub fn as_str_name(&self) -> &'static str {
10398            match self {
10399                Self::KEInvalid => "k_eInvalid",
10400                Self::KERejected => "k_eRejected",
10401                Self::KEActiveChoice => "k_eActiveChoice",
10402                Self::KEActive => "k_eActive",
10403                Self::KECompleted => "k_eCompleted",
10404                Self::KEExpired => "k_eExpired",
10405            }
10406        }
10407        /// Creates an enum from field names used in the ProtoBuf definition.
10408        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10409            match value {
10410                "k_eInvalid" => Some(Self::KEInvalid),
10411                "k_eRejected" => Some(Self::KERejected),
10412                "k_eActiveChoice" => Some(Self::KEActiveChoice),
10413                "k_eActive" => Some(Self::KEActive),
10414                "k_eCompleted" => Some(Self::KECompleted),
10415                "k_eExpired" => Some(Self::KEExpired),
10416                _ => None,
10417            }
10418        }
10419    }
10420    #[derive(serde::Serialize, serde::Deserialize)]
10421    #[derive(
10422        Clone,
10423        Copy,
10424        Debug,
10425        PartialEq,
10426        Eq,
10427        Hash,
10428        PartialOrd,
10429        Ord,
10430        ::prost::Enumeration
10431    )]
10432    #[repr(i32)]
10433    pub enum ERewardType {
10434        KERewardHeroXp = 0,
10435    }
10436    impl ERewardType {
10437        /// String value of the enum field names used in the ProtoBuf definition.
10438        ///
10439        /// The values are not transformed in any way and thus are considered stable
10440        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10441        pub fn as_str_name(&self) -> &'static str {
10442            match self {
10443                Self::KERewardHeroXp => "k_eReward_HeroXP",
10444            }
10445        }
10446        /// Creates an enum from field names used in the ProtoBuf definition.
10447        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10448            match value {
10449                "k_eReward_HeroXP" => Some(Self::KERewardHeroXp),
10450                _ => None,
10451            }
10452        }
10453    }
10454}
10455#[derive(serde::Serialize, serde::Deserialize)]
10456#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10457pub struct CMsgCitadelClientHello {}
10458#[derive(serde::Serialize, serde::Deserialize)]
10459#[derive(Clone, PartialEq, ::prost::Message)]
10460pub struct CMsgClientToGcStartMatchmaking {
10461    #[prost(uint32, optional, tag = "1")]
10462    pub client_version: ::core::option::Option<u32>,
10463    #[prost(
10464        enumeration = "EgcPlatform",
10465        optional,
10466        tag = "2",
10467        default = "KEGcPlatformNone"
10468    )]
10469    pub client_platform: ::core::option::Option<i32>,
10470    #[prost(message, optional, tag = "3")]
10471    pub match_info: ::core::option::Option<CMsgStartFindingMatchInfo>,
10472    #[prost(message, optional, tag = "4")]
10473    pub ping_times: ::core::option::Option<CMsgRegionPingTimesClient>,
10474    #[prost(message, optional, tag = "5")]
10475    pub heroes: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
10476}
10477#[derive(serde::Serialize, serde::Deserialize)]
10478#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10479pub struct CMsgClientToGcStartMatchmakingResponse {
10480    #[prost(
10481        enumeration = "c_msg_client_to_gc_start_matchmaking_response::EResultCode",
10482        optional,
10483        tag = "1",
10484        default = "KEResultOk"
10485    )]
10486    pub result: ::core::option::Option<i32>,
10487    #[prost(uint32, optional, tag = "2")]
10488    pub time_stamp: ::core::option::Option<u32>,
10489    #[prost(string, optional, tag = "3")]
10490    pub debug_message: ::core::option::Option<::prost::alloc::string::String>,
10491}
10492/// Nested message and enum types in `CMsgClientToGCStartMatchmakingResponse`.
10493pub mod c_msg_client_to_gc_start_matchmaking_response {
10494    #[derive(serde::Serialize, serde::Deserialize)]
10495    #[derive(
10496        Clone,
10497        Copy,
10498        Debug,
10499        PartialEq,
10500        Eq,
10501        Hash,
10502        PartialOrd,
10503        Ord,
10504        ::prost::Enumeration
10505    )]
10506    #[repr(i32)]
10507    pub enum EResultCode {
10508        KEResultOk = 0,
10509        KEResultAlreadyFindingMatch = 1,
10510        KEResultPartyMemberInLobby = 2,
10511        KEResultInvalidClientVersion = 3,
10512        KEResultMatchmakingDisabled = 4,
10513        KEResultMatchmakingTooBusy = 5,
10514        KEResultInternalError = 6,
10515        KEResultNoRegionPings = 7,
10516        KEResultInParty = 8,
10517        KEResultModeLocked = 9,
10518        KEResultModeBanned = 10,
10519        KEResultRegionInfoNotProvided = 11,
10520        KEResultDurationControlBlocked = 12,
10521        KEResultInvalidHeroSelection = 13,
10522        KEResultHeroesNotUnlocked = 14,
10523        KEResultPermanentBan = 15,
10524        KEResultRankedMmNotOpen = 16,
10525        KEResultRankedNotUnlocked = 17,
10526        KEResultNoRankedWhileInLowPri = 18,
10527        KEResultNoRankedWhileCommsBanned = 19,
10528        KEResultNoRankedWhileReportBanned = 20,
10529        KEResultHeroLabsMmNotOpen = 21,
10530        KEResultHeroLabsNotUnlocked = 22,
10531        KEResultNoHeroLabsWhileInLowPri = 23,
10532        KEResultAccountLocked = 24,
10533        KEResultTooManyLimitedHeroes = 25,
10534    }
10535    impl EResultCode {
10536        /// String value of the enum field names used in the ProtoBuf definition.
10537        ///
10538        /// The values are not transformed in any way and thus are considered stable
10539        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10540        pub fn as_str_name(&self) -> &'static str {
10541            match self {
10542                Self::KEResultOk => "k_EResult_OK",
10543                Self::KEResultAlreadyFindingMatch => "k_EResult_AlreadyFindingMatch",
10544                Self::KEResultPartyMemberInLobby => "k_EResult_PartyMemberInLobby",
10545                Self::KEResultInvalidClientVersion => "k_EResult_InvalidClientVersion",
10546                Self::KEResultMatchmakingDisabled => "k_EResult_MatchmakingDisabled",
10547                Self::KEResultMatchmakingTooBusy => "k_EResult_MatchmakingTooBusy",
10548                Self::KEResultInternalError => "k_EResult_InternalError",
10549                Self::KEResultNoRegionPings => "k_EResult_NoRegionPings",
10550                Self::KEResultInParty => "k_EResult_InParty",
10551                Self::KEResultModeLocked => "k_EResult_ModeLocked",
10552                Self::KEResultModeBanned => "k_EResult_ModeBanned",
10553                Self::KEResultRegionInfoNotProvided => "k_EResult_RegionInfoNotProvided",
10554                Self::KEResultDurationControlBlocked => {
10555                    "k_EResult_DurationControlBlocked"
10556                }
10557                Self::KEResultInvalidHeroSelection => "k_EResult_InvalidHeroSelection",
10558                Self::KEResultHeroesNotUnlocked => "k_EResult_HeroesNotUnlocked",
10559                Self::KEResultPermanentBan => "k_EResult_PermanentBan",
10560                Self::KEResultRankedMmNotOpen => "k_EResult_RankedMMNotOpen",
10561                Self::KEResultRankedNotUnlocked => "k_EResult_RankedNotUnlocked",
10562                Self::KEResultNoRankedWhileInLowPri => "k_EResult_NoRankedWhileInLowPri",
10563                Self::KEResultNoRankedWhileCommsBanned => {
10564                    "k_EResult_NoRankedWhileCommsBanned"
10565                }
10566                Self::KEResultNoRankedWhileReportBanned => {
10567                    "k_EResult_NoRankedWhileReportBanned"
10568                }
10569                Self::KEResultHeroLabsMmNotOpen => "k_EResult_HeroLabsMMNotOpen",
10570                Self::KEResultHeroLabsNotUnlocked => "k_EResult_HeroLabsNotUnlocked",
10571                Self::KEResultNoHeroLabsWhileInLowPri => {
10572                    "k_EResult_NoHeroLabsWhileInLowPri"
10573                }
10574                Self::KEResultAccountLocked => "k_EResult_AccountLocked",
10575                Self::KEResultTooManyLimitedHeroes => "k_EResult_TooManyLimitedHeroes",
10576            }
10577        }
10578        /// Creates an enum from field names used in the ProtoBuf definition.
10579        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10580            match value {
10581                "k_EResult_OK" => Some(Self::KEResultOk),
10582                "k_EResult_AlreadyFindingMatch" => {
10583                    Some(Self::KEResultAlreadyFindingMatch)
10584                }
10585                "k_EResult_PartyMemberInLobby" => Some(Self::KEResultPartyMemberInLobby),
10586                "k_EResult_InvalidClientVersion" => {
10587                    Some(Self::KEResultInvalidClientVersion)
10588                }
10589                "k_EResult_MatchmakingDisabled" => {
10590                    Some(Self::KEResultMatchmakingDisabled)
10591                }
10592                "k_EResult_MatchmakingTooBusy" => Some(Self::KEResultMatchmakingTooBusy),
10593                "k_EResult_InternalError" => Some(Self::KEResultInternalError),
10594                "k_EResult_NoRegionPings" => Some(Self::KEResultNoRegionPings),
10595                "k_EResult_InParty" => Some(Self::KEResultInParty),
10596                "k_EResult_ModeLocked" => Some(Self::KEResultModeLocked),
10597                "k_EResult_ModeBanned" => Some(Self::KEResultModeBanned),
10598                "k_EResult_RegionInfoNotProvided" => {
10599                    Some(Self::KEResultRegionInfoNotProvided)
10600                }
10601                "k_EResult_DurationControlBlocked" => {
10602                    Some(Self::KEResultDurationControlBlocked)
10603                }
10604                "k_EResult_InvalidHeroSelection" => {
10605                    Some(Self::KEResultInvalidHeroSelection)
10606                }
10607                "k_EResult_HeroesNotUnlocked" => Some(Self::KEResultHeroesNotUnlocked),
10608                "k_EResult_PermanentBan" => Some(Self::KEResultPermanentBan),
10609                "k_EResult_RankedMMNotOpen" => Some(Self::KEResultRankedMmNotOpen),
10610                "k_EResult_RankedNotUnlocked" => Some(Self::KEResultRankedNotUnlocked),
10611                "k_EResult_NoRankedWhileInLowPri" => {
10612                    Some(Self::KEResultNoRankedWhileInLowPri)
10613                }
10614                "k_EResult_NoRankedWhileCommsBanned" => {
10615                    Some(Self::KEResultNoRankedWhileCommsBanned)
10616                }
10617                "k_EResult_NoRankedWhileReportBanned" => {
10618                    Some(Self::KEResultNoRankedWhileReportBanned)
10619                }
10620                "k_EResult_HeroLabsMMNotOpen" => Some(Self::KEResultHeroLabsMmNotOpen),
10621                "k_EResult_HeroLabsNotUnlocked" => {
10622                    Some(Self::KEResultHeroLabsNotUnlocked)
10623                }
10624                "k_EResult_NoHeroLabsWhileInLowPri" => {
10625                    Some(Self::KEResultNoHeroLabsWhileInLowPri)
10626                }
10627                "k_EResult_AccountLocked" => Some(Self::KEResultAccountLocked),
10628                "k_EResult_TooManyLimitedHeroes" => {
10629                    Some(Self::KEResultTooManyLimitedHeroes)
10630                }
10631                _ => None,
10632            }
10633        }
10634    }
10635}
10636#[derive(serde::Serialize, serde::Deserialize)]
10637#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10638pub struct CMsgClientToGcStopMatchmaking {}
10639#[derive(serde::Serialize, serde::Deserialize)]
10640#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10641pub struct CMsgClientToGcStopMatchmakingResponse {
10642    #[prost(bool, optional, tag = "1")]
10643    pub success: ::core::option::Option<bool>,
10644}
10645#[derive(serde::Serialize, serde::Deserialize)]
10646#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10647pub struct CMsgGcToClientMatchmakingStopped {
10648    #[prost(
10649        enumeration = "c_msg_gc_to_client_matchmaking_stopped::EReason",
10650        optional,
10651        tag = "1",
10652        default = "KEResultUnspecified"
10653    )]
10654    pub reason: ::core::option::Option<i32>,
10655}
10656/// Nested message and enum types in `CMsgGCToClientMatchmakingStopped`.
10657pub mod c_msg_gc_to_client_matchmaking_stopped {
10658    #[derive(serde::Serialize, serde::Deserialize)]
10659    #[derive(
10660        Clone,
10661        Copy,
10662        Debug,
10663        PartialEq,
10664        Eq,
10665        Hash,
10666        PartialOrd,
10667        Ord,
10668        ::prost::Enumeration
10669    )]
10670    #[repr(i32)]
10671    pub enum EReason {
10672        KEResultUnspecified = 0,
10673        KEResultVersionUpdated = 1,
10674        KEResultRankedClosed = 2,
10675        KEResultHeroLabsClosed = 3,
10676    }
10677    impl EReason {
10678        /// String value of the enum field names used in the ProtoBuf definition.
10679        ///
10680        /// The values are not transformed in any way and thus are considered stable
10681        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
10682        pub fn as_str_name(&self) -> &'static str {
10683            match self {
10684                Self::KEResultUnspecified => "k_EResult_Unspecified",
10685                Self::KEResultVersionUpdated => "k_EResult_VersionUpdated",
10686                Self::KEResultRankedClosed => "k_EResult_RankedClosed",
10687                Self::KEResultHeroLabsClosed => "k_EResult_HeroLabsClosed",
10688            }
10689        }
10690        /// Creates an enum from field names used in the ProtoBuf definition.
10691        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
10692            match value {
10693                "k_EResult_Unspecified" => Some(Self::KEResultUnspecified),
10694                "k_EResult_VersionUpdated" => Some(Self::KEResultVersionUpdated),
10695                "k_EResult_RankedClosed" => Some(Self::KEResultRankedClosed),
10696                "k_EResult_HeroLabsClosed" => Some(Self::KEResultHeroLabsClosed),
10697                _ => None,
10698            }
10699        }
10700    }
10701}
10702#[derive(serde::Serialize, serde::Deserialize)]
10703#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10704pub struct CMsgClientToGcLeaveLobby {
10705    #[prost(uint64, optional, tag = "1")]
10706    pub lobby_id: ::core::option::Option<u64>,
10707}
10708#[derive(serde::Serialize, serde::Deserialize)]
10709#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10710pub struct CMsgClientToGcLeaveLobbyResponse {}
10711#[derive(serde::Serialize, serde::Deserialize)]
10712#[derive(Clone, PartialEq, ::prost::Message)]
10713pub struct CMsgClientWelcomeCitadel {
10714    #[prost(uint32, optional, tag = "1")]
10715    pub currency: ::core::option::Option<u32>,
10716    #[prost(message, repeated, tag = "2")]
10717    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
10718    #[prost(uint32, optional, tag = "3")]
10719    pub compatibility_version: ::core::option::Option<u32>,
10720    #[prost(
10721        enumeration = "ECitadelRegionMode",
10722        optional,
10723        tag = "4",
10724        default = "KECitadelRegionModeRow"
10725    )]
10726    pub region_mode: ::core::option::Option<i32>,
10727}
10728#[derive(serde::Serialize, serde::Deserialize)]
10729#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10730pub struct CMsgClientToGcIsInMatchmaking {}
10731#[derive(serde::Serialize, serde::Deserialize)]
10732#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10733pub struct CMsgClientToGcIsInMatchmakingResponse {
10734    #[prost(bool, optional, tag = "1")]
10735    pub in_matchmaking: ::core::option::Option<bool>,
10736}
10737#[derive(serde::Serialize, serde::Deserialize)]
10738#[derive(Clone, PartialEq, ::prost::Message)]
10739pub struct CMsgDevMatchInfo {
10740    #[prost(uint32, optional, tag = "1")]
10741    pub start_time: ::core::option::Option<u32>,
10742    #[prost(
10743        enumeration = "ECitadelLobbyTeam",
10744        optional,
10745        tag = "2",
10746        default = "KECitadelLobbyTeamTeam0"
10747    )]
10748    pub winning_team: ::core::option::Option<i32>,
10749    #[prost(uint64, optional, tag = "3")]
10750    pub match_id: ::core::option::Option<u64>,
10751    #[prost(message, repeated, tag = "4")]
10752    pub players: ::prost::alloc::vec::Vec<c_msg_dev_match_info::MatchPlayer>,
10753    #[prost(fixed64, optional, tag = "5")]
10754    pub lobby_id: ::core::option::Option<u64>,
10755    #[prost(uint32, optional, tag = "6")]
10756    pub game_mode_version: ::core::option::Option<u32>,
10757    #[prost(uint32, optional, tag = "9")]
10758    pub net_worth_team_0: ::core::option::Option<u32>,
10759    #[prost(uint32, optional, tag = "10")]
10760    pub net_worth_team_1: ::core::option::Option<u32>,
10761    #[prost(uint32, optional, tag = "11")]
10762    pub duration_s: ::core::option::Option<u32>,
10763    #[prost(uint32, optional, tag = "12")]
10764    pub spectators: ::core::option::Option<u32>,
10765    #[prost(uint32, optional, tag = "13")]
10766    pub open_spectator_slots: ::core::option::Option<u32>,
10767    #[prost(uint64, optional, tag = "14")]
10768    pub objectives_mask_team0: ::core::option::Option<u64>,
10769    #[prost(uint64, optional, tag = "15")]
10770    pub objectives_mask_team1: ::core::option::Option<u64>,
10771    #[prost(
10772        enumeration = "ECitadelMatchMode",
10773        optional,
10774        tag = "16",
10775        default = "KECitadelMatchModeInvalid"
10776    )]
10777    pub match_mode: ::core::option::Option<i32>,
10778    #[prost(
10779        enumeration = "ECitadelGameMode",
10780        optional,
10781        tag = "17",
10782        default = "KECitadelGameModeInvalid"
10783    )]
10784    pub game_mode: ::core::option::Option<i32>,
10785    #[prost(uint32, optional, tag = "18")]
10786    pub match_score: ::core::option::Option<u32>,
10787    #[prost(
10788        enumeration = "ECitadelRegionMode",
10789        optional,
10790        tag = "19",
10791        default = "KECitadelRegionModeRow"
10792    )]
10793    pub region_mode: ::core::option::Option<i32>,
10794    #[prost(uint32, optional, tag = "20")]
10795    pub compat_version: ::core::option::Option<u32>,
10796    #[prost(message, repeated, tag = "22")]
10797    pub team_stats: ::prost::alloc::vec::Vec<c_msg_dev_match_info::Team>,
10798}
10799/// Nested message and enum types in `CMsgDevMatchInfo`.
10800pub mod c_msg_dev_match_info {
10801    #[derive(serde::Serialize, serde::Deserialize)]
10802    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10803    pub struct MatchPlayer {
10804        #[prost(uint32, optional, tag = "1")]
10805        pub account_id: ::core::option::Option<u32>,
10806        #[prost(
10807            enumeration = "super::ECitadelLobbyTeam",
10808            optional,
10809            tag = "2",
10810            default = "KECitadelLobbyTeamTeam0"
10811        )]
10812        pub team: ::core::option::Option<i32>,
10813        #[prost(bool, optional, tag = "3")]
10814        pub abandoned: ::core::option::Option<bool>,
10815        #[prost(uint32, optional, tag = "4")]
10816        pub hero_id: ::core::option::Option<u32>,
10817    }
10818    #[derive(serde::Serialize, serde::Deserialize)]
10819    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10820    pub struct Team {
10821        #[prost(
10822            enumeration = "super::ECitadelLobbyTeam",
10823            optional,
10824            tag = "1",
10825            default = "KECitadelLobbyTeamTeam0"
10826        )]
10827        pub team: ::core::option::Option<i32>,
10828        #[prost(uint32, optional, tag = "2")]
10829        pub net_worth: ::core::option::Option<u32>,
10830        #[prost(uint64, optional, tag = "3")]
10831        pub objectives_mask: ::core::option::Option<u64>,
10832        #[prost(uint32, optional, tag = "4")]
10833        pub brawl_score: ::core::option::Option<u32>,
10834    }
10835}
10836#[derive(serde::Serialize, serde::Deserialize)]
10837#[derive(Clone, PartialEq, ::prost::Message)]
10838pub struct CMsgGcToClientDevPlaytestStatus {
10839    #[prost(message, repeated, tag = "1")]
10840    pub dev_queue_size: ::prost::alloc::vec::Vec<
10841        c_msg_gc_to_client_dev_playtest_status::DevQueueSize,
10842    >,
10843    #[prost(uint32, optional, tag = "2")]
10844    pub dev_available_servers: ::core::option::Option<u32>,
10845    #[prost(uint32, optional, tag = "3")]
10846    pub coop_bot_max_wait_s: ::core::option::Option<u32>,
10847    #[prost(bool, optional, tag = "4")]
10848    pub is_mm_enabled: ::core::option::Option<bool>,
10849    #[prost(bool, optional, tag = "8")]
10850    pub locked_heroes: ::core::option::Option<bool>,
10851    #[prost(bool, optional, tag = "9")]
10852    pub party_shared_heroes: ::core::option::Option<bool>,
10853    #[prost(message, repeated, tag = "10")]
10854    pub hero_whitelists: ::prost::alloc::vec::Vec<
10855        c_msg_gc_to_client_dev_playtest_status::HeroWhitelist,
10856    >,
10857    #[prost(uint32, optional, tag = "14")]
10858    pub mm_pause_time: ::core::option::Option<u32>,
10859    #[prost(uint32, repeated, packed = "false", tag = "15")]
10860    pub valid_client_versions: ::prost::alloc::vec::Vec<u32>,
10861    #[prost(uint32, optional, tag = "21")]
10862    pub active_match_count: ::core::option::Option<u32>,
10863    #[prost(uint32, optional, tag = "22")]
10864    pub roster_non_limited_heroes: ::core::option::Option<u32>,
10865    #[prost(uint32, optional, tag = "23")]
10866    pub matches_per_priority_token: ::core::option::Option<u32>,
10867}
10868/// Nested message and enum types in `CMsgGCToClientDevPlaytestStatus`.
10869pub mod c_msg_gc_to_client_dev_playtest_status {
10870    #[derive(serde::Serialize, serde::Deserialize)]
10871    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10872    pub struct HeroWhitelist {
10873        #[prost(uint32, optional, tag = "1")]
10874        pub hero_id: ::core::option::Option<u32>,
10875        #[prost(uint32, repeated, packed = "false", tag = "2")]
10876        pub account_ids: ::prost::alloc::vec::Vec<u32>,
10877    }
10878    #[derive(serde::Serialize, serde::Deserialize)]
10879    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10880    pub struct DevQueueSize {
10881        #[prost(
10882            enumeration = "super::ECitadelMatchMode",
10883            optional,
10884            tag = "1",
10885            default = "KECitadelMatchModeInvalid"
10886        )]
10887        pub match_mode: ::core::option::Option<i32>,
10888        #[prost(uint32, optional, tag = "2")]
10889        pub queue_size: ::core::option::Option<u32>,
10890        #[prost(
10891            enumeration = "super::ECitadelGameMode",
10892            optional,
10893            tag = "3",
10894            default = "KECitadelGameModeInvalid"
10895        )]
10896        pub game_mode: ::core::option::Option<i32>,
10897    }
10898}
10899#[derive(serde::Serialize, serde::Deserialize)]
10900#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10901pub struct CMsgGcToClientSdrTicket {
10902    #[prost(bytes = "vec", optional, tag = "1")]
10903    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10904}
10905#[derive(serde::Serialize, serde::Deserialize)]
10906#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10907pub struct CMsgClientToGcReplacementSdrTicket {
10908    #[prost(fixed64, optional, tag = "1")]
10909    pub lobby_id: ::core::option::Option<u64>,
10910}
10911#[derive(serde::Serialize, serde::Deserialize)]
10912#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10913pub struct CMsgClientToGcReplacementSdrTicketResponse {
10914    #[prost(bytes = "vec", optional, tag = "1")]
10915    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10916    #[prost(string, optional, tag = "2")]
10917    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
10918}
10919#[derive(serde::Serialize, serde::Deserialize)]
10920#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
10921pub struct CMsgClientToGcGetHideoutSdrTicket {
10922    #[prost(fixed64, optional, tag = "1")]
10923    pub lobby_id: ::core::option::Option<u64>,
10924}
10925#[derive(serde::Serialize, serde::Deserialize)]
10926#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10927pub struct CMsgClientToGcGetHideoutSdrTicketResponse {
10928    #[prost(bytes = "vec", optional, tag = "1")]
10929    pub ticket: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
10930    #[prost(string, optional, tag = "2")]
10931    pub error_message: ::core::option::Option<::prost::alloc::string::String>,
10932}
10933#[derive(serde::Serialize, serde::Deserialize)]
10934#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10935pub struct CMsgClientToGcSetServerConVar {
10936    #[prost(string, optional, tag = "1")]
10937    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
10938    #[prost(string, optional, tag = "2")]
10939    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
10940    #[prost(fixed64, optional, tag = "3")]
10941    pub lobby_id: ::core::option::Option<u64>,
10942}
10943#[derive(serde::Serialize, serde::Deserialize)]
10944#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10945pub struct CMsgClientToGcSetServerConVarResponse {
10946    #[prost(string, optional, tag = "1")]
10947    pub message: ::core::option::Option<::prost::alloc::string::String>,
10948}
10949#[derive(serde::Serialize, serde::Deserialize)]
10950#[derive(Clone, PartialEq, ::prost::Message)]
10951pub struct CMsgClientToGcPostMatchSurveyResponse {
10952    #[prost(message, repeated, tag = "1")]
10953    pub post_match_survey: ::prost::alloc::vec::Vec<
10954        c_msg_client_to_gc_post_match_survey_response::PostMatchSurvey,
10955    >,
10956    #[prost(uint64, optional, tag = "2")]
10957    pub match_id: ::core::option::Option<u64>,
10958}
10959/// Nested message and enum types in `CMsgClientToGCPostMatchSurveyResponse`.
10960pub mod c_msg_client_to_gc_post_match_survey_response {
10961    #[derive(serde::Serialize, serde::Deserialize)]
10962    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10963    pub struct PostMatchSurvey {
10964        #[prost(uint32, optional, tag = "1")]
10965        pub question_id: ::core::option::Option<u32>,
10966        #[prost(uint32, optional, tag = "2")]
10967        pub response_value: ::core::option::Option<u32>,
10968        #[prost(string, optional, tag = "3")]
10969        pub response_freeform: ::core::option::Option<::prost::alloc::string::String>,
10970    }
10971}
10972#[derive(serde::Serialize, serde::Deserialize)]
10973#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
10974pub struct CMsgPartyMmInfo {
10975    #[prost(
10976        enumeration = "EgcPlatform",
10977        optional,
10978        tag = "1",
10979        default = "KEGcPlatformNone"
10980    )]
10981    pub platform: ::core::option::Option<i32>,
10982    #[prost(message, optional, tag = "2")]
10983    pub ping_times: ::core::option::Option<CMsgRegionPingTimesClient>,
10984    #[prost(uint32, optional, tag = "3")]
10985    pub client_version: ::core::option::Option<u32>,
10986    #[prost(
10987        enumeration = "ECitadelRegionMode",
10988        optional,
10989        tag = "4",
10990        default = "KECitadelRegionModeRow"
10991    )]
10992    pub region_mode: ::core::option::Option<i32>,
10993}
10994#[derive(serde::Serialize, serde::Deserialize)]
10995#[derive(Clone, PartialEq, ::prost::Message)]
10996pub struct CMsgClientToGcPartyCreate {
10997    #[prost(message, optional, tag = "1")]
10998    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
10999    #[prost(uint32, optional, tag = "3")]
11000    pub invite_account_id: ::core::option::Option<u32>,
11001    #[prost(bool, optional, tag = "4")]
11002    pub disable_party_code: ::core::option::Option<bool>,
11003    #[prost(bool, optional, tag = "5")]
11004    pub is_private_lobby: ::core::option::Option<bool>,
11005    #[prost(
11006        enumeration = "ECitadelRegionMode",
11007        optional,
11008        tag = "6",
11009        default = "KECitadelRegionModeRow"
11010    )]
11011    pub region_mode: ::core::option::Option<i32>,
11012    #[prost(string, optional, tag = "7")]
11013    pub server_search_key: ::core::option::Option<::prost::alloc::string::String>,
11014    #[prost(
11015        enumeration = "ECitadelMmPreference",
11016        optional,
11017        tag = "8",
11018        default = "KECitadelMmPreferenceInvalid"
11019    )]
11020    pub mm_preference: ::core::option::Option<i32>,
11021    #[prost(message, optional, tag = "9")]
11022    pub private_lobby_settings: ::core::option::Option<
11023        cso_citadel_party::PrivateLobbySettings,
11024    >,
11025    #[prost(
11026        enumeration = "ECitadelBotDifficulty",
11027        optional,
11028        tag = "10",
11029        default = "KECitadelBotDifficultyNone"
11030    )]
11031    pub bot_difficulty: ::core::option::Option<i32>,
11032    #[prost(string, optional, tag = "11")]
11033    pub hideout_search_key: ::core::option::Option<::prost::alloc::string::String>,
11034    #[prost(bool, optional, tag = "12")]
11035    pub dev_force_hideout: ::core::option::Option<bool>,
11036    #[prost(
11037        enumeration = "ECitadelGameMode",
11038        optional,
11039        tag = "13",
11040        default = "KECitadelGameModeInvalid"
11041    )]
11042    pub game_mode: ::core::option::Option<i32>,
11043}
11044#[derive(serde::Serialize, serde::Deserialize)]
11045#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11046pub struct CMsgClientToGcPartyCreateResponse {
11047    #[prost(
11048        enumeration = "c_msg_client_to_gc_party_create_response::EResponse",
11049        optional,
11050        tag = "1",
11051        default = "KEInternalError"
11052    )]
11053    pub result: ::core::option::Option<i32>,
11054    #[prost(fixed64, optional, tag = "2")]
11055    pub party_id: ::core::option::Option<u64>,
11056}
11057/// Nested message and enum types in `CMsgClientToGCPartyCreateResponse`.
11058pub mod c_msg_client_to_gc_party_create_response {
11059    #[derive(serde::Serialize, serde::Deserialize)]
11060    #[derive(
11061        Clone,
11062        Copy,
11063        Debug,
11064        PartialEq,
11065        Eq,
11066        Hash,
11067        PartialOrd,
11068        Ord,
11069        ::prost::Enumeration
11070    )]
11071    #[repr(i32)]
11072    pub enum EResponse {
11073        KEInternalError = 0,
11074        KESuccess = 1,
11075        KEAlreadyInParty = 2,
11076        KEDisabled = 3,
11077        KEInvalidVersion = 4,
11078        KENoRegionPings = 5,
11079        KETooBusy = 6,
11080        KERateLimited = 7,
11081        KENotFriends = 8,
11082        KERegionInfoNotProvided = 9,
11083        KEDurationControlBlocked = 10,
11084        KEInMatchmaking = 11,
11085        KEPlayerDoesntHaveGame = 12,
11086    }
11087    impl EResponse {
11088        /// String value of the enum field names used in the ProtoBuf definition.
11089        ///
11090        /// The values are not transformed in any way and thus are considered stable
11091        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11092        pub fn as_str_name(&self) -> &'static str {
11093            match self {
11094                Self::KEInternalError => "k_eInternalError",
11095                Self::KESuccess => "k_eSuccess",
11096                Self::KEAlreadyInParty => "k_eAlreadyInParty",
11097                Self::KEDisabled => "k_eDisabled",
11098                Self::KEInvalidVersion => "k_eInvalidVersion",
11099                Self::KENoRegionPings => "k_eNoRegionPings",
11100                Self::KETooBusy => "k_eTooBusy",
11101                Self::KERateLimited => "k_eRateLimited",
11102                Self::KENotFriends => "k_eNotFriends",
11103                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
11104                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
11105                Self::KEInMatchmaking => "k_eInMatchmaking",
11106                Self::KEPlayerDoesntHaveGame => "k_ePlayerDoesntHaveGame",
11107            }
11108        }
11109        /// Creates an enum from field names used in the ProtoBuf definition.
11110        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11111            match value {
11112                "k_eInternalError" => Some(Self::KEInternalError),
11113                "k_eSuccess" => Some(Self::KESuccess),
11114                "k_eAlreadyInParty" => Some(Self::KEAlreadyInParty),
11115                "k_eDisabled" => Some(Self::KEDisabled),
11116                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11117                "k_eNoRegionPings" => Some(Self::KENoRegionPings),
11118                "k_eTooBusy" => Some(Self::KETooBusy),
11119                "k_eRateLimited" => Some(Self::KERateLimited),
11120                "k_eNotFriends" => Some(Self::KENotFriends),
11121                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
11122                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
11123                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11124                "k_ePlayerDoesntHaveGame" => Some(Self::KEPlayerDoesntHaveGame),
11125                _ => None,
11126            }
11127        }
11128    }
11129}
11130#[derive(serde::Serialize, serde::Deserialize)]
11131#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11132pub struct CMsgClientToGcPartyLeave {
11133    #[prost(fixed64, optional, tag = "1")]
11134    pub party_id: ::core::option::Option<u64>,
11135}
11136#[derive(serde::Serialize, serde::Deserialize)]
11137#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11138pub struct CMsgClientToGcPartyLeaveResponse {
11139    #[prost(
11140        enumeration = "c_msg_client_to_gc_party_leave_response::EResponse",
11141        optional,
11142        tag = "1",
11143        default = "KEInternalError"
11144    )]
11145    pub result: ::core::option::Option<i32>,
11146}
11147/// Nested message and enum types in `CMsgClientToGCPartyLeaveResponse`.
11148pub mod c_msg_client_to_gc_party_leave_response {
11149    #[derive(serde::Serialize, serde::Deserialize)]
11150    #[derive(
11151        Clone,
11152        Copy,
11153        Debug,
11154        PartialEq,
11155        Eq,
11156        Hash,
11157        PartialOrd,
11158        Ord,
11159        ::prost::Enumeration
11160    )]
11161    #[repr(i32)]
11162    pub enum EResponse {
11163        KEInternalError = 0,
11164        KESuccess = 1,
11165        KENotInParty = 2,
11166        KEInMatchMaking = 3,
11167    }
11168    impl EResponse {
11169        /// String value of the enum field names used in the ProtoBuf definition.
11170        ///
11171        /// The values are not transformed in any way and thus are considered stable
11172        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11173        pub fn as_str_name(&self) -> &'static str {
11174            match self {
11175                Self::KEInternalError => "k_eInternalError",
11176                Self::KESuccess => "k_eSuccess",
11177                Self::KENotInParty => "k_eNotInParty",
11178                Self::KEInMatchMaking => "k_eInMatchMaking",
11179            }
11180        }
11181        /// Creates an enum from field names used in the ProtoBuf definition.
11182        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11183            match value {
11184                "k_eInternalError" => Some(Self::KEInternalError),
11185                "k_eSuccess" => Some(Self::KESuccess),
11186                "k_eNotInParty" => Some(Self::KENotInParty),
11187                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11188                _ => None,
11189            }
11190        }
11191    }
11192}
11193#[derive(serde::Serialize, serde::Deserialize)]
11194#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11195pub struct CMsgClientToGcPartyJoin {
11196    #[prost(fixed64, optional, tag = "1")]
11197    pub party_id: ::core::option::Option<u64>,
11198    #[prost(bool, optional, tag = "2")]
11199    pub is_rejoin: ::core::option::Option<bool>,
11200    #[prost(message, optional, tag = "3")]
11201    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
11202}
11203#[derive(serde::Serialize, serde::Deserialize)]
11204#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11205pub struct CMsgClientToGcPartyJoinResponse {
11206    #[prost(
11207        enumeration = "c_msg_client_to_gc_party_join_response::EResponse",
11208        optional,
11209        tag = "1",
11210        default = "KEInternalError"
11211    )]
11212    pub result: ::core::option::Option<i32>,
11213}
11214/// Nested message and enum types in `CMsgClientToGCPartyJoinResponse`.
11215pub mod c_msg_client_to_gc_party_join_response {
11216    #[derive(serde::Serialize, serde::Deserialize)]
11217    #[derive(
11218        Clone,
11219        Copy,
11220        Debug,
11221        PartialEq,
11222        Eq,
11223        Hash,
11224        PartialOrd,
11225        Ord,
11226        ::prost::Enumeration
11227    )]
11228    #[repr(i32)]
11229    pub enum EResponse {
11230        KEInternalError = 0,
11231        KESuccess = 1,
11232        KEAlreadyInParty = 2,
11233        KEDisabled = 3,
11234        KEInvalidPartyId = 4,
11235        KEInvalidPermissions = 5,
11236        KEInvalidVersion = 6,
11237        KENoRegionPings = 7,
11238        KETooBusy = 8,
11239        KEInvalidCode = 9,
11240        KERateLimited = 10,
11241        KERegionInfoNotProvided = 11,
11242        KEDurationControlBlocked = 12,
11243        KEPartyInMatchMaking = 13,
11244        KEInMatchmaking = 14,
11245        KEPartyFull = 15,
11246    }
11247    impl EResponse {
11248        /// String value of the enum field names used in the ProtoBuf definition.
11249        ///
11250        /// The values are not transformed in any way and thus are considered stable
11251        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11252        pub fn as_str_name(&self) -> &'static str {
11253            match self {
11254                Self::KEInternalError => "k_eInternalError",
11255                Self::KESuccess => "k_eSuccess",
11256                Self::KEAlreadyInParty => "k_eAlreadyInParty",
11257                Self::KEDisabled => "k_eDisabled",
11258                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11259                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11260                Self::KEInvalidVersion => "k_eInvalidVersion",
11261                Self::KENoRegionPings => "k_eNoRegionPings",
11262                Self::KETooBusy => "k_eTooBusy",
11263                Self::KEInvalidCode => "k_eInvalidCode",
11264                Self::KERateLimited => "k_eRateLimited",
11265                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
11266                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
11267                Self::KEPartyInMatchMaking => "k_ePartyInMatchMaking",
11268                Self::KEInMatchmaking => "k_eInMatchmaking",
11269                Self::KEPartyFull => "k_ePartyFull",
11270            }
11271        }
11272        /// Creates an enum from field names used in the ProtoBuf definition.
11273        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11274            match value {
11275                "k_eInternalError" => Some(Self::KEInternalError),
11276                "k_eSuccess" => Some(Self::KESuccess),
11277                "k_eAlreadyInParty" => Some(Self::KEAlreadyInParty),
11278                "k_eDisabled" => Some(Self::KEDisabled),
11279                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11280                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11281                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11282                "k_eNoRegionPings" => Some(Self::KENoRegionPings),
11283                "k_eTooBusy" => Some(Self::KETooBusy),
11284                "k_eInvalidCode" => Some(Self::KEInvalidCode),
11285                "k_eRateLimited" => Some(Self::KERateLimited),
11286                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
11287                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
11288                "k_ePartyInMatchMaking" => Some(Self::KEPartyInMatchMaking),
11289                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11290                "k_ePartyFull" => Some(Self::KEPartyFull),
11291                _ => None,
11292            }
11293        }
11294    }
11295}
11296#[derive(serde::Serialize, serde::Deserialize)]
11297#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11298pub struct CMsgClientToGcPartyAction {
11299    #[prost(fixed64, optional, tag = "1")]
11300    pub party_id: ::core::option::Option<u64>,
11301    #[prost(uint32, optional, tag = "2")]
11302    pub target_account_id: ::core::option::Option<u32>,
11303    #[prost(
11304        enumeration = "c_msg_client_to_gc_party_action::EAction",
11305        optional,
11306        tag = "3",
11307        default = "KEKickUser"
11308    )]
11309    pub action_id: ::core::option::Option<i32>,
11310    #[prost(uint64, optional, tag = "4")]
11311    pub uint_value: ::core::option::Option<u64>,
11312    #[prost(bool, optional, tag = "5")]
11313    pub bool_value: ::core::option::Option<bool>,
11314    #[prost(string, optional, tag = "6")]
11315    pub str_value: ::core::option::Option<::prost::alloc::string::String>,
11316}
11317/// Nested message and enum types in `CMsgClientToGCPartyAction`.
11318pub mod c_msg_client_to_gc_party_action {
11319    #[derive(serde::Serialize, serde::Deserialize)]
11320    #[derive(
11321        Clone,
11322        Copy,
11323        Debug,
11324        PartialEq,
11325        Eq,
11326        Hash,
11327        PartialOrd,
11328        Ord,
11329        ::prost::Enumeration
11330    )]
11331    #[repr(i32)]
11332    pub enum EAction {
11333        KEKickUser = 1,
11334        KECancelInvite = 2,
11335        KECancelFindMatch = 3,
11336        KESetPlayerType = 5,
11337        KEEnablePartyCode = 7,
11338        KESetMemberTeam = 8,
11339        KESetChatMode = 9,
11340        KESetPlayerSlot = 10,
11341        KESetSearchKey = 12,
11342        KESetBotDifficulty = 13,
11343        KESetRandomizedLanes = 14,
11344        KESetServerRegion = 15,
11345        KESetPubliclyVisible = 16,
11346        KESetCheatsEnabled = 17,
11347        KESwapTeams = 18,
11348        KEShuffleLobby = 19,
11349        KEShuffleLanes = 20,
11350        KESetDuplicateHeroesEnabled = 21,
11351        KESetDesiresLaningTogether = 23,
11352        KESetMmPreference = 24,
11353        KESetPrivateLobbyGameMode = 25,
11354    }
11355    impl EAction {
11356        /// String value of the enum field names used in the ProtoBuf definition.
11357        ///
11358        /// The values are not transformed in any way and thus are considered stable
11359        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11360        pub fn as_str_name(&self) -> &'static str {
11361            match self {
11362                Self::KEKickUser => "k_eKickUser",
11363                Self::KECancelInvite => "k_eCancelInvite",
11364                Self::KECancelFindMatch => "k_eCancelFindMatch",
11365                Self::KESetPlayerType => "k_eSetPlayerType",
11366                Self::KEEnablePartyCode => "k_eEnablePartyCode",
11367                Self::KESetMemberTeam => "k_eSetMemberTeam",
11368                Self::KESetChatMode => "k_eSetChatMode",
11369                Self::KESetPlayerSlot => "k_eSetPlayerSlot",
11370                Self::KESetSearchKey => "k_eSetSearchKey",
11371                Self::KESetBotDifficulty => "k_eSetBotDifficulty",
11372                Self::KESetRandomizedLanes => "k_eSetRandomizedLanes",
11373                Self::KESetServerRegion => "k_eSetServerRegion",
11374                Self::KESetPubliclyVisible => "k_eSetPubliclyVisible",
11375                Self::KESetCheatsEnabled => "k_eSetCheatsEnabled",
11376                Self::KESwapTeams => "k_eSwapTeams",
11377                Self::KEShuffleLobby => "k_eShuffleLobby",
11378                Self::KEShuffleLanes => "k_eShuffleLanes",
11379                Self::KESetDuplicateHeroesEnabled => "k_eSetDuplicateHeroesEnabled",
11380                Self::KESetDesiresLaningTogether => "k_eSetDesiresLaningTogether",
11381                Self::KESetMmPreference => "k_eSetMMPreference",
11382                Self::KESetPrivateLobbyGameMode => "k_eSetPrivateLobbyGameMode",
11383            }
11384        }
11385        /// Creates an enum from field names used in the ProtoBuf definition.
11386        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11387            match value {
11388                "k_eKickUser" => Some(Self::KEKickUser),
11389                "k_eCancelInvite" => Some(Self::KECancelInvite),
11390                "k_eCancelFindMatch" => Some(Self::KECancelFindMatch),
11391                "k_eSetPlayerType" => Some(Self::KESetPlayerType),
11392                "k_eEnablePartyCode" => Some(Self::KEEnablePartyCode),
11393                "k_eSetMemberTeam" => Some(Self::KESetMemberTeam),
11394                "k_eSetChatMode" => Some(Self::KESetChatMode),
11395                "k_eSetPlayerSlot" => Some(Self::KESetPlayerSlot),
11396                "k_eSetSearchKey" => Some(Self::KESetSearchKey),
11397                "k_eSetBotDifficulty" => Some(Self::KESetBotDifficulty),
11398                "k_eSetRandomizedLanes" => Some(Self::KESetRandomizedLanes),
11399                "k_eSetServerRegion" => Some(Self::KESetServerRegion),
11400                "k_eSetPubliclyVisible" => Some(Self::KESetPubliclyVisible),
11401                "k_eSetCheatsEnabled" => Some(Self::KESetCheatsEnabled),
11402                "k_eSwapTeams" => Some(Self::KESwapTeams),
11403                "k_eShuffleLobby" => Some(Self::KEShuffleLobby),
11404                "k_eShuffleLanes" => Some(Self::KEShuffleLanes),
11405                "k_eSetDuplicateHeroesEnabled" => Some(Self::KESetDuplicateHeroesEnabled),
11406                "k_eSetDesiresLaningTogether" => Some(Self::KESetDesiresLaningTogether),
11407                "k_eSetMMPreference" => Some(Self::KESetMmPreference),
11408                "k_eSetPrivateLobbyGameMode" => Some(Self::KESetPrivateLobbyGameMode),
11409                _ => None,
11410            }
11411        }
11412    }
11413}
11414#[derive(serde::Serialize, serde::Deserialize)]
11415#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11416pub struct CMsgClientToGcPartyActionResponse {
11417    #[prost(
11418        enumeration = "c_msg_client_to_gc_party_action_response::EResponse",
11419        optional,
11420        tag = "1",
11421        default = "KEInternalError"
11422    )]
11423    pub result: ::core::option::Option<i32>,
11424}
11425/// Nested message and enum types in `CMsgClientToGCPartyActionResponse`.
11426pub mod c_msg_client_to_gc_party_action_response {
11427    #[derive(serde::Serialize, serde::Deserialize)]
11428    #[derive(
11429        Clone,
11430        Copy,
11431        Debug,
11432        PartialEq,
11433        Eq,
11434        Hash,
11435        PartialOrd,
11436        Ord,
11437        ::prost::Enumeration
11438    )]
11439    #[repr(i32)]
11440    pub enum EResponse {
11441        KEInternalError = 0,
11442        KESuccess = 1,
11443        KEInvalidPartyId = 2,
11444        KEInvalidPermissions = 3,
11445        KEInvalidTarget = 4,
11446        KEInvalidValue = 5,
11447        KEInMatchMaking = 6,
11448        KEInMatch = 7,
11449        KEDisabled = 8,
11450        KETooBusy = 9,
11451        KERateLimited = 10,
11452        KECannotChangeWhileReady = 12,
11453        KESlotTaken = 13,
11454    }
11455    impl EResponse {
11456        /// String value of the enum field names used in the ProtoBuf definition.
11457        ///
11458        /// The values are not transformed in any way and thus are considered stable
11459        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11460        pub fn as_str_name(&self) -> &'static str {
11461            match self {
11462                Self::KEInternalError => "k_eInternalError",
11463                Self::KESuccess => "k_eSuccess",
11464                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11465                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11466                Self::KEInvalidTarget => "k_eInvalidTarget",
11467                Self::KEInvalidValue => "k_eInvalidValue",
11468                Self::KEInMatchMaking => "k_eInMatchMaking",
11469                Self::KEInMatch => "k_eInMatch",
11470                Self::KEDisabled => "k_eDisabled",
11471                Self::KETooBusy => "k_eTooBusy",
11472                Self::KERateLimited => "k_eRateLimited",
11473                Self::KECannotChangeWhileReady => "k_eCannotChangeWhileReady",
11474                Self::KESlotTaken => "k_eSlotTaken",
11475            }
11476        }
11477        /// Creates an enum from field names used in the ProtoBuf definition.
11478        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11479            match value {
11480                "k_eInternalError" => Some(Self::KEInternalError),
11481                "k_eSuccess" => Some(Self::KESuccess),
11482                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11483                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11484                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
11485                "k_eInvalidValue" => Some(Self::KEInvalidValue),
11486                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11487                "k_eInMatch" => Some(Self::KEInMatch),
11488                "k_eDisabled" => Some(Self::KEDisabled),
11489                "k_eTooBusy" => Some(Self::KETooBusy),
11490                "k_eRateLimited" => Some(Self::KERateLimited),
11491                "k_eCannotChangeWhileReady" => Some(Self::KECannotChangeWhileReady),
11492                "k_eSlotTaken" => Some(Self::KESlotTaken),
11493                _ => None,
11494            }
11495        }
11496    }
11497}
11498#[derive(serde::Serialize, serde::Deserialize)]
11499#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11500pub struct CMsgClientToGcPartySetMode {
11501    #[prost(fixed64, optional, tag = "1")]
11502    pub party_id: ::core::option::Option<u64>,
11503    #[prost(
11504        enumeration = "ECitadelMatchMode",
11505        optional,
11506        tag = "2",
11507        default = "KECitadelMatchModeInvalid"
11508    )]
11509    pub match_mode: ::core::option::Option<i32>,
11510    #[prost(
11511        enumeration = "ECitadelGameMode",
11512        optional,
11513        tag = "3",
11514        default = "KECitadelGameModeInvalid"
11515    )]
11516    pub game_mode: ::core::option::Option<i32>,
11517    #[prost(
11518        enumeration = "ECitadelBotDifficulty",
11519        optional,
11520        tag = "4",
11521        default = "KECitadelBotDifficultyNone"
11522    )]
11523    pub bot_difficulty: ::core::option::Option<i32>,
11524    #[prost(string, optional, tag = "5")]
11525    pub dev_server_command: ::core::option::Option<::prost::alloc::string::String>,
11526    #[prost(
11527        enumeration = "ECitadelRegionMode",
11528        optional,
11529        tag = "6",
11530        default = "KECitadelRegionModeRow"
11531    )]
11532    pub region_mode: ::core::option::Option<i32>,
11533}
11534#[derive(serde::Serialize, serde::Deserialize)]
11535#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11536pub struct CMsgClientToGcPartySetModeResponse {
11537    #[prost(
11538        enumeration = "c_msg_client_to_gc_party_set_mode_response::EResponse",
11539        optional,
11540        tag = "1",
11541        default = "KEInternalError"
11542    )]
11543    pub result: ::core::option::Option<i32>,
11544    #[prost(uint32, optional, tag = "2")]
11545    pub time_stamp: ::core::option::Option<u32>,
11546    #[prost(uint32, optional, tag = "3")]
11547    pub account_id: ::core::option::Option<u32>,
11548}
11549/// Nested message and enum types in `CMsgClientToGCPartySetModeResponse`.
11550pub mod c_msg_client_to_gc_party_set_mode_response {
11551    #[derive(serde::Serialize, serde::Deserialize)]
11552    #[derive(
11553        Clone,
11554        Copy,
11555        Debug,
11556        PartialEq,
11557        Eq,
11558        Hash,
11559        PartialOrd,
11560        Ord,
11561        ::prost::Enumeration
11562    )]
11563    #[repr(i32)]
11564    pub enum EResponse {
11565        KEInternalError = 0,
11566        KESuccess = 1,
11567        KEInvalidPartyId = 2,
11568        KEInvalidPermissions = 3,
11569        KEPlayerPermanentBanned = 4,
11570        KEInvalidValue = 5,
11571        KEInMatchMaking = 6,
11572        KEInMatch = 7,
11573        KEDisabled = 8,
11574        KETooBusy = 9,
11575        KERateLimited = 10,
11576        KEAlreadyDrafting = 11,
11577        KECannotChangeWhileReady = 12,
11578        KETooFewPlayers = 13,
11579        KETooManyPlayers = 14,
11580        KEPlayerBanned = 15,
11581        KETooManyHighMmr = 16,
11582        KEFiveStacksNotAllowed = 18,
11583        KERankedMmNotOpen = 19,
11584        KERankedNotunlocked = 20,
11585        KEHeroLabsMmNotOpen = 21,
11586        KEHeroLabsNotUnlocked = 22,
11587        KENoHeroLabsWhileInLowPri = 23,
11588        KENoHighRangeFiveStack = 24,
11589        KEAccountLocked = 25,
11590    }
11591    impl EResponse {
11592        /// String value of the enum field names used in the ProtoBuf definition.
11593        ///
11594        /// The values are not transformed in any way and thus are considered stable
11595        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11596        pub fn as_str_name(&self) -> &'static str {
11597            match self {
11598                Self::KEInternalError => "k_eInternalError",
11599                Self::KESuccess => "k_eSuccess",
11600                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11601                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11602                Self::KEPlayerPermanentBanned => "k_ePlayerPermanentBanned",
11603                Self::KEInvalidValue => "k_eInvalidValue",
11604                Self::KEInMatchMaking => "k_eInMatchMaking",
11605                Self::KEInMatch => "k_eInMatch",
11606                Self::KEDisabled => "k_eDisabled",
11607                Self::KETooBusy => "k_eTooBusy",
11608                Self::KERateLimited => "k_eRateLimited",
11609                Self::KEAlreadyDrafting => "k_eAlreadyDrafting",
11610                Self::KECannotChangeWhileReady => "k_eCannotChangeWhileReady",
11611                Self::KETooFewPlayers => "k_eTooFewPlayers",
11612                Self::KETooManyPlayers => "k_eTooManyPlayers",
11613                Self::KEPlayerBanned => "k_ePlayerBanned",
11614                Self::KETooManyHighMmr => "k_eTooManyHighMMR",
11615                Self::KEFiveStacksNotAllowed => "k_eFiveStacksNotAllowed",
11616                Self::KERankedMmNotOpen => "k_eRankedMMNotOpen",
11617                Self::KERankedNotunlocked => "k_eRankedNotunlocked",
11618                Self::KEHeroLabsMmNotOpen => "k_eHeroLabsMMNotOpen",
11619                Self::KEHeroLabsNotUnlocked => "k_eHeroLabsNotUnlocked",
11620                Self::KENoHeroLabsWhileInLowPri => "k_eNoHeroLabsWhileInLowPri",
11621                Self::KENoHighRangeFiveStack => "k_eNoHighRangeFiveStack",
11622                Self::KEAccountLocked => "k_eAccountLocked",
11623            }
11624        }
11625        /// Creates an enum from field names used in the ProtoBuf definition.
11626        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11627            match value {
11628                "k_eInternalError" => Some(Self::KEInternalError),
11629                "k_eSuccess" => Some(Self::KESuccess),
11630                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11631                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11632                "k_ePlayerPermanentBanned" => Some(Self::KEPlayerPermanentBanned),
11633                "k_eInvalidValue" => Some(Self::KEInvalidValue),
11634                "k_eInMatchMaking" => Some(Self::KEInMatchMaking),
11635                "k_eInMatch" => Some(Self::KEInMatch),
11636                "k_eDisabled" => Some(Self::KEDisabled),
11637                "k_eTooBusy" => Some(Self::KETooBusy),
11638                "k_eRateLimited" => Some(Self::KERateLimited),
11639                "k_eAlreadyDrafting" => Some(Self::KEAlreadyDrafting),
11640                "k_eCannotChangeWhileReady" => Some(Self::KECannotChangeWhileReady),
11641                "k_eTooFewPlayers" => Some(Self::KETooFewPlayers),
11642                "k_eTooManyPlayers" => Some(Self::KETooManyPlayers),
11643                "k_ePlayerBanned" => Some(Self::KEPlayerBanned),
11644                "k_eTooManyHighMMR" => Some(Self::KETooManyHighMmr),
11645                "k_eFiveStacksNotAllowed" => Some(Self::KEFiveStacksNotAllowed),
11646                "k_eRankedMMNotOpen" => Some(Self::KERankedMmNotOpen),
11647                "k_eRankedNotunlocked" => Some(Self::KERankedNotunlocked),
11648                "k_eHeroLabsMMNotOpen" => Some(Self::KEHeroLabsMmNotOpen),
11649                "k_eHeroLabsNotUnlocked" => Some(Self::KEHeroLabsNotUnlocked),
11650                "k_eNoHeroLabsWhileInLowPri" => Some(Self::KENoHeroLabsWhileInLowPri),
11651                "k_eNoHighRangeFiveStack" => Some(Self::KENoHighRangeFiveStack),
11652                "k_eAccountLocked" => Some(Self::KEAccountLocked),
11653                _ => None,
11654            }
11655        }
11656    }
11657}
11658#[derive(serde::Serialize, serde::Deserialize)]
11659#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11660pub struct CMsgClientToGcPartyStartMatch {
11661    #[prost(fixed64, optional, tag = "1")]
11662    pub party_id: ::core::option::Option<u64>,
11663}
11664#[derive(serde::Serialize, serde::Deserialize)]
11665#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11666pub struct CMsgClientToGcPartyStartMatchResponse {
11667    #[prost(
11668        enumeration = "c_msg_client_to_gc_party_start_match_response::EResponse",
11669        optional,
11670        tag = "1",
11671        default = "KEInternalError"
11672    )]
11673    pub result: ::core::option::Option<i32>,
11674    #[prost(uint32, optional, tag = "2")]
11675    pub account_id: ::core::option::Option<u32>,
11676}
11677/// Nested message and enum types in `CMsgClientToGCPartyStartMatchResponse`.
11678pub mod c_msg_client_to_gc_party_start_match_response {
11679    #[derive(serde::Serialize, serde::Deserialize)]
11680    #[derive(
11681        Clone,
11682        Copy,
11683        Debug,
11684        PartialEq,
11685        Eq,
11686        Hash,
11687        PartialOrd,
11688        Ord,
11689        ::prost::Enumeration
11690    )]
11691    #[repr(i32)]
11692    pub enum EResponse {
11693        KEInternalError = 0,
11694        KESuccess = 1,
11695        KEDisabled = 2,
11696        KEInvalidPartyId = 3,
11697        KEInvalidPermissions = 4,
11698        KETooBusy = 5,
11699        KEInMatchmaking = 6,
11700        KEInMatch = 7,
11701        KEInvalidVersion = 10,
11702        KEPlayersNotReady = 11,
11703        KECannotSelectRegion = 12,
11704        KENotAllPlayersAvailable = 13,
11705        KETooManyPlayersForMm = 14,
11706        KETooManyPlayersForPrivate = 15,
11707        KETooManySpectatorsForMm = 16,
11708        KETooManySpectatorsForPrivate = 17,
11709        KETooFewPlayersForMm = 18,
11710        KETooFewPlayersForPrivate = 19,
11711        KEMismatchedVersions = 20,
11712        KEInvalidPartyMatchMode = 21,
11713        KEPlayerBannedFromMode = 22,
11714        KETooManyPlayersOnTeam = 23,
11715        KEInvalidTeam = 24,
11716        KEInvalidHeroLineup = 25,
11717        KEInvalidGroupHeroLineup = 26,
11718        KEUnassignedPlayers = 27,
11719        KERankedMmNotOpen = 28,
11720        KEHeroLabsMmNotOpen = 29,
11721        KEHeroLabsNotUnlocked = 30,
11722        KENoHeroLabsWhileInLowPri = 31,
11723    }
11724    impl EResponse {
11725        /// String value of the enum field names used in the ProtoBuf definition.
11726        ///
11727        /// The values are not transformed in any way and thus are considered stable
11728        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11729        pub fn as_str_name(&self) -> &'static str {
11730            match self {
11731                Self::KEInternalError => "k_eInternalError",
11732                Self::KESuccess => "k_eSuccess",
11733                Self::KEDisabled => "k_eDisabled",
11734                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11735                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11736                Self::KETooBusy => "k_eTooBusy",
11737                Self::KEInMatchmaking => "k_eInMatchmaking",
11738                Self::KEInMatch => "k_eInMatch",
11739                Self::KEInvalidVersion => "k_eInvalidVersion",
11740                Self::KEPlayersNotReady => "k_ePlayersNotReady",
11741                Self::KECannotSelectRegion => "k_eCannotSelectRegion",
11742                Self::KENotAllPlayersAvailable => "k_eNotAllPlayersAvailable",
11743                Self::KETooManyPlayersForMm => "k_eTooManyPlayersForMM",
11744                Self::KETooManyPlayersForPrivate => "k_eTooManyPlayersForPrivate",
11745                Self::KETooManySpectatorsForMm => "k_eTooManySpectatorsForMM",
11746                Self::KETooManySpectatorsForPrivate => "k_eTooManySpectatorsForPrivate",
11747                Self::KETooFewPlayersForMm => "k_eTooFewPlayersForMM",
11748                Self::KETooFewPlayersForPrivate => "k_eTooFewPlayersForPrivate",
11749                Self::KEMismatchedVersions => "k_eMismatchedVersions",
11750                Self::KEInvalidPartyMatchMode => "k_eInvalidPartyMatchMode",
11751                Self::KEPlayerBannedFromMode => "k_ePlayerBannedFromMode",
11752                Self::KETooManyPlayersOnTeam => "k_eTooManyPlayersOnTeam",
11753                Self::KEInvalidTeam => "k_eInvalidTeam",
11754                Self::KEInvalidHeroLineup => "k_eInvalidHeroLineup",
11755                Self::KEInvalidGroupHeroLineup => "k_eInvalidGroupHeroLineup",
11756                Self::KEUnassignedPlayers => "k_eUnassignedPlayers",
11757                Self::KERankedMmNotOpen => "k_eRankedMMNotOpen",
11758                Self::KEHeroLabsMmNotOpen => "k_eHeroLabsMMNotOpen",
11759                Self::KEHeroLabsNotUnlocked => "k_eHeroLabsNotUnlocked",
11760                Self::KENoHeroLabsWhileInLowPri => "k_eNoHeroLabsWhileInLowPri",
11761            }
11762        }
11763        /// Creates an enum from field names used in the ProtoBuf definition.
11764        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11765            match value {
11766                "k_eInternalError" => Some(Self::KEInternalError),
11767                "k_eSuccess" => Some(Self::KESuccess),
11768                "k_eDisabled" => Some(Self::KEDisabled),
11769                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11770                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11771                "k_eTooBusy" => Some(Self::KETooBusy),
11772                "k_eInMatchmaking" => Some(Self::KEInMatchmaking),
11773                "k_eInMatch" => Some(Self::KEInMatch),
11774                "k_eInvalidVersion" => Some(Self::KEInvalidVersion),
11775                "k_ePlayersNotReady" => Some(Self::KEPlayersNotReady),
11776                "k_eCannotSelectRegion" => Some(Self::KECannotSelectRegion),
11777                "k_eNotAllPlayersAvailable" => Some(Self::KENotAllPlayersAvailable),
11778                "k_eTooManyPlayersForMM" => Some(Self::KETooManyPlayersForMm),
11779                "k_eTooManyPlayersForPrivate" => Some(Self::KETooManyPlayersForPrivate),
11780                "k_eTooManySpectatorsForMM" => Some(Self::KETooManySpectatorsForMm),
11781                "k_eTooManySpectatorsForPrivate" => {
11782                    Some(Self::KETooManySpectatorsForPrivate)
11783                }
11784                "k_eTooFewPlayersForMM" => Some(Self::KETooFewPlayersForMm),
11785                "k_eTooFewPlayersForPrivate" => Some(Self::KETooFewPlayersForPrivate),
11786                "k_eMismatchedVersions" => Some(Self::KEMismatchedVersions),
11787                "k_eInvalidPartyMatchMode" => Some(Self::KEInvalidPartyMatchMode),
11788                "k_ePlayerBannedFromMode" => Some(Self::KEPlayerBannedFromMode),
11789                "k_eTooManyPlayersOnTeam" => Some(Self::KETooManyPlayersOnTeam),
11790                "k_eInvalidTeam" => Some(Self::KEInvalidTeam),
11791                "k_eInvalidHeroLineup" => Some(Self::KEInvalidHeroLineup),
11792                "k_eInvalidGroupHeroLineup" => Some(Self::KEInvalidGroupHeroLineup),
11793                "k_eUnassignedPlayers" => Some(Self::KEUnassignedPlayers),
11794                "k_eRankedMMNotOpen" => Some(Self::KERankedMmNotOpen),
11795                "k_eHeroLabsMMNotOpen" => Some(Self::KEHeroLabsMmNotOpen),
11796                "k_eHeroLabsNotUnlocked" => Some(Self::KEHeroLabsNotUnlocked),
11797                "k_eNoHeroLabsWhileInLowPri" => Some(Self::KENoHeroLabsWhileInLowPri),
11798                _ => None,
11799            }
11800        }
11801    }
11802}
11803#[derive(serde::Serialize, serde::Deserialize)]
11804#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11805pub struct CMsgClientToGcPartyInviteUser {
11806    #[prost(fixed64, optional, tag = "1")]
11807    pub party_id: ::core::option::Option<u64>,
11808    #[prost(uint32, optional, tag = "2")]
11809    pub invite_account_id: ::core::option::Option<u32>,
11810}
11811#[derive(serde::Serialize, serde::Deserialize)]
11812#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
11813pub struct CMsgClientToGcPartyInviteUserResponse {
11814    #[prost(
11815        enumeration = "c_msg_client_to_gc_party_invite_user_response::EResponse",
11816        optional,
11817        tag = "1",
11818        default = "KEInternalError"
11819    )]
11820    pub result: ::core::option::Option<i32>,
11821    #[prost(bool, optional, tag = "2")]
11822    pub user_online: ::core::option::Option<bool>,
11823}
11824/// Nested message and enum types in `CMsgClientToGCPartyInviteUserResponse`.
11825pub mod c_msg_client_to_gc_party_invite_user_response {
11826    #[derive(serde::Serialize, serde::Deserialize)]
11827    #[derive(
11828        Clone,
11829        Copy,
11830        Debug,
11831        PartialEq,
11832        Eq,
11833        Hash,
11834        PartialOrd,
11835        Ord,
11836        ::prost::Enumeration
11837    )]
11838    #[repr(i32)]
11839    pub enum EResponse {
11840        KEInternalError = 0,
11841        KESuccess = 1,
11842        KEAlreadyInvited = 2,
11843        KEInvalidPermissions = 3,
11844        KEInvalidPartyId = 4,
11845        KEDisabled = 5,
11846        KETooManyInvites = 6,
11847        KENotFriends = 7,
11848        KETooBusy = 8,
11849        KERateLimited = 9,
11850        KEInvalidPartyMode = 10,
11851        KEPlayerDoesntHaveGame = 11,
11852    }
11853    impl EResponse {
11854        /// String value of the enum field names used in the ProtoBuf definition.
11855        ///
11856        /// The values are not transformed in any way and thus are considered stable
11857        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11858        pub fn as_str_name(&self) -> &'static str {
11859            match self {
11860                Self::KEInternalError => "k_eInternalError",
11861                Self::KESuccess => "k_eSuccess",
11862                Self::KEAlreadyInvited => "k_eAlreadyInvited",
11863                Self::KEInvalidPermissions => "k_eInvalidPermissions",
11864                Self::KEInvalidPartyId => "k_eInvalidPartyID",
11865                Self::KEDisabled => "k_eDisabled",
11866                Self::KETooManyInvites => "k_eTooManyInvites",
11867                Self::KENotFriends => "k_eNotFriends",
11868                Self::KETooBusy => "k_eTooBusy",
11869                Self::KERateLimited => "k_eRateLimited",
11870                Self::KEInvalidPartyMode => "k_eInvalidPartyMode",
11871                Self::KEPlayerDoesntHaveGame => "k_ePlayerDoesntHaveGame",
11872            }
11873        }
11874        /// Creates an enum from field names used in the ProtoBuf definition.
11875        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11876            match value {
11877                "k_eInternalError" => Some(Self::KEInternalError),
11878                "k_eSuccess" => Some(Self::KESuccess),
11879                "k_eAlreadyInvited" => Some(Self::KEAlreadyInvited),
11880                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
11881                "k_eInvalidPartyID" => Some(Self::KEInvalidPartyId),
11882                "k_eDisabled" => Some(Self::KEDisabled),
11883                "k_eTooManyInvites" => Some(Self::KETooManyInvites),
11884                "k_eNotFriends" => Some(Self::KENotFriends),
11885                "k_eTooBusy" => Some(Self::KETooBusy),
11886                "k_eRateLimited" => Some(Self::KERateLimited),
11887                "k_eInvalidPartyMode" => Some(Self::KEInvalidPartyMode),
11888                "k_ePlayerDoesntHaveGame" => Some(Self::KEPlayerDoesntHaveGame),
11889                _ => None,
11890            }
11891        }
11892    }
11893}
11894#[derive(serde::Serialize, serde::Deserialize)]
11895#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
11896pub struct CMsgGcToClientPartyEvent {
11897    #[prost(fixed64, optional, tag = "1")]
11898    pub party_id: ::core::option::Option<u64>,
11899    #[prost(
11900        enumeration = "c_msg_gc_to_client_party_event::EEvent",
11901        optional,
11902        tag = "2",
11903        default = "KEPlayerKicked"
11904    )]
11905    pub event: ::core::option::Option<i32>,
11906    #[prost(uint32, optional, tag = "3")]
11907    pub initiator_account_id: ::core::option::Option<u32>,
11908    #[prost(uint32, optional, tag = "4")]
11909    pub target_account_id: ::core::option::Option<u32>,
11910    #[prost(bytes = "vec", optional, tag = "5")]
11911    pub bytes_data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
11912    #[prost(string, optional, tag = "6")]
11913    pub str_data: ::core::option::Option<::prost::alloc::string::String>,
11914    #[prost(uint64, optional, tag = "7")]
11915    pub uint_data: ::core::option::Option<u64>,
11916}
11917/// Nested message and enum types in `CMsgGCToClientPartyEvent`.
11918pub mod c_msg_gc_to_client_party_event {
11919    #[derive(serde::Serialize, serde::Deserialize)]
11920    #[derive(
11921        Clone,
11922        Copy,
11923        Debug,
11924        PartialEq,
11925        Eq,
11926        Hash,
11927        PartialOrd,
11928        Ord,
11929        ::prost::Enumeration
11930    )]
11931    #[repr(i32)]
11932    pub enum EEvent {
11933        KEPlayerKicked = 1,
11934        KEJoinedParty = 3,
11935        KEMatchCompleted = 4,
11936        KEMatchMakingStoppedUser = 5,
11937        KEMatchMakingStoppedVersion = 6,
11938        KEMatchMakingStoppedNoServerRegion = 7,
11939        KELeftParty = 8,
11940        KEDeclinedInvite = 9,
11941        KEMatchMakingStoppedFailedOther = 10,
11942        KEDraftEndedUser = 11,
11943        KEStartDraftMmFailed = 12,
11944        KEMatchMakingStoppedCancelled = 13,
11945    }
11946    impl EEvent {
11947        /// String value of the enum field names used in the ProtoBuf definition.
11948        ///
11949        /// The values are not transformed in any way and thus are considered stable
11950        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
11951        pub fn as_str_name(&self) -> &'static str {
11952            match self {
11953                Self::KEPlayerKicked => "k_ePlayerKicked",
11954                Self::KEJoinedParty => "k_eJoinedParty",
11955                Self::KEMatchCompleted => "k_eMatchCompleted",
11956                Self::KEMatchMakingStoppedUser => "k_eMatchMakingStopped_User",
11957                Self::KEMatchMakingStoppedVersion => "k_eMatchMakingStopped_Version",
11958                Self::KEMatchMakingStoppedNoServerRegion => {
11959                    "k_eMatchMakingStopped_NoServerRegion"
11960                }
11961                Self::KELeftParty => "k_eLeftParty",
11962                Self::KEDeclinedInvite => "k_eDeclinedInvite",
11963                Self::KEMatchMakingStoppedFailedOther => {
11964                    "k_eMatchMakingStopped_FailedOther"
11965                }
11966                Self::KEDraftEndedUser => "k_eDraftEnded_User",
11967                Self::KEStartDraftMmFailed => "k_eStartDraftMMFailed",
11968                Self::KEMatchMakingStoppedCancelled => "k_eMatchMakingStopped_Cancelled",
11969            }
11970        }
11971        /// Creates an enum from field names used in the ProtoBuf definition.
11972        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
11973            match value {
11974                "k_ePlayerKicked" => Some(Self::KEPlayerKicked),
11975                "k_eJoinedParty" => Some(Self::KEJoinedParty),
11976                "k_eMatchCompleted" => Some(Self::KEMatchCompleted),
11977                "k_eMatchMakingStopped_User" => Some(Self::KEMatchMakingStoppedUser),
11978                "k_eMatchMakingStopped_Version" => {
11979                    Some(Self::KEMatchMakingStoppedVersion)
11980                }
11981                "k_eMatchMakingStopped_NoServerRegion" => {
11982                    Some(Self::KEMatchMakingStoppedNoServerRegion)
11983                }
11984                "k_eLeftParty" => Some(Self::KELeftParty),
11985                "k_eDeclinedInvite" => Some(Self::KEDeclinedInvite),
11986                "k_eMatchMakingStopped_FailedOther" => {
11987                    Some(Self::KEMatchMakingStoppedFailedOther)
11988                }
11989                "k_eDraftEnded_User" => Some(Self::KEDraftEndedUser),
11990                "k_eStartDraftMMFailed" => Some(Self::KEStartDraftMmFailed),
11991                "k_eMatchMakingStopped_Cancelled" => {
11992                    Some(Self::KEMatchMakingStoppedCancelled)
11993                }
11994                _ => None,
11995            }
11996        }
11997    }
11998}
11999#[derive(serde::Serialize, serde::Deserialize)]
12000#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12001pub struct CMsgGcToClientCanRejoinParty {
12002    #[prost(fixed64, optional, tag = "1")]
12003    pub party_id: ::core::option::Option<u64>,
12004}
12005#[derive(serde::Serialize, serde::Deserialize)]
12006#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12007pub struct CMsgClientToGcPartyJoinViaCode {
12008    #[prost(uint64, optional, tag = "1")]
12009    pub join_code: ::core::option::Option<u64>,
12010    #[prost(message, optional, tag = "2")]
12011    pub party_mm_info: ::core::option::Option<CMsgPartyMmInfo>,
12012}
12013#[derive(serde::Serialize, serde::Deserialize)]
12014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12015pub struct CMsgClientToGcPartyJoinViaCodeResponse {
12016    #[prost(
12017        enumeration = "c_msg_client_to_gc_party_join_response::EResponse",
12018        optional,
12019        tag = "1",
12020        default = "KEInternalError"
12021    )]
12022    pub result: ::core::option::Option<i32>,
12023    #[prost(fixed64, optional, tag = "2")]
12024    pub party_id: ::core::option::Option<u64>,
12025}
12026#[derive(serde::Serialize, serde::Deserialize)]
12027#[derive(Clone, PartialEq, ::prost::Message)]
12028pub struct CMsgClientToGcPartySetReadyState {
12029    #[prost(fixed64, optional, tag = "1")]
12030    pub party_id: ::core::option::Option<u64>,
12031    #[prost(bool, optional, tag = "2")]
12032    pub ready_state: ::core::option::Option<bool>,
12033    #[prost(message, optional, tag = "3")]
12034    pub hero_roster: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
12035}
12036#[derive(serde::Serialize, serde::Deserialize)]
12037#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12038pub struct CMsgClientToGcPartySetReadyStateResponse {
12039    #[prost(
12040        enumeration = "c_msg_client_to_gc_party_set_ready_state_response::EResponse",
12041        optional,
12042        tag = "1",
12043        default = "KEInternalError"
12044    )]
12045    pub result: ::core::option::Option<i32>,
12046}
12047/// Nested message and enum types in `CMsgClientToGCPartySetReadyStateResponse`.
12048pub mod c_msg_client_to_gc_party_set_ready_state_response {
12049    #[derive(serde::Serialize, serde::Deserialize)]
12050    #[derive(
12051        Clone,
12052        Copy,
12053        Debug,
12054        PartialEq,
12055        Eq,
12056        Hash,
12057        PartialOrd,
12058        Ord,
12059        ::prost::Enumeration
12060    )]
12061    #[repr(i32)]
12062    pub enum EResponse {
12063        KEInternalError = 0,
12064        KESuccess = 1,
12065        KEInvalidPermissions = 2,
12066        KEDisabled = 3,
12067        KETooBusy = 4,
12068        KERateLimited = 5,
12069        KEInvalidRoster = 6,
12070        KEMatchForming = 7,
12071        KEInvalidGroupRoster = 8,
12072        KEInMatch = 9,
12073        KEHeroesNotUnlocked = 10,
12074        KEModeLocked = 11,
12075        KEModeBanned = 12,
12076        KETooManyLimitedHeroes = 13,
12077    }
12078    impl EResponse {
12079        /// String value of the enum field names used in the ProtoBuf definition.
12080        ///
12081        /// The values are not transformed in any way and thus are considered stable
12082        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12083        pub fn as_str_name(&self) -> &'static str {
12084            match self {
12085                Self::KEInternalError => "k_eInternalError",
12086                Self::KESuccess => "k_eSuccess",
12087                Self::KEInvalidPermissions => "k_eInvalidPermissions",
12088                Self::KEDisabled => "k_eDisabled",
12089                Self::KETooBusy => "k_eTooBusy",
12090                Self::KERateLimited => "k_eRateLimited",
12091                Self::KEInvalidRoster => "k_eInvalidRoster",
12092                Self::KEMatchForming => "k_eMatchForming",
12093                Self::KEInvalidGroupRoster => "k_eInvalidGroupRoster",
12094                Self::KEInMatch => "k_eInMatch",
12095                Self::KEHeroesNotUnlocked => "k_eHeroesNotUnlocked",
12096                Self::KEModeLocked => "k_eModeLocked",
12097                Self::KEModeBanned => "k_eModeBanned",
12098                Self::KETooManyLimitedHeroes => "k_eTooManyLimitedHeroes",
12099            }
12100        }
12101        /// Creates an enum from field names used in the ProtoBuf definition.
12102        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12103            match value {
12104                "k_eInternalError" => Some(Self::KEInternalError),
12105                "k_eSuccess" => Some(Self::KESuccess),
12106                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
12107                "k_eDisabled" => Some(Self::KEDisabled),
12108                "k_eTooBusy" => Some(Self::KETooBusy),
12109                "k_eRateLimited" => Some(Self::KERateLimited),
12110                "k_eInvalidRoster" => Some(Self::KEInvalidRoster),
12111                "k_eMatchForming" => Some(Self::KEMatchForming),
12112                "k_eInvalidGroupRoster" => Some(Self::KEInvalidGroupRoster),
12113                "k_eInMatch" => Some(Self::KEInMatch),
12114                "k_eHeroesNotUnlocked" => Some(Self::KEHeroesNotUnlocked),
12115                "k_eModeLocked" => Some(Self::KEModeLocked),
12116                "k_eModeBanned" => Some(Self::KEModeBanned),
12117                "k_eTooManyLimitedHeroes" => Some(Self::KETooManyLimitedHeroes),
12118                _ => None,
12119            }
12120        }
12121    }
12122}
12123#[derive(serde::Serialize, serde::Deserialize)]
12124#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12125pub struct CMsgClientToGcDevSetMmBias {
12126    #[prost(uint32, optional, tag = "1")]
12127    pub account_id: ::core::option::Option<u32>,
12128    #[prost(uint32, optional, tag = "2")]
12129    pub value: ::core::option::Option<u32>,
12130}
12131#[derive(serde::Serialize, serde::Deserialize)]
12132#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12133pub struct CMsgClientToGcGetMatchHistory {
12134    #[prost(uint32, optional, tag = "1")]
12135    pub account_id: ::core::option::Option<u32>,
12136    #[prost(uint64, optional, tag = "2")]
12137    pub continue_cursor: ::core::option::Option<u64>,
12138    #[prost(
12139        enumeration = "ECitadelGameMode",
12140        optional,
12141        tag = "4",
12142        default = "KECitadelGameModeInvalid"
12143    )]
12144    pub game_mode: ::core::option::Option<i32>,
12145    #[prost(
12146        enumeration = "ECitadelMatchMode",
12147        optional,
12148        tag = "5",
12149        default = "KECitadelMatchModeInvalid"
12150    )]
12151    pub match_mode: ::core::option::Option<i32>,
12152}
12153#[derive(serde::Serialize, serde::Deserialize)]
12154#[derive(Clone, PartialEq, ::prost::Message)]
12155pub struct CMsgClientToGcGetMatchHistoryResponse {
12156    #[prost(
12157        enumeration = "c_msg_client_to_gc_get_match_history_response::EResult",
12158        optional,
12159        tag = "1",
12160        default = "KEResultInternalError"
12161    )]
12162    pub result: ::core::option::Option<i32>,
12163    #[prost(uint64, optional, tag = "2")]
12164    pub continue_cursor: ::core::option::Option<u64>,
12165    #[prost(message, repeated, tag = "3")]
12166    pub matches: ::prost::alloc::vec::Vec<
12167        c_msg_client_to_gc_get_match_history_response::Match,
12168    >,
12169}
12170/// Nested message and enum types in `CMsgClientToGCGetMatchHistoryResponse`.
12171pub mod c_msg_client_to_gc_get_match_history_response {
12172    #[derive(serde::Serialize, serde::Deserialize)]
12173    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12174    pub struct Match {
12175        #[prost(uint64, optional, tag = "1")]
12176        pub match_id: ::core::option::Option<u64>,
12177        #[prost(uint32, optional, tag = "2")]
12178        pub hero_id: ::core::option::Option<u32>,
12179        #[prost(uint32, optional, tag = "3")]
12180        pub match_duration_s: ::core::option::Option<u32>,
12181        #[prost(uint32, optional, tag = "4")]
12182        pub start_time: ::core::option::Option<u32>,
12183        #[prost(uint32, optional, tag = "5")]
12184        pub match_result: ::core::option::Option<u32>,
12185        #[prost(
12186            enumeration = "super::ECitadelLobbyTeam",
12187            optional,
12188            tag = "6",
12189            default = "KECitadelLobbyTeamTeam0"
12190        )]
12191        pub player_team: ::core::option::Option<i32>,
12192        #[prost(uint32, optional, tag = "7")]
12193        pub player_kills: ::core::option::Option<u32>,
12194        #[prost(uint32, optional, tag = "8")]
12195        pub player_deaths: ::core::option::Option<u32>,
12196        #[prost(uint32, optional, tag = "9")]
12197        pub player_assists: ::core::option::Option<u32>,
12198        #[prost(uint32, optional, tag = "11")]
12199        pub last_hits: ::core::option::Option<u32>,
12200        #[prost(uint32, optional, tag = "12")]
12201        pub denies: ::core::option::Option<u32>,
12202        #[prost(uint32, optional, tag = "13")]
12203        pub hero_level: ::core::option::Option<u32>,
12204        #[prost(uint32, optional, tag = "14")]
12205        pub net_worth: ::core::option::Option<u32>,
12206        #[prost(uint64, optional, tag = "15")]
12207        pub objectives_mask_team0: ::core::option::Option<u64>,
12208        #[prost(uint64, optional, tag = "16")]
12209        pub objectives_mask_team1: ::core::option::Option<u64>,
12210        #[prost(bool, optional, tag = "17")]
12211        pub team_abandoned: ::core::option::Option<bool>,
12212        #[prost(uint32, optional, tag = "18")]
12213        pub abandoned_time_s: ::core::option::Option<u32>,
12214        #[prost(
12215            enumeration = "super::ECitadelMatchMode",
12216            optional,
12217            tag = "19",
12218            default = "KECitadelMatchModeInvalid"
12219        )]
12220        pub match_mode: ::core::option::Option<i32>,
12221        #[prost(
12222            enumeration = "super::ECitadelGameMode",
12223            optional,
12224            tag = "20",
12225            default = "KECitadelGameModeInvalid"
12226        )]
12227        pub game_mode: ::core::option::Option<i32>,
12228        #[prost(bool, optional, tag = "21")]
12229        pub not_scored: ::core::option::Option<bool>,
12230        #[prost(uint32, optional, tag = "22")]
12231        pub game_mode_version: ::core::option::Option<u32>,
12232        #[prost(uint32, optional, tag = "23")]
12233        pub brawl_score_team0: ::core::option::Option<u32>,
12234        #[prost(uint32, optional, tag = "24")]
12235        pub brawl_score_team1: ::core::option::Option<u32>,
12236        #[prost(uint32, optional, tag = "25")]
12237        pub brawl_avg_round_time_s: ::core::option::Option<u32>,
12238    }
12239    #[derive(serde::Serialize, serde::Deserialize)]
12240    #[derive(
12241        Clone,
12242        Copy,
12243        Debug,
12244        PartialEq,
12245        Eq,
12246        Hash,
12247        PartialOrd,
12248        Ord,
12249        ::prost::Enumeration
12250    )]
12251    #[repr(i32)]
12252    pub enum EResult {
12253        KEResultInternalError = 0,
12254        KEResultSuccess = 1,
12255        KEResultInvalidPermission = 2,
12256        KEResultTemporarilyDisabled = 3,
12257        KEResultTooBusy = 4,
12258        KEResultRateLimited = 5,
12259    }
12260    impl EResult {
12261        /// String value of the enum field names used in the ProtoBuf definition.
12262        ///
12263        /// The values are not transformed in any way and thus are considered stable
12264        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12265        pub fn as_str_name(&self) -> &'static str {
12266            match self {
12267                Self::KEResultInternalError => "k_eResult_InternalError",
12268                Self::KEResultSuccess => "k_eResult_Success",
12269                Self::KEResultInvalidPermission => "k_eResult_InvalidPermission",
12270                Self::KEResultTemporarilyDisabled => "k_eResult_TemporarilyDisabled",
12271                Self::KEResultTooBusy => "k_eResult_TooBusy",
12272                Self::KEResultRateLimited => "k_eResult_RateLimited",
12273            }
12274        }
12275        /// Creates an enum from field names used in the ProtoBuf definition.
12276        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12277            match value {
12278                "k_eResult_InternalError" => Some(Self::KEResultInternalError),
12279                "k_eResult_Success" => Some(Self::KEResultSuccess),
12280                "k_eResult_InvalidPermission" => Some(Self::KEResultInvalidPermission),
12281                "k_eResult_TemporarilyDisabled" => {
12282                    Some(Self::KEResultTemporarilyDisabled)
12283                }
12284                "k_eResult_TooBusy" => Some(Self::KEResultTooBusy),
12285                "k_eResult_RateLimited" => Some(Self::KEResultRateLimited),
12286                _ => None,
12287            }
12288        }
12289    }
12290}
12291#[derive(serde::Serialize, serde::Deserialize)]
12292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12293pub struct CMsgClientToGcSpectateUser {
12294    #[prost(uint32, optional, tag = "1")]
12295    pub spectate_account_id: ::core::option::Option<u32>,
12296    #[prost(uint32, optional, tag = "3")]
12297    pub client_version: ::core::option::Option<u32>,
12298    #[prost(
12299        enumeration = "EgcPlatform",
12300        optional,
12301        tag = "4",
12302        default = "KEGcPlatformNone"
12303    )]
12304    pub client_platform: ::core::option::Option<i32>,
12305}
12306#[derive(serde::Serialize, serde::Deserialize)]
12307#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12308pub struct CMsgClientToGcSpectateUserResponse {
12309    #[prost(
12310        enumeration = "c_msg_client_to_gc_spectate_user_response::EResponse",
12311        optional,
12312        tag = "1",
12313        default = "KEInternalError"
12314    )]
12315    pub result: ::core::option::Option<i32>,
12316    #[prost(fixed64, optional, tag = "3")]
12317    pub server_steam_id: ::core::option::Option<u64>,
12318    #[prost(bytes = "vec", optional, tag = "4")]
12319    pub sdr_key: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
12320    #[prost(uint32, optional, tag = "5")]
12321    pub udp_connect_ip: ::core::option::Option<u32>,
12322    #[prost(uint32, optional, tag = "6")]
12323    pub udp_connect_port: ::core::option::Option<u32>,
12324    #[prost(fixed64, optional, tag = "7")]
12325    pub lobby_id: ::core::option::Option<u64>,
12326    #[prost(string, optional, tag = "8")]
12327    pub client_broadcast_url: ::core::option::Option<::prost::alloc::string::String>,
12328}
12329/// Nested message and enum types in `CMsgClientToGCSpectateUserResponse`.
12330pub mod c_msg_client_to_gc_spectate_user_response {
12331    #[derive(serde::Serialize, serde::Deserialize)]
12332    #[derive(
12333        Clone,
12334        Copy,
12335        Debug,
12336        PartialEq,
12337        Eq,
12338        Hash,
12339        PartialOrd,
12340        Ord,
12341        ::prost::Enumeration
12342    )]
12343    #[repr(i32)]
12344    pub enum EResponse {
12345        KEInternalError = 0,
12346        KESuccess = 1,
12347        KEDisabled = 2,
12348        KETooBusy = 3,
12349        KERateLimited = 4,
12350        KENotInGame = 5,
12351        KEDisabledForGame = 6,
12352        KEServerFull = 7,
12353        KENotFriends = 8,
12354        KERegionInfoNotProvided = 9,
12355        KEDurationControlBlocked = 10,
12356        KEInvalidClientVersion = 11,
12357        KEInvalidRegion = 12,
12358    }
12359    impl EResponse {
12360        /// String value of the enum field names used in the ProtoBuf definition.
12361        ///
12362        /// The values are not transformed in any way and thus are considered stable
12363        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12364        pub fn as_str_name(&self) -> &'static str {
12365            match self {
12366                Self::KEInternalError => "k_eInternalError",
12367                Self::KESuccess => "k_eSuccess",
12368                Self::KEDisabled => "k_eDisabled",
12369                Self::KETooBusy => "k_eTooBusy",
12370                Self::KERateLimited => "k_eRateLimited",
12371                Self::KENotInGame => "k_eNotInGame",
12372                Self::KEDisabledForGame => "k_eDisabledForGame",
12373                Self::KEServerFull => "k_eServerFull",
12374                Self::KENotFriends => "k_eNotFriends",
12375                Self::KERegionInfoNotProvided => "k_eRegionInfoNotProvided",
12376                Self::KEDurationControlBlocked => "k_eDurationControlBlocked",
12377                Self::KEInvalidClientVersion => "k_eInvalidClientVersion",
12378                Self::KEInvalidRegion => "k_eInvalidRegion",
12379            }
12380        }
12381        /// Creates an enum from field names used in the ProtoBuf definition.
12382        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12383            match value {
12384                "k_eInternalError" => Some(Self::KEInternalError),
12385                "k_eSuccess" => Some(Self::KESuccess),
12386                "k_eDisabled" => Some(Self::KEDisabled),
12387                "k_eTooBusy" => Some(Self::KETooBusy),
12388                "k_eRateLimited" => Some(Self::KERateLimited),
12389                "k_eNotInGame" => Some(Self::KENotInGame),
12390                "k_eDisabledForGame" => Some(Self::KEDisabledForGame),
12391                "k_eServerFull" => Some(Self::KEServerFull),
12392                "k_eNotFriends" => Some(Self::KENotFriends),
12393                "k_eRegionInfoNotProvided" => Some(Self::KERegionInfoNotProvided),
12394                "k_eDurationControlBlocked" => Some(Self::KEDurationControlBlocked),
12395                "k_eInvalidClientVersion" => Some(Self::KEInvalidClientVersion),
12396                "k_eInvalidRegion" => Some(Self::KEInvalidRegion),
12397                _ => None,
12398            }
12399        }
12400    }
12401}
12402#[derive(serde::Serialize, serde::Deserialize)]
12403#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12404pub struct CMsgClientToGcSpectateLobby {
12405    #[prost(uint64, optional, tag = "1")]
12406    pub lobby_id: ::core::option::Option<u64>,
12407    #[prost(uint32, optional, tag = "3")]
12408    pub client_version: ::core::option::Option<u32>,
12409    #[prost(
12410        enumeration = "EgcPlatform",
12411        optional,
12412        tag = "4",
12413        default = "KEGcPlatformNone"
12414    )]
12415    pub client_platform: ::core::option::Option<i32>,
12416    #[prost(uint64, optional, tag = "5")]
12417    pub match_id: ::core::option::Option<u64>,
12418}
12419#[derive(serde::Serialize, serde::Deserialize)]
12420#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12421pub struct CMsgClientToGcSpectateLobbyResponse {
12422    #[prost(message, optional, tag = "1")]
12423    pub result: ::core::option::Option<CMsgClientToGcSpectateUserResponse>,
12424}
12425#[derive(serde::Serialize, serde::Deserialize)]
12426#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12427pub struct CMsgClientToGcGetProfileCard {
12428    #[prost(uint32, optional, tag = "1")]
12429    pub account_id: ::core::option::Option<u32>,
12430    #[prost(bool, optional, tag = "2")]
12431    pub dev_access_hint: ::core::option::Option<bool>,
12432    #[prost(bool, optional, tag = "3")]
12433    pub friend_access_hint: ::core::option::Option<bool>,
12434}
12435#[derive(serde::Serialize, serde::Deserialize)]
12436#[derive(Clone, PartialEq, ::prost::Message)]
12437pub struct CMsgCitadelProfileCard {
12438    #[prost(uint32, optional, tag = "1")]
12439    pub account_id: ::core::option::Option<u32>,
12440    #[prost(message, repeated, tag = "2")]
12441    pub slots: ::prost::alloc::vec::Vec<c_msg_citadel_profile_card::Slot>,
12442    #[prost(uint32, optional, tag = "3")]
12443    pub ranked_badge_level: ::core::option::Option<u32>,
12444}
12445/// Nested message and enum types in `CMsgCitadelProfileCard`.
12446pub mod c_msg_citadel_profile_card {
12447    #[derive(serde::Serialize, serde::Deserialize)]
12448    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12449    pub struct Slot {
12450        #[prost(uint32, optional, tag = "1")]
12451        pub slot_id: ::core::option::Option<u32>,
12452        #[prost(message, optional, tag = "2")]
12453        pub stat: ::core::option::Option<slot::Stat>,
12454        #[prost(message, optional, tag = "3")]
12455        pub hero: ::core::option::Option<slot::Hero>,
12456    }
12457    /// Nested message and enum types in `Slot`.
12458    pub mod slot {
12459        #[derive(serde::Serialize, serde::Deserialize)]
12460        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12461        pub struct Stat {
12462            #[prost(
12463                enumeration = "super::EStatId",
12464                optional,
12465                tag = "1",
12466                default = "KEStatInvalid"
12467            )]
12468            pub stat_id: ::core::option::Option<i32>,
12469            #[prost(uint32, optional, tag = "2")]
12470            pub stat_score: ::core::option::Option<u32>,
12471        }
12472        #[derive(serde::Serialize, serde::Deserialize)]
12473        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12474        pub struct Hero {
12475            #[prost(uint32, optional, tag = "1")]
12476            pub hero_id: ::core::option::Option<u32>,
12477            #[prost(uint32, optional, tag = "2")]
12478            pub hero_wins: ::core::option::Option<u32>,
12479            #[prost(uint32, optional, tag = "3")]
12480            pub hero_kills: ::core::option::Option<u32>,
12481        }
12482    }
12483    #[derive(serde::Serialize, serde::Deserialize)]
12484    #[derive(
12485        Clone,
12486        Copy,
12487        Debug,
12488        PartialEq,
12489        Eq,
12490        Hash,
12491        PartialOrd,
12492        Ord,
12493        ::prost::Enumeration
12494    )]
12495    #[repr(i32)]
12496    pub enum EStatId {
12497        KEStatInvalid = 0,
12498        KEStatWins = 1,
12499        KEStatKills = 2,
12500        KEStatGamesPlayed = 3,
12501    }
12502    impl EStatId {
12503        /// String value of the enum field names used in the ProtoBuf definition.
12504        ///
12505        /// The values are not transformed in any way and thus are considered stable
12506        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12507        pub fn as_str_name(&self) -> &'static str {
12508            match self {
12509                Self::KEStatInvalid => "k_eStat_Invalid",
12510                Self::KEStatWins => "k_eStat_Wins",
12511                Self::KEStatKills => "k_eStat_Kills",
12512                Self::KEStatGamesPlayed => "k_eStat_GamesPlayed",
12513            }
12514        }
12515        /// Creates an enum from field names used in the ProtoBuf definition.
12516        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12517            match value {
12518                "k_eStat_Invalid" => Some(Self::KEStatInvalid),
12519                "k_eStat_Wins" => Some(Self::KEStatWins),
12520                "k_eStat_Kills" => Some(Self::KEStatKills),
12521                "k_eStat_GamesPlayed" => Some(Self::KEStatGamesPlayed),
12522                _ => None,
12523            }
12524        }
12525    }
12526}
12527#[derive(serde::Serialize, serde::Deserialize)]
12528#[derive(Clone, PartialEq, ::prost::Message)]
12529pub struct CMsgClientToGcUpdateRoster {
12530    #[prost(message, optional, tag = "1")]
12531    pub heroes: ::core::option::Option<CMsgHeroSelectionMatchInfo>,
12532    #[prost(
12533        enumeration = "ECitadelGameMode",
12534        optional,
12535        tag = "2",
12536        default = "KECitadelGameModeInvalid"
12537    )]
12538    pub game_mode: ::core::option::Option<i32>,
12539    #[prost(
12540        enumeration = "ECitadelMatchMode",
12541        optional,
12542        tag = "3",
12543        default = "KECitadelMatchModeInvalid"
12544    )]
12545    pub match_mode: ::core::option::Option<i32>,
12546}
12547#[derive(serde::Serialize, serde::Deserialize)]
12548#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12549pub struct CMsgClientToGcUpdateRosterResponse {
12550    #[prost(
12551        enumeration = "c_msg_client_to_gc_update_roster_response::EResponse",
12552        optional,
12553        tag = "1",
12554        default = "KEInternalError"
12555    )]
12556    pub result: ::core::option::Option<i32>,
12557}
12558/// Nested message and enum types in `CMsgClientToGCUpdateRosterResponse`.
12559pub mod c_msg_client_to_gc_update_roster_response {
12560    #[derive(serde::Serialize, serde::Deserialize)]
12561    #[derive(
12562        Clone,
12563        Copy,
12564        Debug,
12565        PartialEq,
12566        Eq,
12567        Hash,
12568        PartialOrd,
12569        Ord,
12570        ::prost::Enumeration
12571    )]
12572    #[repr(i32)]
12573    pub enum EResponse {
12574        KEInternalError = 0,
12575        KESuccess = 1,
12576        KEDisabled = 2,
12577        KETooBusy = 3,
12578        KERateLimited = 4,
12579        KEMmBusy = 5,
12580        KEInvalidHeroSelection = 6,
12581        KEHeroesNotUnlocked = 7,
12582    }
12583    impl EResponse {
12584        /// String value of the enum field names used in the ProtoBuf definition.
12585        ///
12586        /// The values are not transformed in any way and thus are considered stable
12587        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12588        pub fn as_str_name(&self) -> &'static str {
12589            match self {
12590                Self::KEInternalError => "k_eInternalError",
12591                Self::KESuccess => "k_eSuccess",
12592                Self::KEDisabled => "k_eDisabled",
12593                Self::KETooBusy => "k_eTooBusy",
12594                Self::KERateLimited => "k_eRateLimited",
12595                Self::KEMmBusy => "k_eMMBusy",
12596                Self::KEInvalidHeroSelection => "k_eInvalidHeroSelection",
12597                Self::KEHeroesNotUnlocked => "k_eHeroesNotUnlocked",
12598            }
12599        }
12600        /// Creates an enum from field names used in the ProtoBuf definition.
12601        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12602            match value {
12603                "k_eInternalError" => Some(Self::KEInternalError),
12604                "k_eSuccess" => Some(Self::KESuccess),
12605                "k_eDisabled" => Some(Self::KEDisabled),
12606                "k_eTooBusy" => Some(Self::KETooBusy),
12607                "k_eRateLimited" => Some(Self::KERateLimited),
12608                "k_eMMBusy" => Some(Self::KEMmBusy),
12609                "k_eInvalidHeroSelection" => Some(Self::KEInvalidHeroSelection),
12610                "k_eHeroesNotUnlocked" => Some(Self::KEHeroesNotUnlocked),
12611                _ => None,
12612            }
12613        }
12614    }
12615}
12616#[derive(serde::Serialize, serde::Deserialize)]
12617#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12618pub struct CMsgClientToGcGetAccountStats {
12619    #[prost(uint32, optional, tag = "1")]
12620    pub account_id: ::core::option::Option<u32>,
12621    #[prost(bool, optional, tag = "2")]
12622    pub dev_access_hint: ::core::option::Option<bool>,
12623    #[prost(bool, optional, tag = "3")]
12624    pub friend_access_hint: ::core::option::Option<bool>,
12625}
12626#[derive(serde::Serialize, serde::Deserialize)]
12627#[derive(Clone, PartialEq, ::prost::Message)]
12628pub struct CMsgClientToGcGetAccountStatsResponse {
12629    #[prost(
12630        enumeration = "c_msg_client_to_gc_get_account_stats_response::EResult",
12631        optional,
12632        tag = "1",
12633        default = "KEInternalError"
12634    )]
12635    pub result: ::core::option::Option<i32>,
12636    #[prost(message, optional, tag = "2")]
12637    pub stats: ::core::option::Option<CMsgAccountStats>,
12638}
12639/// Nested message and enum types in `CMsgClientToGCGetAccountStatsResponse`.
12640pub mod c_msg_client_to_gc_get_account_stats_response {
12641    #[derive(serde::Serialize, serde::Deserialize)]
12642    #[derive(
12643        Clone,
12644        Copy,
12645        Debug,
12646        PartialEq,
12647        Eq,
12648        Hash,
12649        PartialOrd,
12650        Ord,
12651        ::prost::Enumeration
12652    )]
12653    #[repr(i32)]
12654    pub enum EResult {
12655        KEInternalError = 0,
12656        KESuccess = 1,
12657        KEDisabled = 2,
12658        KETooBusy = 3,
12659        KERateLimited = 4,
12660        KEInvalidPermissions = 5,
12661    }
12662    impl EResult {
12663        /// String value of the enum field names used in the ProtoBuf definition.
12664        ///
12665        /// The values are not transformed in any way and thus are considered stable
12666        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12667        pub fn as_str_name(&self) -> &'static str {
12668            match self {
12669                Self::KEInternalError => "k_eInternalError",
12670                Self::KESuccess => "k_eSuccess",
12671                Self::KEDisabled => "k_eDisabled",
12672                Self::KETooBusy => "k_eTooBusy",
12673                Self::KERateLimited => "k_eRateLimited",
12674                Self::KEInvalidPermissions => "k_eInvalidPermissions",
12675            }
12676        }
12677        /// Creates an enum from field names used in the ProtoBuf definition.
12678        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12679            match value {
12680                "k_eInternalError" => Some(Self::KEInternalError),
12681                "k_eSuccess" => Some(Self::KESuccess),
12682                "k_eDisabled" => Some(Self::KEDisabled),
12683                "k_eTooBusy" => Some(Self::KETooBusy),
12684                "k_eRateLimited" => Some(Self::KERateLimited),
12685                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
12686                _ => None,
12687            }
12688        }
12689    }
12690}
12691#[derive(serde::Serialize, serde::Deserialize)]
12692#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12693pub struct CMsgClientToGcGetMatchMetaData {
12694    #[prost(uint64, optional, tag = "1")]
12695    pub match_id: ::core::option::Option<u64>,
12696    #[prost(uint32, optional, tag = "3")]
12697    pub metadata_salt: ::core::option::Option<u32>,
12698    #[prost(uint32, optional, tag = "4")]
12699    pub target_account_id: ::core::option::Option<u32>,
12700}
12701#[derive(serde::Serialize, serde::Deserialize)]
12702#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12703pub struct CMsgClientToGcGetMatchMetaDataResponse {
12704    #[prost(
12705        enumeration = "c_msg_client_to_gc_get_match_meta_data_response::EResult",
12706        optional,
12707        tag = "1",
12708        default = "KEResultInternalError"
12709    )]
12710    pub result: ::core::option::Option<i32>,
12711    #[prost(uint32, optional, tag = "2")]
12712    pub replay_salt: ::core::option::Option<u32>,
12713    #[prost(uint32, optional, tag = "3")]
12714    pub metadata_salt: ::core::option::Option<u32>,
12715    #[prost(uint32, optional, tag = "4")]
12716    pub replay_valid_through: ::core::option::Option<u32>,
12717    #[prost(uint32, optional, tag = "5")]
12718    pub replay_group_id: ::core::option::Option<u32>,
12719    #[prost(uint32, optional, tag = "6")]
12720    pub replay_processing_through: ::core::option::Option<u32>,
12721}
12722/// Nested message and enum types in `CMsgClientToGCGetMatchMetaDataResponse`.
12723pub mod c_msg_client_to_gc_get_match_meta_data_response {
12724    #[derive(serde::Serialize, serde::Deserialize)]
12725    #[derive(
12726        Clone,
12727        Copy,
12728        Debug,
12729        PartialEq,
12730        Eq,
12731        Hash,
12732        PartialOrd,
12733        Ord,
12734        ::prost::Enumeration
12735    )]
12736    #[repr(i32)]
12737    pub enum EResult {
12738        KEResultInternalError = 0,
12739        KEResultSuccess = 1,
12740        KEResultInvalidPermission = 2,
12741        KEResultTemporarilyDisabled = 3,
12742        KEResultTooBusy = 4,
12743        KEResultRateLimited = 5,
12744        KEResultInvalidMatch = 6,
12745        KEResultMatchInFlight = 7,
12746        KEResultTimeout = 8,
12747    }
12748    impl EResult {
12749        /// String value of the enum field names used in the ProtoBuf definition.
12750        ///
12751        /// The values are not transformed in any way and thus are considered stable
12752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12753        pub fn as_str_name(&self) -> &'static str {
12754            match self {
12755                Self::KEResultInternalError => "k_eResult_InternalError",
12756                Self::KEResultSuccess => "k_eResult_Success",
12757                Self::KEResultInvalidPermission => "k_eResult_InvalidPermission",
12758                Self::KEResultTemporarilyDisabled => "k_eResult_TemporarilyDisabled",
12759                Self::KEResultTooBusy => "k_eResult_TooBusy",
12760                Self::KEResultRateLimited => "k_eResult_RateLimited",
12761                Self::KEResultInvalidMatch => "k_eResult_InvalidMatch",
12762                Self::KEResultMatchInFlight => "k_eResult_MatchInFlight",
12763                Self::KEResultTimeout => "k_eResult_Timeout",
12764            }
12765        }
12766        /// Creates an enum from field names used in the ProtoBuf definition.
12767        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12768            match value {
12769                "k_eResult_InternalError" => Some(Self::KEResultInternalError),
12770                "k_eResult_Success" => Some(Self::KEResultSuccess),
12771                "k_eResult_InvalidPermission" => Some(Self::KEResultInvalidPermission),
12772                "k_eResult_TemporarilyDisabled" => {
12773                    Some(Self::KEResultTemporarilyDisabled)
12774                }
12775                "k_eResult_TooBusy" => Some(Self::KEResultTooBusy),
12776                "k_eResult_RateLimited" => Some(Self::KEResultRateLimited),
12777                "k_eResult_InvalidMatch" => Some(Self::KEResultInvalidMatch),
12778                "k_eResult_MatchInFlight" => Some(Self::KEResultMatchInFlight),
12779                "k_eResult_Timeout" => Some(Self::KEResultTimeout),
12780                _ => None,
12781            }
12782        }
12783    }
12784}
12785#[derive(serde::Serialize, serde::Deserialize)]
12786#[derive(Clone, PartialEq, ::prost::Message)]
12787pub struct CMsgGcToClientDevAnnouncements {
12788    #[prost(message, repeated, tag = "1")]
12789    pub announcements: ::prost::alloc::vec::Vec<
12790        c_msg_gc_to_client_dev_announcements::Announcement,
12791    >,
12792}
12793/// Nested message and enum types in `CMsgGCToClientDevAnnouncements`.
12794pub mod c_msg_gc_to_client_dev_announcements {
12795    #[derive(serde::Serialize, serde::Deserialize)]
12796    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12797    pub struct Announcement {
12798        #[prost(uint32, optional, tag = "1")]
12799        pub priority: ::core::option::Option<u32>,
12800        #[prost(string, optional, tag = "2")]
12801        pub title: ::core::option::Option<::prost::alloc::string::String>,
12802        #[prost(string, optional, tag = "3")]
12803        pub message: ::core::option::Option<::prost::alloc::string::String>,
12804        #[prost(string, optional, tag = "4")]
12805        pub url: ::core::option::Option<::prost::alloc::string::String>,
12806        #[prost(uint32, optional, tag = "5")]
12807        pub unique_id: ::core::option::Option<u32>,
12808        #[prost(uint32, optional, tag = "6")]
12809        pub posted_time: ::core::option::Option<u32>,
12810        #[prost(string, optional, tag = "7")]
12811        pub patch_version: ::core::option::Option<::prost::alloc::string::String>,
12812    }
12813}
12814#[derive(serde::Serialize, serde::Deserialize)]
12815#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12816pub struct CMsgClientToGcModifyDevAnnouncements {
12817    #[prost(
12818        enumeration = "c_msg_client_to_gc_modify_dev_announcements::EOperation",
12819        optional,
12820        tag = "1",
12821        default = "KECreate"
12822    )]
12823    pub operation: ::core::option::Option<i32>,
12824    #[prost(uint32, optional, tag = "2")]
12825    pub target_id: ::core::option::Option<u32>,
12826    #[prost(uint32, optional, tag = "3")]
12827    pub priority: ::core::option::Option<u32>,
12828    #[prost(string, optional, tag = "4")]
12829    pub title: ::core::option::Option<::prost::alloc::string::String>,
12830    #[prost(string, optional, tag = "5")]
12831    pub message: ::core::option::Option<::prost::alloc::string::String>,
12832    #[prost(string, optional, tag = "6")]
12833    pub url: ::core::option::Option<::prost::alloc::string::String>,
12834    #[prost(string, optional, tag = "7")]
12835    pub patch_version: ::core::option::Option<::prost::alloc::string::String>,
12836}
12837/// Nested message and enum types in `CMsgClientToGCModifyDevAnnouncements`.
12838pub mod c_msg_client_to_gc_modify_dev_announcements {
12839    #[derive(serde::Serialize, serde::Deserialize)]
12840    #[derive(
12841        Clone,
12842        Copy,
12843        Debug,
12844        PartialEq,
12845        Eq,
12846        Hash,
12847        PartialOrd,
12848        Ord,
12849        ::prost::Enumeration
12850    )]
12851    #[repr(i32)]
12852    pub enum EOperation {
12853        KECreate = 0,
12854        KEUpdate = 1,
12855        KEDelete = 2,
12856    }
12857    impl EOperation {
12858        /// String value of the enum field names used in the ProtoBuf definition.
12859        ///
12860        /// The values are not transformed in any way and thus are considered stable
12861        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12862        pub fn as_str_name(&self) -> &'static str {
12863            match self {
12864                Self::KECreate => "k_eCreate",
12865                Self::KEUpdate => "k_eUpdate",
12866                Self::KEDelete => "k_eDelete",
12867            }
12868        }
12869        /// Creates an enum from field names used in the ProtoBuf definition.
12870        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12871            match value {
12872                "k_eCreate" => Some(Self::KECreate),
12873                "k_eUpdate" => Some(Self::KEUpdate),
12874                "k_eDelete" => Some(Self::KEDelete),
12875                _ => None,
12876            }
12877        }
12878    }
12879}
12880#[derive(serde::Serialize, serde::Deserialize)]
12881#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
12882pub struct CMsgClientToGcModifyDevAnnouncementsResponse {
12883    #[prost(
12884        enumeration = "c_msg_client_to_gc_modify_dev_announcements_response::EResult",
12885        optional,
12886        tag = "1",
12887        default = "KESuccess"
12888    )]
12889    pub result: ::core::option::Option<i32>,
12890}
12891/// Nested message and enum types in `CMsgClientToGCModifyDevAnnouncementsResponse`.
12892pub mod c_msg_client_to_gc_modify_dev_announcements_response {
12893    #[derive(serde::Serialize, serde::Deserialize)]
12894    #[derive(
12895        Clone,
12896        Copy,
12897        Debug,
12898        PartialEq,
12899        Eq,
12900        Hash,
12901        PartialOrd,
12902        Ord,
12903        ::prost::Enumeration
12904    )]
12905    #[repr(i32)]
12906    pub enum EResult {
12907        KESuccess = 0,
12908        KEInvalidPermission = 1,
12909        KEInvalidTarget = 2,
12910        KEInternalError = 3,
12911    }
12912    impl EResult {
12913        /// String value of the enum field names used in the ProtoBuf definition.
12914        ///
12915        /// The values are not transformed in any way and thus are considered stable
12916        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12917        pub fn as_str_name(&self) -> &'static str {
12918            match self {
12919                Self::KESuccess => "k_eSuccess",
12920                Self::KEInvalidPermission => "k_eInvalidPermission",
12921                Self::KEInvalidTarget => "k_eInvalidTarget",
12922                Self::KEInternalError => "k_eInternalError",
12923            }
12924        }
12925        /// Creates an enum from field names used in the ProtoBuf definition.
12926        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
12927            match value {
12928                "k_eSuccess" => Some(Self::KESuccess),
12929                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
12930                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
12931                "k_eInternalError" => Some(Self::KEInternalError),
12932                _ => None,
12933            }
12934        }
12935    }
12936}
12937#[derive(serde::Serialize, serde::Deserialize)]
12938#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
12939pub struct CMsgClientToGcDevAction {
12940    #[prost(
12941        enumeration = "c_msg_client_to_gc_dev_action::EAction",
12942        optional,
12943        tag = "1",
12944        default = "KESetDeveloper"
12945    )]
12946    pub action: ::core::option::Option<i32>,
12947    #[prost(uint32, optional, tag = "2")]
12948    pub account_id: ::core::option::Option<u32>,
12949    #[prost(uint32, optional, tag = "3")]
12950    pub uint_value: ::core::option::Option<u32>,
12951    #[prost(int32, optional, tag = "4")]
12952    pub int_value: ::core::option::Option<i32>,
12953    #[prost(bool, optional, tag = "5")]
12954    pub bool_value: ::core::option::Option<bool>,
12955    #[prost(string, optional, tag = "6")]
12956    pub str_value: ::core::option::Option<::prost::alloc::string::String>,
12957    #[prost(uint64, optional, tag = "7")]
12958    pub match_id: ::core::option::Option<u64>,
12959}
12960/// Nested message and enum types in `CMsgClientToGCDevAction`.
12961pub mod c_msg_client_to_gc_dev_action {
12962    #[derive(serde::Serialize, serde::Deserialize)]
12963    #[derive(
12964        Clone,
12965        Copy,
12966        Debug,
12967        PartialEq,
12968        Eq,
12969        Hash,
12970        PartialOrd,
12971        Ord,
12972        ::prost::Enumeration
12973    )]
12974    #[repr(i32)]
12975    pub enum EAction {
12976        KESetDeveloper = 1,
12977        KESetMmr = 2,
12978        KESetMmrUncertainty = 3,
12979        KESetHeroStatus = 4,
12980        KESetPermission = 5,
12981        KESetNewPlayerProgress = 6,
12982        KEForceAccountStorage = 7,
12983        KEBookReset = 9,
12984        KEBookXpGrant = 10,
12985        KEBanAccount = 11,
12986        KEExonerateAccount = 12,
12987        KERequireAccountInMm = 13,
12988        KEResetAccountSurvey = 14,
12989    }
12990    impl EAction {
12991        /// String value of the enum field names used in the ProtoBuf definition.
12992        ///
12993        /// The values are not transformed in any way and thus are considered stable
12994        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
12995        pub fn as_str_name(&self) -> &'static str {
12996            match self {
12997                Self::KESetDeveloper => "k_eSetDeveloper",
12998                Self::KESetMmr => "k_eSetMMR",
12999                Self::KESetMmrUncertainty => "k_eSetMMRUncertainty",
13000                Self::KESetHeroStatus => "k_eSetHeroStatus",
13001                Self::KESetPermission => "k_eSetPermission",
13002                Self::KESetNewPlayerProgress => "k_eSetNewPlayerProgress",
13003                Self::KEForceAccountStorage => "k_eForceAccountStorage",
13004                Self::KEBookReset => "k_eBookReset",
13005                Self::KEBookXpGrant => "k_eBookXPGrant",
13006                Self::KEBanAccount => "k_eBanAccount",
13007                Self::KEExonerateAccount => "k_eExonerateAccount",
13008                Self::KERequireAccountInMm => "k_eRequireAccountInMM",
13009                Self::KEResetAccountSurvey => "k_eResetAccountSurvey",
13010            }
13011        }
13012        /// Creates an enum from field names used in the ProtoBuf definition.
13013        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13014            match value {
13015                "k_eSetDeveloper" => Some(Self::KESetDeveloper),
13016                "k_eSetMMR" => Some(Self::KESetMmr),
13017                "k_eSetMMRUncertainty" => Some(Self::KESetMmrUncertainty),
13018                "k_eSetHeroStatus" => Some(Self::KESetHeroStatus),
13019                "k_eSetPermission" => Some(Self::KESetPermission),
13020                "k_eSetNewPlayerProgress" => Some(Self::KESetNewPlayerProgress),
13021                "k_eForceAccountStorage" => Some(Self::KEForceAccountStorage),
13022                "k_eBookReset" => Some(Self::KEBookReset),
13023                "k_eBookXPGrant" => Some(Self::KEBookXpGrant),
13024                "k_eBanAccount" => Some(Self::KEBanAccount),
13025                "k_eExonerateAccount" => Some(Self::KEExonerateAccount),
13026                "k_eRequireAccountInMM" => Some(Self::KERequireAccountInMm),
13027                "k_eResetAccountSurvey" => Some(Self::KEResetAccountSurvey),
13028                _ => None,
13029            }
13030        }
13031    }
13032}
13033#[derive(serde::Serialize, serde::Deserialize)]
13034#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13035pub struct CMsgClientToGcDevActionResponse {
13036    #[prost(
13037        enumeration = "c_msg_client_to_gc_dev_action_response::EResult",
13038        optional,
13039        tag = "1",
13040        default = "KESuccess"
13041    )]
13042    pub result: ::core::option::Option<i32>,
13043}
13044/// Nested message and enum types in `CMsgClientToGCDevActionResponse`.
13045pub mod c_msg_client_to_gc_dev_action_response {
13046    #[derive(serde::Serialize, serde::Deserialize)]
13047    #[derive(
13048        Clone,
13049        Copy,
13050        Debug,
13051        PartialEq,
13052        Eq,
13053        Hash,
13054        PartialOrd,
13055        Ord,
13056        ::prost::Enumeration
13057    )]
13058    #[repr(i32)]
13059    pub enum EResult {
13060        KESuccess = 0,
13061        KEInvalidPermission = 1,
13062        KEInvalidTarget = 2,
13063        KEInternalError = 3,
13064    }
13065    impl EResult {
13066        /// String value of the enum field names used in the ProtoBuf definition.
13067        ///
13068        /// The values are not transformed in any way and thus are considered stable
13069        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13070        pub fn as_str_name(&self) -> &'static str {
13071            match self {
13072                Self::KESuccess => "k_eSuccess",
13073                Self::KEInvalidPermission => "k_eInvalidPermission",
13074                Self::KEInvalidTarget => "k_eInvalidTarget",
13075                Self::KEInternalError => "k_eInternalError",
13076            }
13077        }
13078        /// Creates an enum from field names used in the ProtoBuf definition.
13079        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13080            match value {
13081                "k_eSuccess" => Some(Self::KESuccess),
13082                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
13083                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
13084                "k_eInternalError" => Some(Self::KEInternalError),
13085                _ => None,
13086            }
13087        }
13088    }
13089}
13090#[derive(serde::Serialize, serde::Deserialize)]
13091#[derive(Clone, PartialEq, ::prost::Message)]
13092pub struct CMsgClientToGcRecordClientEvents {
13093    #[prost(message, repeated, tag = "1")]
13094    pub events: ::prost::alloc::vec::Vec<c_msg_client_to_gc_record_client_events::Event>,
13095    #[prost(uint32, optional, tag = "2")]
13096    pub client_run_token: ::core::option::Option<u32>,
13097}
13098/// Nested message and enum types in `CMsgClientToGCRecordClientEvents`.
13099pub mod c_msg_client_to_gc_record_client_events {
13100    #[derive(serde::Serialize, serde::Deserialize)]
13101    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13102    pub struct Event {
13103        #[prost(uint32, optional, tag = "1")]
13104        pub time_stamp: ::core::option::Option<u32>,
13105        #[prost(
13106            enumeration = "super::ECitadelClientAccountEvent",
13107            optional,
13108            tag = "2",
13109            default = "KELaunchedHeroTest"
13110        )]
13111        pub event_id: ::core::option::Option<i32>,
13112        #[prost(uint64, optional, tag = "3")]
13113        pub event_data: ::core::option::Option<u64>,
13114        #[prost(uint32, optional, tag = "4")]
13115        pub client_event_index: ::core::option::Option<u32>,
13116    }
13117}
13118#[derive(serde::Serialize, serde::Deserialize)]
13119#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13120pub struct CMsgClientToGcRecordClientEventsResponse {
13121    #[prost(bool, optional, tag = "1")]
13122    pub success: ::core::option::Option<bool>,
13123}
13124#[derive(serde::Serialize, serde::Deserialize)]
13125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13126pub struct CMsgClientToGcSetNewPlayerProgress {
13127    #[prost(
13128        enumeration = "ECitadelNewPlayerProgressFlag",
13129        optional,
13130        tag = "1",
13131        default = "KENewPlayerProgressGettingStarted"
13132    )]
13133    pub flag: ::core::option::Option<i32>,
13134}
13135#[derive(serde::Serialize, serde::Deserialize)]
13136#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13137pub struct CMsgClientToGcSetNewPlayerProgressResponse {
13138    #[prost(bool, optional, tag = "1")]
13139    pub success: ::core::option::Option<bool>,
13140}
13141#[derive(serde::Serialize, serde::Deserialize)]
13142#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13143pub struct CMsgClientToGcUpdateAccountSync {
13144    #[prost(uint32, repeated, packed = "false", tag = "1")]
13145    pub ids: ::prost::alloc::vec::Vec<u32>,
13146    #[prost(uint32, repeated, packed = "false", tag = "2")]
13147    pub values: ::prost::alloc::vec::Vec<u32>,
13148}
13149#[derive(serde::Serialize, serde::Deserialize)]
13150#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13151pub struct CMsgClientToGcUpdateAccountSyncResponse {
13152    #[prost(
13153        enumeration = "c_msg_client_to_gc_update_account_sync_response::EResponse",
13154        optional,
13155        tag = "1",
13156        default = "KEInternalError"
13157    )]
13158    pub result: ::core::option::Option<i32>,
13159}
13160/// Nested message and enum types in `CMsgClientToGCUpdateAccountSyncResponse`.
13161pub mod c_msg_client_to_gc_update_account_sync_response {
13162    #[derive(serde::Serialize, serde::Deserialize)]
13163    #[derive(
13164        Clone,
13165        Copy,
13166        Debug,
13167        PartialEq,
13168        Eq,
13169        Hash,
13170        PartialOrd,
13171        Ord,
13172        ::prost::Enumeration
13173    )]
13174    #[repr(i32)]
13175    pub enum EResponse {
13176        KEInternalError = 0,
13177        KESuccess = 1,
13178        KEDisabled = 2,
13179        KETooBusy = 3,
13180        KEInvalidMessage = 4,
13181    }
13182    impl EResponse {
13183        /// String value of the enum field names used in the ProtoBuf definition.
13184        ///
13185        /// The values are not transformed in any way and thus are considered stable
13186        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13187        pub fn as_str_name(&self) -> &'static str {
13188            match self {
13189                Self::KEInternalError => "k_eInternalError",
13190                Self::KESuccess => "k_eSuccess",
13191                Self::KEDisabled => "k_eDisabled",
13192                Self::KETooBusy => "k_eTooBusy",
13193                Self::KEInvalidMessage => "k_eInvalidMessage",
13194            }
13195        }
13196        /// Creates an enum from field names used in the ProtoBuf definition.
13197        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13198            match value {
13199                "k_eInternalError" => Some(Self::KEInternalError),
13200                "k_eSuccess" => Some(Self::KESuccess),
13201                "k_eDisabled" => Some(Self::KEDisabled),
13202                "k_eTooBusy" => Some(Self::KETooBusy),
13203                "k_eInvalidMessage" => Some(Self::KEInvalidMessage),
13204                _ => None,
13205            }
13206        }
13207    }
13208}
13209#[derive(serde::Serialize, serde::Deserialize)]
13210#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13211pub struct CMsgClientToGcGetHeroChoice {}
13212#[derive(serde::Serialize, serde::Deserialize)]
13213#[derive(Clone, PartialEq, ::prost::Message)]
13214pub struct CMsgClientToGcGetHeroChoiceResponse {
13215    #[prost(
13216        enumeration = "c_msg_client_to_gc_get_hero_choice_response::EResult",
13217        optional,
13218        tag = "1",
13219        default = "KESuccess"
13220    )]
13221    pub result: ::core::option::Option<i32>,
13222    #[prost(message, repeated, tag = "2")]
13223    pub hero_selections: ::prost::alloc::vec::Vec<
13224        c_msg_client_to_gc_get_hero_choice_response::Hero,
13225    >,
13226    #[prost(uint32, optional, tag = "3")]
13227    pub hero_choice_id: ::core::option::Option<u32>,
13228    #[prost(uint32, optional, tag = "4")]
13229    pub select_count: ::core::option::Option<u32>,
13230}
13231/// Nested message and enum types in `CMsgClientToGCGetHeroChoiceResponse`.
13232pub mod c_msg_client_to_gc_get_hero_choice_response {
13233    #[derive(serde::Serialize, serde::Deserialize)]
13234    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13235    pub struct Hero {
13236        #[prost(uint32, optional, tag = "1")]
13237        pub hero_id: ::core::option::Option<u32>,
13238    }
13239    #[derive(serde::Serialize, serde::Deserialize)]
13240    #[derive(
13241        Clone,
13242        Copy,
13243        Debug,
13244        PartialEq,
13245        Eq,
13246        Hash,
13247        PartialOrd,
13248        Ord,
13249        ::prost::Enumeration
13250    )]
13251    #[repr(i32)]
13252    pub enum EResult {
13253        KESuccess = 0,
13254        KENoChoices = 1,
13255        KEInvalidTarget = 2,
13256        KEInternalError = 3,
13257        KEDisabled = 4,
13258        KETooBusy = 5,
13259        KEChoiceClosed = 6,
13260    }
13261    impl EResult {
13262        /// String value of the enum field names used in the ProtoBuf definition.
13263        ///
13264        /// The values are not transformed in any way and thus are considered stable
13265        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13266        pub fn as_str_name(&self) -> &'static str {
13267            match self {
13268                Self::KESuccess => "k_eSuccess",
13269                Self::KENoChoices => "k_eNoChoices",
13270                Self::KEInvalidTarget => "k_eInvalidTarget",
13271                Self::KEInternalError => "k_eInternalError",
13272                Self::KEDisabled => "k_eDisabled",
13273                Self::KETooBusy => "k_eTooBusy",
13274                Self::KEChoiceClosed => "k_eChoiceClosed",
13275            }
13276        }
13277        /// Creates an enum from field names used in the ProtoBuf definition.
13278        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13279            match value {
13280                "k_eSuccess" => Some(Self::KESuccess),
13281                "k_eNoChoices" => Some(Self::KENoChoices),
13282                "k_eInvalidTarget" => Some(Self::KEInvalidTarget),
13283                "k_eInternalError" => Some(Self::KEInternalError),
13284                "k_eDisabled" => Some(Self::KEDisabled),
13285                "k_eTooBusy" => Some(Self::KETooBusy),
13286                "k_eChoiceClosed" => Some(Self::KEChoiceClosed),
13287                _ => None,
13288            }
13289        }
13290    }
13291}
13292#[derive(serde::Serialize, serde::Deserialize)]
13293#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13294pub struct CMsgClientToGcUnlockHero {
13295    #[prost(uint32, repeated, packed = "false", tag = "1")]
13296    pub hero_ids: ::prost::alloc::vec::Vec<u32>,
13297    #[prost(uint32, optional, tag = "2")]
13298    pub hero_choice_id: ::core::option::Option<u32>,
13299}
13300#[derive(serde::Serialize, serde::Deserialize)]
13301#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13302pub struct CMsgClientToGcUnlockHeroResponse {
13303    #[prost(
13304        enumeration = "c_msg_client_to_gc_unlock_hero_response::EResult",
13305        optional,
13306        tag = "1",
13307        default = "KESuccess"
13308    )]
13309    pub result: ::core::option::Option<i32>,
13310}
13311/// Nested message and enum types in `CMsgClientToGCUnlockHeroResponse`.
13312pub mod c_msg_client_to_gc_unlock_hero_response {
13313    #[derive(serde::Serialize, serde::Deserialize)]
13314    #[derive(
13315        Clone,
13316        Copy,
13317        Debug,
13318        PartialEq,
13319        Eq,
13320        Hash,
13321        PartialOrd,
13322        Ord,
13323        ::prost::Enumeration
13324    )]
13325    #[repr(i32)]
13326    pub enum EResult {
13327        KESuccess = 0,
13328        KEInternalError = 1,
13329        KEInvalidHero = 2,
13330        KEOutOfSync = 3,
13331        KEDisabled = 4,
13332        KETooBusy = 5,
13333    }
13334    impl EResult {
13335        /// String value of the enum field names used in the ProtoBuf definition.
13336        ///
13337        /// The values are not transformed in any way and thus are considered stable
13338        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13339        pub fn as_str_name(&self) -> &'static str {
13340            match self {
13341                Self::KESuccess => "k_eSuccess",
13342                Self::KEInternalError => "k_eInternalError",
13343                Self::KEInvalidHero => "k_eInvalidHero",
13344                Self::KEOutOfSync => "k_eOutOfSync",
13345                Self::KEDisabled => "k_eDisabled",
13346                Self::KETooBusy => "k_eTooBusy",
13347            }
13348        }
13349        /// Creates an enum from field names used in the ProtoBuf definition.
13350        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13351            match value {
13352                "k_eSuccess" => Some(Self::KESuccess),
13353                "k_eInternalError" => Some(Self::KEInternalError),
13354                "k_eInvalidHero" => Some(Self::KEInvalidHero),
13355                "k_eOutOfSync" => Some(Self::KEOutOfSync),
13356                "k_eDisabled" => Some(Self::KEDisabled),
13357                "k_eTooBusy" => Some(Self::KETooBusy),
13358                _ => None,
13359            }
13360        }
13361    }
13362}
13363#[derive(serde::Serialize, serde::Deserialize)]
13364#[derive(Clone, PartialEq, ::prost::Message)]
13365pub struct CMsgAccountBook {
13366    #[prost(uint32, optional, tag = "1")]
13367    pub book_id: ::core::option::Option<u32>,
13368    #[prost(uint32, optional, tag = "2")]
13369    pub book_xp: ::core::option::Option<u32>,
13370    #[prost(uint32, optional, tag = "3")]
13371    pub spent_xp: ::core::option::Option<u32>,
13372    #[prost(message, repeated, tag = "4")]
13373    pub unlocks: ::prost::alloc::vec::Vec<c_msg_account_book::Unlock>,
13374}
13375/// Nested message and enum types in `CMsgAccountBook`.
13376pub mod c_msg_account_book {
13377    #[derive(serde::Serialize, serde::Deserialize)]
13378    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13379    pub struct Unlock {
13380        #[prost(uint32, optional, tag = "1")]
13381        pub unlock_id: ::core::option::Option<u32>,
13382        #[prost(uint32, optional, tag = "2")]
13383        pub flags: ::core::option::Option<u32>,
13384    }
13385}
13386#[derive(serde::Serialize, serde::Deserialize)]
13387#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13388pub struct CMsgClientToGcBookUnlock {
13389    #[prost(uint32, optional, tag = "1")]
13390    pub book_id: ::core::option::Option<u32>,
13391    #[prost(uint32, optional, tag = "2")]
13392    pub unlock_id: ::core::option::Option<u32>,
13393    #[prost(uint32, optional, tag = "3")]
13394    pub expected_cost: ::core::option::Option<u32>,
13395    #[prost(uint32, optional, tag = "4")]
13396    pub client_version: ::core::option::Option<u32>,
13397}
13398#[derive(serde::Serialize, serde::Deserialize)]
13399#[derive(Clone, PartialEq, ::prost::Message)]
13400pub struct CMsgClientToGcBookUnlockResponse {
13401    #[prost(
13402        enumeration = "c_msg_client_to_gc_book_unlock_response::EResult",
13403        optional,
13404        tag = "1",
13405        default = "KESuccess"
13406    )]
13407    pub result: ::core::option::Option<i32>,
13408    #[prost(message, optional, tag = "2")]
13409    pub updated_book: ::core::option::Option<CMsgAccountBook>,
13410}
13411/// Nested message and enum types in `CMsgClientToGCBookUnlockResponse`.
13412pub mod c_msg_client_to_gc_book_unlock_response {
13413    #[derive(serde::Serialize, serde::Deserialize)]
13414    #[derive(
13415        Clone,
13416        Copy,
13417        Debug,
13418        PartialEq,
13419        Eq,
13420        Hash,
13421        PartialOrd,
13422        Ord,
13423        ::prost::Enumeration
13424    )]
13425    #[repr(i32)]
13426    pub enum EResult {
13427        KESuccess = 0,
13428        KEInternalError = 1,
13429        KEOutOfDateClient = 2,
13430        KEInvalidFunds = 3,
13431        KEDisabled = 4,
13432        KETooBusy = 5,
13433        KEAlreadyUnlocked = 6,
13434    }
13435    impl EResult {
13436        /// String value of the enum field names used in the ProtoBuf definition.
13437        ///
13438        /// The values are not transformed in any way and thus are considered stable
13439        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13440        pub fn as_str_name(&self) -> &'static str {
13441            match self {
13442                Self::KESuccess => "k_eSuccess",
13443                Self::KEInternalError => "k_eInternalError",
13444                Self::KEOutOfDateClient => "k_eOutOfDateClient",
13445                Self::KEInvalidFunds => "k_eInvalidFunds",
13446                Self::KEDisabled => "k_eDisabled",
13447                Self::KETooBusy => "k_eTooBusy",
13448                Self::KEAlreadyUnlocked => "k_eAlreadyUnlocked",
13449            }
13450        }
13451        /// Creates an enum from field names used in the ProtoBuf definition.
13452        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13453            match value {
13454                "k_eSuccess" => Some(Self::KESuccess),
13455                "k_eInternalError" => Some(Self::KEInternalError),
13456                "k_eOutOfDateClient" => Some(Self::KEOutOfDateClient),
13457                "k_eInvalidFunds" => Some(Self::KEInvalidFunds),
13458                "k_eDisabled" => Some(Self::KEDisabled),
13459                "k_eTooBusy" => Some(Self::KETooBusy),
13460                "k_eAlreadyUnlocked" => Some(Self::KEAlreadyUnlocked),
13461                _ => None,
13462            }
13463        }
13464    }
13465}
13466#[derive(serde::Serialize, serde::Deserialize)]
13467#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13468pub struct CMsgClientToGcGetBook {
13469    #[prost(uint32, optional, tag = "1")]
13470    pub book_id: ::core::option::Option<u32>,
13471}
13472#[derive(serde::Serialize, serde::Deserialize)]
13473#[derive(Clone, PartialEq, ::prost::Message)]
13474pub struct CMsgClientToGcGetBookResponse {
13475    #[prost(
13476        enumeration = "c_msg_client_to_gc_get_book_response::EResult",
13477        optional,
13478        tag = "1",
13479        default = "KESuccess"
13480    )]
13481    pub result: ::core::option::Option<i32>,
13482    #[prost(message, optional, tag = "2")]
13483    pub book: ::core::option::Option<CMsgAccountBook>,
13484}
13485/// Nested message and enum types in `CMsgClientToGCGetBookResponse`.
13486pub mod c_msg_client_to_gc_get_book_response {
13487    #[derive(serde::Serialize, serde::Deserialize)]
13488    #[derive(
13489        Clone,
13490        Copy,
13491        Debug,
13492        PartialEq,
13493        Eq,
13494        Hash,
13495        PartialOrd,
13496        Ord,
13497        ::prost::Enumeration
13498    )]
13499    #[repr(i32)]
13500    pub enum EResult {
13501        KESuccess = 0,
13502        KEInternalError = 1,
13503        KEInvalidBook = 2,
13504        KEDisabled = 3,
13505        KETooBusy = 4,
13506    }
13507    impl EResult {
13508        /// String value of the enum field names used in the ProtoBuf definition.
13509        ///
13510        /// The values are not transformed in any way and thus are considered stable
13511        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13512        pub fn as_str_name(&self) -> &'static str {
13513            match self {
13514                Self::KESuccess => "k_eSuccess",
13515                Self::KEInternalError => "k_eInternalError",
13516                Self::KEInvalidBook => "k_eInvalidBook",
13517                Self::KEDisabled => "k_eDisabled",
13518                Self::KETooBusy => "k_eTooBusy",
13519            }
13520        }
13521        /// Creates an enum from field names used in the ProtoBuf definition.
13522        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13523            match value {
13524                "k_eSuccess" => Some(Self::KESuccess),
13525                "k_eInternalError" => Some(Self::KEInternalError),
13526                "k_eInvalidBook" => Some(Self::KEInvalidBook),
13527                "k_eDisabled" => Some(Self::KEDisabled),
13528                "k_eTooBusy" => Some(Self::KETooBusy),
13529                _ => None,
13530            }
13531        }
13532    }
13533}
13534#[derive(serde::Serialize, serde::Deserialize)]
13535#[derive(Clone, PartialEq, ::prost::Message)]
13536pub struct CMsgGcToClientBookUpdated {
13537    #[prost(message, optional, tag = "1")]
13538    pub book: ::core::option::Option<CMsgAccountBook>,
13539}
13540#[derive(serde::Serialize, serde::Deserialize)]
13541#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13542pub struct CMsgClientToGcSubmitPlaytestUser {
13543    #[prost(string, optional, tag = "3")]
13544    pub location: ::core::option::Option<::prost::alloc::string::String>,
13545    #[prost(uint32, optional, tag = "4")]
13546    pub target_account_id: ::core::option::Option<u32>,
13547}
13548#[derive(serde::Serialize, serde::Deserialize)]
13549#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13550pub struct CMsgClientToGcSubmitPlaytestUserResponse {
13551    #[prost(
13552        enumeration = "c_msg_client_to_gc_submit_playtest_user_response::EResponse",
13553        optional,
13554        tag = "1",
13555        default = "Success"
13556    )]
13557    pub response: ::core::option::Option<i32>,
13558}
13559/// Nested message and enum types in `CMsgClientToGCSubmitPlaytestUserResponse`.
13560pub mod c_msg_client_to_gc_submit_playtest_user_response {
13561    #[derive(serde::Serialize, serde::Deserialize)]
13562    #[derive(
13563        Clone,
13564        Copy,
13565        Debug,
13566        PartialEq,
13567        Eq,
13568        Hash,
13569        PartialOrd,
13570        Ord,
13571        ::prost::Enumeration
13572    )]
13573    #[repr(i32)]
13574    pub enum EResponse {
13575        Success = 0,
13576        InternalError = 1,
13577        InvalidFriend = 3,
13578        NotFriendsLongEnough = 4,
13579        AlreadyHasGame = 5,
13580        LimitedUser = 6,
13581        InviteLimitReached = 7,
13582    }
13583    impl EResponse {
13584        /// String value of the enum field names used in the ProtoBuf definition.
13585        ///
13586        /// The values are not transformed in any way and thus are considered stable
13587        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13588        pub fn as_str_name(&self) -> &'static str {
13589            match self {
13590                Self::Success => "eResponse_Success",
13591                Self::InternalError => "eResponse_InternalError",
13592                Self::InvalidFriend => "eResponse_InvalidFriend",
13593                Self::NotFriendsLongEnough => "eResponse_NotFriendsLongEnough",
13594                Self::AlreadyHasGame => "eResponse_AlreadyHasGame",
13595                Self::LimitedUser => "eResponse_LimitedUser",
13596                Self::InviteLimitReached => "eResponse_InviteLimitReached",
13597            }
13598        }
13599        /// Creates an enum from field names used in the ProtoBuf definition.
13600        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13601            match value {
13602                "eResponse_Success" => Some(Self::Success),
13603                "eResponse_InternalError" => Some(Self::InternalError),
13604                "eResponse_InvalidFriend" => Some(Self::InvalidFriend),
13605                "eResponse_NotFriendsLongEnough" => Some(Self::NotFriendsLongEnough),
13606                "eResponse_AlreadyHasGame" => Some(Self::AlreadyHasGame),
13607                "eResponse_LimitedUser" => Some(Self::LimitedUser),
13608                "eResponse_InviteLimitReached" => Some(Self::InviteLimitReached),
13609                _ => None,
13610            }
13611        }
13612    }
13613}
13614#[derive(serde::Serialize, serde::Deserialize)]
13615#[derive(Clone, PartialEq, ::prost::Message)]
13616pub struct CMsgClientToGcUpdateHeroBuild {
13617    #[prost(message, optional, tag = "1")]
13618    pub hero_build: ::core::option::Option<CMsgHeroBuild>,
13619}
13620#[derive(serde::Serialize, serde::Deserialize)]
13621#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13622pub struct CMsgClientToGcUpdateHeroBuildResponse {
13623    #[prost(
13624        enumeration = "c_msg_client_to_gc_update_hero_build_response::EResponse",
13625        optional,
13626        tag = "1",
13627        default = "KEInternalError"
13628    )]
13629    pub response: ::core::option::Option<i32>,
13630    #[prost(uint32, optional, tag = "2")]
13631    pub hero_build_id: ::core::option::Option<u32>,
13632    #[prost(uint32, optional, tag = "3")]
13633    pub version: ::core::option::Option<u32>,
13634}
13635/// Nested message and enum types in `CMsgClientToGCUpdateHeroBuildResponse`.
13636pub mod c_msg_client_to_gc_update_hero_build_response {
13637    #[derive(serde::Serialize, serde::Deserialize)]
13638    #[derive(
13639        Clone,
13640        Copy,
13641        Debug,
13642        PartialEq,
13643        Eq,
13644        Hash,
13645        PartialOrd,
13646        Ord,
13647        ::prost::Enumeration
13648    )]
13649    #[repr(i32)]
13650    pub enum EResponse {
13651        KEInternalError = 0,
13652        KESuccess = 1,
13653    }
13654    impl EResponse {
13655        /// String value of the enum field names used in the ProtoBuf definition.
13656        ///
13657        /// The values are not transformed in any way and thus are considered stable
13658        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13659        pub fn as_str_name(&self) -> &'static str {
13660            match self {
13661                Self::KEInternalError => "k_eInternalError",
13662                Self::KESuccess => "k_eSuccess",
13663            }
13664        }
13665        /// Creates an enum from field names used in the ProtoBuf definition.
13666        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13667            match value {
13668                "k_eInternalError" => Some(Self::KEInternalError),
13669                "k_eSuccess" => Some(Self::KESuccess),
13670                _ => None,
13671            }
13672        }
13673    }
13674}
13675#[derive(serde::Serialize, serde::Deserialize)]
13676#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13677pub struct CMsgClientToGcFindHeroBuilds {
13678    #[prost(uint32, optional, tag = "1")]
13679    pub author_account_id: ::core::option::Option<u32>,
13680    #[prost(uint32, optional, tag = "2")]
13681    pub hero_id: ::core::option::Option<u32>,
13682    #[prost(int32, repeated, packed = "false", tag = "3")]
13683    pub language: ::prost::alloc::vec::Vec<i32>,
13684    #[prost(string, optional, tag = "4")]
13685    pub search_text: ::core::option::Option<::prost::alloc::string::String>,
13686    #[prost(uint32, optional, tag = "5")]
13687    pub hero_build_id: ::core::option::Option<u32>,
13688    #[prost(uint32, repeated, packed = "false", tag = "6")]
13689    pub tags: ::prost::alloc::vec::Vec<u32>,
13690}
13691#[derive(serde::Serialize, serde::Deserialize)]
13692#[derive(Clone, PartialEq, ::prost::Message)]
13693pub struct CMsgClientToGcFindHeroBuildsResponse {
13694    #[prost(
13695        enumeration = "c_msg_client_to_gc_find_hero_builds_response::EResponse",
13696        optional,
13697        tag = "1",
13698        default = "KEInternalError"
13699    )]
13700    pub response: ::core::option::Option<i32>,
13701    #[prost(message, repeated, tag = "2")]
13702    pub results: ::prost::alloc::vec::Vec<
13703        c_msg_client_to_gc_find_hero_builds_response::HeroBuildResult,
13704    >,
13705    #[prost(uint32, optional, tag = "3")]
13706    pub build_window_start_time_override: ::core::option::Option<u32>,
13707}
13708/// Nested message and enum types in `CMsgClientToGCFindHeroBuildsResponse`.
13709pub mod c_msg_client_to_gc_find_hero_builds_response {
13710    #[derive(serde::Serialize, serde::Deserialize)]
13711    #[derive(Clone, PartialEq, ::prost::Message)]
13712    pub struct HeroBuildResult {
13713        #[prost(message, optional, tag = "1")]
13714        pub hero_build: ::core::option::Option<super::CMsgHeroBuild>,
13715        #[prost(message, optional, tag = "2")]
13716        pub preference: ::core::option::Option<super::CMsgHeroBuildPreference>,
13717        #[prost(uint32, optional, tag = "3")]
13718        pub num_favorites: ::core::option::Option<u32>,
13719        #[prost(uint32, optional, tag = "4")]
13720        pub num_ignores: ::core::option::Option<u32>,
13721        #[prost(uint32, optional, tag = "5")]
13722        pub num_reports: ::core::option::Option<u32>,
13723        #[prost(uint32, optional, tag = "6")]
13724        pub num_weekly_favorites: ::core::option::Option<u32>,
13725        #[prost(uint32, optional, tag = "7")]
13726        pub num_daily_favorites: ::core::option::Option<u32>,
13727        #[prost(uint32, optional, tag = "8")]
13728        pub rollup_category: ::core::option::Option<u32>,
13729    }
13730    #[derive(serde::Serialize, serde::Deserialize)]
13731    #[derive(
13732        Clone,
13733        Copy,
13734        Debug,
13735        PartialEq,
13736        Eq,
13737        Hash,
13738        PartialOrd,
13739        Ord,
13740        ::prost::Enumeration
13741    )]
13742    #[repr(i32)]
13743    pub enum EResponse {
13744        KEInternalError = 0,
13745        KESuccess = 1,
13746        KETooBusy = 2,
13747    }
13748    impl EResponse {
13749        /// String value of the enum field names used in the ProtoBuf definition.
13750        ///
13751        /// The values are not transformed in any way and thus are considered stable
13752        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13753        pub fn as_str_name(&self) -> &'static str {
13754            match self {
13755                Self::KEInternalError => "k_eInternalError",
13756                Self::KESuccess => "k_eSuccess",
13757                Self::KETooBusy => "k_eTooBusy",
13758            }
13759        }
13760        /// Creates an enum from field names used in the ProtoBuf definition.
13761        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13762            match value {
13763                "k_eInternalError" => Some(Self::KEInternalError),
13764                "k_eSuccess" => Some(Self::KESuccess),
13765                "k_eTooBusy" => Some(Self::KETooBusy),
13766                _ => None,
13767            }
13768        }
13769    }
13770}
13771#[derive(serde::Serialize, serde::Deserialize)]
13772#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13773pub struct CMsgClientToGcUpdateHeroBuildPreference {
13774    #[prost(uint32, optional, tag = "1")]
13775    pub hero_build_id: ::core::option::Option<u32>,
13776    #[prost(message, optional, tag = "2")]
13777    pub preference: ::core::option::Option<CMsgHeroBuildPreference>,
13778}
13779#[derive(serde::Serialize, serde::Deserialize)]
13780#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13781pub struct CMsgClientToGcUpdateHeroBuildPreferenceResponse {
13782    #[prost(
13783        enumeration = "c_msg_client_to_gc_update_hero_build_preference_response::EResponse",
13784        optional,
13785        tag = "1",
13786        default = "KEInternalError"
13787    )]
13788    pub response: ::core::option::Option<i32>,
13789}
13790/// Nested message and enum types in `CMsgClientToGCUpdateHeroBuildPreferenceResponse`.
13791pub mod c_msg_client_to_gc_update_hero_build_preference_response {
13792    #[derive(serde::Serialize, serde::Deserialize)]
13793    #[derive(
13794        Clone,
13795        Copy,
13796        Debug,
13797        PartialEq,
13798        Eq,
13799        Hash,
13800        PartialOrd,
13801        Ord,
13802        ::prost::Enumeration
13803    )]
13804    #[repr(i32)]
13805    pub enum EResponse {
13806        KEInternalError = 0,
13807        KESuccess = 1,
13808    }
13809    impl EResponse {
13810        /// String value of the enum field names used in the ProtoBuf definition.
13811        ///
13812        /// The values are not transformed in any way and thus are considered stable
13813        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13814        pub fn as_str_name(&self) -> &'static str {
13815            match self {
13816                Self::KEInternalError => "k_eInternalError",
13817                Self::KESuccess => "k_eSuccess",
13818            }
13819        }
13820        /// Creates an enum from field names used in the ProtoBuf definition.
13821        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13822            match value {
13823                "k_eInternalError" => Some(Self::KEInternalError),
13824                "k_eSuccess" => Some(Self::KESuccess),
13825                _ => None,
13826            }
13827        }
13828    }
13829}
13830#[derive(serde::Serialize, serde::Deserialize)]
13831#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
13832pub struct CMsgClientToGcReportPlayerFromMatch {
13833    #[prost(uint64, optional, tag = "1")]
13834    pub match_id: ::core::option::Option<u64>,
13835    #[prost(uint32, optional, tag = "2")]
13836    pub target_account_id: ::core::option::Option<u32>,
13837    #[prost(
13838        enumeration = "c_msg_client_to_gc_report_player_from_match::EReportType",
13839        optional,
13840        tag = "3",
13841        default = "KEReportNone"
13842    )]
13843    pub report_type: ::core::option::Option<i32>,
13844    #[prost(string, optional, tag = "4")]
13845    pub report_text: ::core::option::Option<::prost::alloc::string::String>,
13846}
13847/// Nested message and enum types in `CMsgClientToGCReportPlayerFromMatch`.
13848pub mod c_msg_client_to_gc_report_player_from_match {
13849    #[derive(serde::Serialize, serde::Deserialize)]
13850    #[derive(
13851        Clone,
13852        Copy,
13853        Debug,
13854        PartialEq,
13855        Eq,
13856        Hash,
13857        PartialOrd,
13858        Ord,
13859        ::prost::Enumeration
13860    )]
13861    #[repr(i32)]
13862    pub enum EReportType {
13863        KEReportNone = 0,
13864        KEReportVoiceChat = 1,
13865        KEReportGriefing = 2,
13866        KEReportLeftMatch = 3,
13867        KEReportMatchmaking = 4,
13868        KEReportCheating = 5,
13869        KEReportSmurfing = 6,
13870    }
13871    impl EReportType {
13872        /// String value of the enum field names used in the ProtoBuf definition.
13873        ///
13874        /// The values are not transformed in any way and thus are considered stable
13875        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13876        pub fn as_str_name(&self) -> &'static str {
13877            match self {
13878                Self::KEReportNone => "k_eReport_None",
13879                Self::KEReportVoiceChat => "k_eReport_VoiceChat",
13880                Self::KEReportGriefing => "k_eReport_Griefing",
13881                Self::KEReportLeftMatch => "k_eReport_LeftMatch",
13882                Self::KEReportMatchmaking => "k_eReport_Matchmaking",
13883                Self::KEReportCheating => "k_eReport_Cheating",
13884                Self::KEReportSmurfing => "k_eReport_Smurfing",
13885            }
13886        }
13887        /// Creates an enum from field names used in the ProtoBuf definition.
13888        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13889            match value {
13890                "k_eReport_None" => Some(Self::KEReportNone),
13891                "k_eReport_VoiceChat" => Some(Self::KEReportVoiceChat),
13892                "k_eReport_Griefing" => Some(Self::KEReportGriefing),
13893                "k_eReport_LeftMatch" => Some(Self::KEReportLeftMatch),
13894                "k_eReport_Matchmaking" => Some(Self::KEReportMatchmaking),
13895                "k_eReport_Cheating" => Some(Self::KEReportCheating),
13896                "k_eReport_Smurfing" => Some(Self::KEReportSmurfing),
13897                _ => None,
13898            }
13899        }
13900    }
13901}
13902#[derive(serde::Serialize, serde::Deserialize)]
13903#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13904pub struct CMsgClientToGcReportPlayerFromMatchResponse {
13905    #[prost(
13906        enumeration = "c_msg_client_to_gc_report_player_from_match_response::EResponse",
13907        optional,
13908        tag = "1",
13909        default = "KEInternalError"
13910    )]
13911    pub response: ::core::option::Option<i32>,
13912}
13913/// Nested message and enum types in `CMsgClientToGCReportPlayerFromMatchResponse`.
13914pub mod c_msg_client_to_gc_report_player_from_match_response {
13915    #[derive(serde::Serialize, serde::Deserialize)]
13916    #[derive(
13917        Clone,
13918        Copy,
13919        Debug,
13920        PartialEq,
13921        Eq,
13922        Hash,
13923        PartialOrd,
13924        Ord,
13925        ::prost::Enumeration
13926    )]
13927    #[repr(i32)]
13928    pub enum EResponse {
13929        KEInternalError = 0,
13930        KESuccess = 1,
13931        KERateLimited = 2,
13932        KEAlreadyReported = 3,
13933        KEDisabled = 4,
13934        KEInvalidPermissions = 5,
13935        KEReportingWindowExpired = 6,
13936        KETooBusy = 7,
13937        KEBannedFromReporting = 8,
13938        KETimeout = 9,
13939    }
13940    impl EResponse {
13941        /// String value of the enum field names used in the ProtoBuf definition.
13942        ///
13943        /// The values are not transformed in any way and thus are considered stable
13944        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
13945        pub fn as_str_name(&self) -> &'static str {
13946            match self {
13947                Self::KEInternalError => "k_eInternalError",
13948                Self::KESuccess => "k_eSuccess",
13949                Self::KERateLimited => "k_eRateLimited",
13950                Self::KEAlreadyReported => "k_eAlreadyReported",
13951                Self::KEDisabled => "k_eDisabled",
13952                Self::KEInvalidPermissions => "k_eInvalidPermissions",
13953                Self::KEReportingWindowExpired => "k_eReportingWindowExpired",
13954                Self::KETooBusy => "k_eTooBusy",
13955                Self::KEBannedFromReporting => "k_eBannedFromReporting",
13956                Self::KETimeout => "k_eTimeout",
13957            }
13958        }
13959        /// Creates an enum from field names used in the ProtoBuf definition.
13960        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
13961            match value {
13962                "k_eInternalError" => Some(Self::KEInternalError),
13963                "k_eSuccess" => Some(Self::KESuccess),
13964                "k_eRateLimited" => Some(Self::KERateLimited),
13965                "k_eAlreadyReported" => Some(Self::KEAlreadyReported),
13966                "k_eDisabled" => Some(Self::KEDisabled),
13967                "k_eInvalidPermissions" => Some(Self::KEInvalidPermissions),
13968                "k_eReportingWindowExpired" => Some(Self::KEReportingWindowExpired),
13969                "k_eTooBusy" => Some(Self::KETooBusy),
13970                "k_eBannedFromReporting" => Some(Self::KEBannedFromReporting),
13971                "k_eTimeout" => Some(Self::KETimeout),
13972                _ => None,
13973            }
13974        }
13975    }
13976}
13977#[derive(serde::Serialize, serde::Deserialize)]
13978#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
13979pub struct CMsgClientToGcGetAccountMatchReports {
13980    #[prost(uint64, optional, tag = "1")]
13981    pub match_id: ::core::option::Option<u64>,
13982}
13983#[derive(serde::Serialize, serde::Deserialize)]
13984#[derive(Clone, PartialEq, ::prost::Message)]
13985pub struct CMsgClientToGcGetAccountMatchReportsResponse {
13986    #[prost(
13987        enumeration = "c_msg_client_to_gc_get_account_match_reports_response::EResponse",
13988        optional,
13989        tag = "1",
13990        default = "KEInternalError"
13991    )]
13992    pub response: ::core::option::Option<i32>,
13993    #[prost(message, repeated, tag = "2")]
13994    pub reports: ::prost::alloc::vec::Vec<
13995        c_msg_client_to_gc_get_account_match_reports_response::Report,
13996    >,
13997    #[prost(message, repeated, tag = "3")]
13998    pub commends: ::prost::alloc::vec::Vec<
13999        c_msg_client_to_gc_get_account_match_reports_response::Commend,
14000    >,
14001}
14002/// Nested message and enum types in `CMsgClientToGCGetAccountMatchReportsResponse`.
14003pub mod c_msg_client_to_gc_get_account_match_reports_response {
14004    #[derive(serde::Serialize, serde::Deserialize)]
14005    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14006    pub struct Report {
14007        #[prost(uint32, optional, tag = "1")]
14008        pub account_id: ::core::option::Option<u32>,
14009    }
14010    #[derive(serde::Serialize, serde::Deserialize)]
14011    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14012    pub struct Commend {
14013        #[prost(uint32, optional, tag = "1")]
14014        pub account_id: ::core::option::Option<u32>,
14015    }
14016    #[derive(serde::Serialize, serde::Deserialize)]
14017    #[derive(
14018        Clone,
14019        Copy,
14020        Debug,
14021        PartialEq,
14022        Eq,
14023        Hash,
14024        PartialOrd,
14025        Ord,
14026        ::prost::Enumeration
14027    )]
14028    #[repr(i32)]
14029    pub enum EResponse {
14030        KEInternalError = 0,
14031        KESuccess = 1,
14032        KEDisabled = 4,
14033        KETooBusy = 7,
14034    }
14035    impl EResponse {
14036        /// String value of the enum field names used in the ProtoBuf definition.
14037        ///
14038        /// The values are not transformed in any way and thus are considered stable
14039        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14040        pub fn as_str_name(&self) -> &'static str {
14041            match self {
14042                Self::KEInternalError => "k_eInternalError",
14043                Self::KESuccess => "k_eSuccess",
14044                Self::KEDisabled => "k_eDisabled",
14045                Self::KETooBusy => "k_eTooBusy",
14046            }
14047        }
14048        /// Creates an enum from field names used in the ProtoBuf definition.
14049        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14050            match value {
14051                "k_eInternalError" => Some(Self::KEInternalError),
14052                "k_eSuccess" => Some(Self::KESuccess),
14053                "k_eDisabled" => Some(Self::KEDisabled),
14054                "k_eTooBusy" => Some(Self::KETooBusy),
14055                _ => None,
14056            }
14057        }
14058    }
14059}
14060#[derive(serde::Serialize, serde::Deserialize)]
14061#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14062pub struct CMsgClientToGcDeleteHeroBuild {
14063    #[prost(uint32, optional, tag = "1")]
14064    pub author_account_id: ::core::option::Option<u32>,
14065    #[prost(uint32, optional, tag = "2")]
14066    pub hero_build_id: ::core::option::Option<u32>,
14067}
14068#[derive(serde::Serialize, serde::Deserialize)]
14069#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14070pub struct CMsgClientToGcDeleteHeroBuildResponse {
14071    #[prost(
14072        enumeration = "c_msg_client_to_gc_delete_hero_build_response::EResponse",
14073        optional,
14074        tag = "1",
14075        default = "KEInternalError"
14076    )]
14077    pub response: ::core::option::Option<i32>,
14078    #[prost(uint32, optional, tag = "2")]
14079    pub builds_deleted: ::core::option::Option<u32>,
14080}
14081/// Nested message and enum types in `CMsgClientToGCDeleteHeroBuildResponse`.
14082pub mod c_msg_client_to_gc_delete_hero_build_response {
14083    #[derive(serde::Serialize, serde::Deserialize)]
14084    #[derive(
14085        Clone,
14086        Copy,
14087        Debug,
14088        PartialEq,
14089        Eq,
14090        Hash,
14091        PartialOrd,
14092        Ord,
14093        ::prost::Enumeration
14094    )]
14095    #[repr(i32)]
14096    pub enum EResponse {
14097        KEInternalError = 0,
14098        KESuccess = 1,
14099    }
14100    impl EResponse {
14101        /// String value of the enum field names used in the ProtoBuf definition.
14102        ///
14103        /// The values are not transformed in any way and thus are considered stable
14104        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14105        pub fn as_str_name(&self) -> &'static str {
14106            match self {
14107                Self::KEInternalError => "k_eInternalError",
14108                Self::KESuccess => "k_eSuccess",
14109            }
14110        }
14111        /// Creates an enum from field names used in the ProtoBuf definition.
14112        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14113            match value {
14114                "k_eInternalError" => Some(Self::KEInternalError),
14115                "k_eSuccess" => Some(Self::KESuccess),
14116                _ => None,
14117            }
14118        }
14119    }
14120}
14121#[derive(serde::Serialize, serde::Deserialize)]
14122#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14123pub struct CMsgClientToGcGetActiveMatches {}
14124#[derive(serde::Serialize, serde::Deserialize)]
14125#[derive(Clone, PartialEq, ::prost::Message)]
14126pub struct CMsgClientToGcGetActiveMatchesResponse {
14127    #[prost(message, repeated, tag = "1")]
14128    pub active_matches: ::prost::alloc::vec::Vec<CMsgDevMatchInfo>,
14129}
14130#[derive(serde::Serialize, serde::Deserialize)]
14131#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14132pub struct CMsgClientToGcGetDiscordLink {}
14133#[derive(serde::Serialize, serde::Deserialize)]
14134#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14135pub struct CMsgClientToGcGetDiscordLinkResponse {
14136    #[prost(
14137        enumeration = "c_msg_client_to_gc_get_discord_link_response::EResponse",
14138        optional,
14139        tag = "1",
14140        default = "KEInternalError"
14141    )]
14142    pub response: ::core::option::Option<i32>,
14143    #[prost(string, optional, tag = "2")]
14144    pub discord_link: ::core::option::Option<::prost::alloc::string::String>,
14145    #[prost(uint32, optional, tag = "3")]
14146    pub valid_hours: ::core::option::Option<u32>,
14147}
14148/// Nested message and enum types in `CMsgClientToGCGetDiscordLinkResponse`.
14149pub mod c_msg_client_to_gc_get_discord_link_response {
14150    #[derive(serde::Serialize, serde::Deserialize)]
14151    #[derive(
14152        Clone,
14153        Copy,
14154        Debug,
14155        PartialEq,
14156        Eq,
14157        Hash,
14158        PartialOrd,
14159        Ord,
14160        ::prost::Enumeration
14161    )]
14162    #[repr(i32)]
14163    pub enum EResponse {
14164        KEInternalError = 0,
14165        KESuccess = 1,
14166        KEDiscordTooBusy = 2,
14167        KEAlreadyClaimed = 3,
14168        KEDisabled = 4,
14169    }
14170    impl EResponse {
14171        /// String value of the enum field names used in the ProtoBuf definition.
14172        ///
14173        /// The values are not transformed in any way and thus are considered stable
14174        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14175        pub fn as_str_name(&self) -> &'static str {
14176            match self {
14177                Self::KEInternalError => "k_eInternalError",
14178                Self::KESuccess => "k_eSuccess",
14179                Self::KEDiscordTooBusy => "k_eDiscordTooBusy",
14180                Self::KEAlreadyClaimed => "k_eAlreadyClaimed",
14181                Self::KEDisabled => "k_eDisabled",
14182            }
14183        }
14184        /// Creates an enum from field names used in the ProtoBuf definition.
14185        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14186            match value {
14187                "k_eInternalError" => Some(Self::KEInternalError),
14188                "k_eSuccess" => Some(Self::KESuccess),
14189                "k_eDiscordTooBusy" => Some(Self::KEDiscordTooBusy),
14190                "k_eAlreadyClaimed" => Some(Self::KEAlreadyClaimed),
14191                "k_eDisabled" => Some(Self::KEDisabled),
14192                _ => None,
14193            }
14194        }
14195    }
14196}
14197#[derive(serde::Serialize, serde::Deserialize)]
14198#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14199pub struct CMsgClientToGcGrantForumAccess {
14200    #[prost(string, optional, tag = "1")]
14201    pub email: ::core::option::Option<::prost::alloc::string::String>,
14202}
14203#[derive(serde::Serialize, serde::Deserialize)]
14204#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14205pub struct CMsgClientToGcGrantForumAccessResponse {
14206    #[prost(
14207        enumeration = "c_msg_client_to_gc_grant_forum_access_response::EResponse",
14208        optional,
14209        tag = "1",
14210        default = "KEInternalError"
14211    )]
14212    pub response: ::core::option::Option<i32>,
14213    #[prost(string, optional, tag = "2")]
14214    pub email: ::core::option::Option<::prost::alloc::string::String>,
14215    #[prost(string, optional, tag = "3")]
14216    pub username: ::core::option::Option<::prost::alloc::string::String>,
14217    #[prost(string, optional, tag = "4")]
14218    pub forum_password: ::core::option::Option<::prost::alloc::string::String>,
14219}
14220/// Nested message and enum types in `CMsgClientToGCGrantForumAccessResponse`.
14221pub mod c_msg_client_to_gc_grant_forum_access_response {
14222    #[derive(serde::Serialize, serde::Deserialize)]
14223    #[derive(
14224        Clone,
14225        Copy,
14226        Debug,
14227        PartialEq,
14228        Eq,
14229        Hash,
14230        PartialOrd,
14231        Ord,
14232        ::prost::Enumeration
14233    )]
14234    #[repr(i32)]
14235    pub enum EResponse {
14236        KEInternalError = 0,
14237        KESuccess = 1,
14238        KEAlreadyClaimed = 2,
14239        KEDisabled = 3,
14240        KEEmailUsed = 4,
14241    }
14242    impl EResponse {
14243        /// String value of the enum field names used in the ProtoBuf definition.
14244        ///
14245        /// The values are not transformed in any way and thus are considered stable
14246        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14247        pub fn as_str_name(&self) -> &'static str {
14248            match self {
14249                Self::KEInternalError => "k_eInternalError",
14250                Self::KESuccess => "k_eSuccess",
14251                Self::KEAlreadyClaimed => "k_eAlreadyClaimed",
14252                Self::KEDisabled => "k_eDisabled",
14253                Self::KEEmailUsed => "k_eEmailUsed",
14254            }
14255        }
14256        /// Creates an enum from field names used in the ProtoBuf definition.
14257        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14258            match value {
14259                "k_eInternalError" => Some(Self::KEInternalError),
14260                "k_eSuccess" => Some(Self::KESuccess),
14261                "k_eAlreadyClaimed" => Some(Self::KEAlreadyClaimed),
14262                "k_eDisabled" => Some(Self::KEDisabled),
14263                "k_eEmailUsed" => Some(Self::KEEmailUsed),
14264                _ => None,
14265            }
14266        }
14267    }
14268}
14269#[derive(serde::Serialize, serde::Deserialize)]
14270#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14271pub struct CMsgClientToGcModeratorRequest {
14272    #[prost(uint32, optional, tag = "1")]
14273    pub account_id: ::core::option::Option<u32>,
14274}
14275#[derive(serde::Serialize, serde::Deserialize)]
14276#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14277pub struct CMsgClientToGcModeratorRequestResponse {
14278    #[prost(bool, optional, tag = "1")]
14279    pub success: ::core::option::Option<bool>,
14280    #[prost(string, repeated, tag = "2")]
14281    pub response_text: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
14282}
14283#[derive(serde::Serialize, serde::Deserialize)]
14284#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14285pub struct CMsgClientToGcGetFriendGameStatus {
14286    #[prost(bool, optional, tag = "1")]
14287    pub include_invited: ::core::option::Option<bool>,
14288}
14289#[derive(serde::Serialize, serde::Deserialize)]
14290#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14291pub struct CMsgClientToGcGetFriendGameStatusResponse {
14292    #[prost(
14293        enumeration = "c_msg_client_to_gc_get_friend_game_status_response::EResponse",
14294        optional,
14295        tag = "1",
14296        default = "KEInternalError"
14297    )]
14298    pub response: ::core::option::Option<i32>,
14299    #[prost(uint32, repeated, tag = "2")]
14300    pub friends_played_game: ::prost::alloc::vec::Vec<u32>,
14301    #[prost(uint32, repeated, tag = "3")]
14302    pub friends_invited: ::prost::alloc::vec::Vec<u32>,
14303    #[prost(uint32, repeated, tag = "4")]
14304    pub friends_invites_sent: ::prost::alloc::vec::Vec<u32>,
14305}
14306/// Nested message and enum types in `CMsgClientToGCGetFriendGameStatusResponse`.
14307pub mod c_msg_client_to_gc_get_friend_game_status_response {
14308    #[derive(serde::Serialize, serde::Deserialize)]
14309    #[derive(
14310        Clone,
14311        Copy,
14312        Debug,
14313        PartialEq,
14314        Eq,
14315        Hash,
14316        PartialOrd,
14317        Ord,
14318        ::prost::Enumeration
14319    )]
14320    #[repr(i32)]
14321    pub enum EResponse {
14322        KEInternalError = 0,
14323        KESuccess = 1,
14324        KETooBusy = 2,
14325        KEDisabled = 3,
14326    }
14327    impl EResponse {
14328        /// String value of the enum field names used in the ProtoBuf definition.
14329        ///
14330        /// The values are not transformed in any way and thus are considered stable
14331        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14332        pub fn as_str_name(&self) -> &'static str {
14333            match self {
14334                Self::KEInternalError => "k_eInternalError",
14335                Self::KESuccess => "k_eSuccess",
14336                Self::KETooBusy => "k_eTooBusy",
14337                Self::KEDisabled => "k_eDisabled",
14338            }
14339        }
14340        /// Creates an enum from field names used in the ProtoBuf definition.
14341        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14342            match value {
14343                "k_eInternalError" => Some(Self::KEInternalError),
14344                "k_eSuccess" => Some(Self::KESuccess),
14345                "k_eTooBusy" => Some(Self::KETooBusy),
14346                "k_eDisabled" => Some(Self::KEDisabled),
14347                _ => None,
14348            }
14349        }
14350    }
14351}
14352#[derive(serde::Serialize, serde::Deserialize)]
14353#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14354pub struct CMsgClientToGcUpdateSpectatorStatus {
14355    #[prost(fixed64, optional, tag = "1")]
14356    pub spectating_lobby_id: ::core::option::Option<u64>,
14357    #[prost(bool, optional, tag = "2")]
14358    pub stopped_spectating: ::core::option::Option<bool>,
14359}
14360#[derive(serde::Serialize, serde::Deserialize)]
14361#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14362pub struct CMsgClientToGcCommendPlayerFromMatch {
14363    #[prost(uint64, optional, tag = "1")]
14364    pub match_id: ::core::option::Option<u64>,
14365    #[prost(uint32, optional, tag = "2")]
14366    pub target_account_id: ::core::option::Option<u32>,
14367    #[prost(enumeration = "ECommendType", optional, tag = "3", default = "KEInvalid")]
14368    pub commend_type: ::core::option::Option<i32>,
14369    #[prost(uint32, optional, tag = "4")]
14370    pub fake_commend_hero_id: ::core::option::Option<u32>,
14371}
14372#[derive(serde::Serialize, serde::Deserialize)]
14373#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14374pub struct CMsgClientToGcCommendPlayerFromMatchResponse {
14375    #[prost(
14376        enumeration = "c_msg_client_to_gc_commend_player_from_match_response::EResponse",
14377        optional,
14378        tag = "1",
14379        default = "KEInternalError"
14380    )]
14381    pub result: ::core::option::Option<i32>,
14382}
14383/// Nested message and enum types in `CMsgClientToGCCommendPlayerFromMatchResponse`.
14384pub mod c_msg_client_to_gc_commend_player_from_match_response {
14385    #[derive(serde::Serialize, serde::Deserialize)]
14386    #[derive(
14387        Clone,
14388        Copy,
14389        Debug,
14390        PartialEq,
14391        Eq,
14392        Hash,
14393        PartialOrd,
14394        Ord,
14395        ::prost::Enumeration
14396    )]
14397    #[repr(i32)]
14398    pub enum EResponse {
14399        KEInternalError = 0,
14400        KESuccess = 1,
14401        KEDisabled = 2,
14402        KETooBusy = 3,
14403        KERateLimited = 4,
14404        KETimeout = 5,
14405    }
14406    impl EResponse {
14407        /// String value of the enum field names used in the ProtoBuf definition.
14408        ///
14409        /// The values are not transformed in any way and thus are considered stable
14410        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14411        pub fn as_str_name(&self) -> &'static str {
14412            match self {
14413                Self::KEInternalError => "k_eInternalError",
14414                Self::KESuccess => "k_eSuccess",
14415                Self::KEDisabled => "k_eDisabled",
14416                Self::KETooBusy => "k_eTooBusy",
14417                Self::KERateLimited => "k_eRateLimited",
14418                Self::KETimeout => "k_eTimeout",
14419            }
14420        }
14421        /// Creates an enum from field names used in the ProtoBuf definition.
14422        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14423            match value {
14424                "k_eInternalError" => Some(Self::KEInternalError),
14425                "k_eSuccess" => Some(Self::KESuccess),
14426                "k_eDisabled" => Some(Self::KEDisabled),
14427                "k_eTooBusy" => Some(Self::KETooBusy),
14428                "k_eRateLimited" => Some(Self::KERateLimited),
14429                "k_eTimeout" => Some(Self::KETimeout),
14430                _ => None,
14431            }
14432        }
14433    }
14434}
14435#[derive(serde::Serialize, serde::Deserialize)]
14436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14437pub struct CMsgGcToClientCommendNotification {
14438    #[prost(uint32, optional, tag = "1")]
14439    pub commender_account_id: ::core::option::Option<u32>,
14440    #[prost(string, optional, tag = "2")]
14441    pub commender_name: ::core::option::Option<::prost::alloc::string::String>,
14442    #[prost(uint32, optional, tag = "4")]
14443    pub commender_hero_id: ::core::option::Option<u32>,
14444    #[prost(enumeration = "ECommendType", optional, tag = "5", default = "KEInvalid")]
14445    pub commend_type: ::core::option::Option<i32>,
14446    #[prost(uint64, optional, tag = "6")]
14447    pub match_id: ::core::option::Option<u64>,
14448    #[prost(bool, optional, tag = "7")]
14449    pub enemy_commend: ::core::option::Option<bool>,
14450}
14451#[derive(serde::Serialize, serde::Deserialize)]
14452#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14453pub struct CMsgClientToGcRequestCheatReports {}
14454#[derive(serde::Serialize, serde::Deserialize)]
14455#[derive(Clone, PartialEq, ::prost::Message)]
14456pub struct CMsgClientToGcRequestCheatReportsResponse {
14457    #[prost(
14458        enumeration = "c_msg_client_to_gc_request_cheat_reports_response::EResult",
14459        optional,
14460        tag = "1",
14461        default = "KESuccess"
14462    )]
14463    pub result: ::core::option::Option<i32>,
14464    #[prost(message, repeated, tag = "2")]
14465    pub cheat_reports: ::prost::alloc::vec::Vec<
14466        c_msg_client_to_gc_request_cheat_reports_response::RecentCheatReport,
14467    >,
14468}
14469/// Nested message and enum types in `CMsgClientToGCRequestCheatReportsResponse`.
14470pub mod c_msg_client_to_gc_request_cheat_reports_response {
14471    #[derive(serde::Serialize, serde::Deserialize)]
14472    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14473    pub struct RecentCheatReport {
14474        #[prost(uint32, optional, tag = "1")]
14475        pub account_id: ::core::option::Option<u32>,
14476        #[prost(uint64, optional, tag = "2")]
14477        pub match_id: ::core::option::Option<u64>,
14478        #[prost(uint32, optional, tag = "3")]
14479        pub hero_id: ::core::option::Option<u32>,
14480    }
14481    #[derive(serde::Serialize, serde::Deserialize)]
14482    #[derive(
14483        Clone,
14484        Copy,
14485        Debug,
14486        PartialEq,
14487        Eq,
14488        Hash,
14489        PartialOrd,
14490        Ord,
14491        ::prost::Enumeration
14492    )]
14493    #[repr(i32)]
14494    pub enum EResult {
14495        KESuccess = 0,
14496        KEInvalidPermission = 1,
14497        KEInternalError = 2,
14498    }
14499    impl EResult {
14500        /// String value of the enum field names used in the ProtoBuf definition.
14501        ///
14502        /// The values are not transformed in any way and thus are considered stable
14503        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14504        pub fn as_str_name(&self) -> &'static str {
14505            match self {
14506                Self::KESuccess => "k_eSuccess",
14507                Self::KEInvalidPermission => "k_eInvalidPermission",
14508                Self::KEInternalError => "k_eInternalError",
14509            }
14510        }
14511        /// Creates an enum from field names used in the ProtoBuf definition.
14512        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14513            match value {
14514                "k_eSuccess" => Some(Self::KESuccess),
14515                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14516                "k_eInternalError" => Some(Self::KEInternalError),
14517                _ => None,
14518            }
14519        }
14520    }
14521}
14522#[derive(serde::Serialize, serde::Deserialize)]
14523#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14524pub struct CMsgClientToGcGetHeroMmrRankings {
14525    #[prost(uint32, optional, tag = "1")]
14526    pub target_account_id: ::core::option::Option<u32>,
14527}
14528#[derive(serde::Serialize, serde::Deserialize)]
14529#[derive(Clone, PartialEq, ::prost::Message)]
14530pub struct CMsgClientToGcGetHeroMmrRankingsResponse {
14531    #[prost(
14532        enumeration = "c_msg_client_to_gc_get_hero_mmr_rankings_response::EResult",
14533        optional,
14534        tag = "1",
14535        default = "KESuccess"
14536    )]
14537    pub result: ::core::option::Option<i32>,
14538    #[prost(message, repeated, tag = "2")]
14539    pub heroes: ::prost::alloc::vec::Vec<
14540        c_msg_client_to_gc_get_hero_mmr_rankings_response::Hero,
14541    >,
14542}
14543/// Nested message and enum types in `CMsgClientToGCGetHeroMMRRankingsResponse`.
14544pub mod c_msg_client_to_gc_get_hero_mmr_rankings_response {
14545    #[derive(serde::Serialize, serde::Deserialize)]
14546    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14547    pub struct Hero {
14548        #[prost(uint32, optional, tag = "1")]
14549        pub hero_id: ::core::option::Option<u32>,
14550        #[prost(int32, optional, tag = "2")]
14551        pub relative_mmr: ::core::option::Option<i32>,
14552    }
14553    #[derive(serde::Serialize, serde::Deserialize)]
14554    #[derive(
14555        Clone,
14556        Copy,
14557        Debug,
14558        PartialEq,
14559        Eq,
14560        Hash,
14561        PartialOrd,
14562        Ord,
14563        ::prost::Enumeration
14564    )]
14565    #[repr(i32)]
14566    pub enum EResult {
14567        KESuccess = 0,
14568        KEInvalidPermission = 1,
14569        KEInternalError = 2,
14570        KETooBusy = 3,
14571    }
14572    impl EResult {
14573        /// String value of the enum field names used in the ProtoBuf definition.
14574        ///
14575        /// The values are not transformed in any way and thus are considered stable
14576        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14577        pub fn as_str_name(&self) -> &'static str {
14578            match self {
14579                Self::KESuccess => "k_eSuccess",
14580                Self::KEInvalidPermission => "k_eInvalidPermission",
14581                Self::KEInternalError => "k_eInternalError",
14582                Self::KETooBusy => "k_eTooBusy",
14583            }
14584        }
14585        /// Creates an enum from field names used in the ProtoBuf definition.
14586        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14587            match value {
14588                "k_eSuccess" => Some(Self::KESuccess),
14589                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14590                "k_eInternalError" => Some(Self::KEInternalError),
14591                "k_eTooBusy" => Some(Self::KETooBusy),
14592                _ => None,
14593            }
14594        }
14595    }
14596}
14597#[derive(serde::Serialize, serde::Deserialize)]
14598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14599pub struct CMsgClientToGcGetLeaderboard {
14600    #[prost(
14601        enumeration = "ECitadelLeaderboardRegion",
14602        optional,
14603        tag = "1",
14604        default = "KECitadelLeaderboardRegionNone"
14605    )]
14606    pub leaderboard_region: ::core::option::Option<i32>,
14607    #[prost(uint32, optional, tag = "2")]
14608    pub hero_id: ::core::option::Option<u32>,
14609}
14610#[derive(serde::Serialize, serde::Deserialize)]
14611#[derive(Clone, PartialEq, ::prost::Message)]
14612pub struct CMsgClientToGcGetLeaderboardResponse {
14613    #[prost(
14614        enumeration = "c_msg_client_to_gc_get_leaderboard_response::EResult",
14615        optional,
14616        tag = "1",
14617        default = "KESuccess"
14618    )]
14619    pub result: ::core::option::Option<i32>,
14620    #[prost(message, repeated, tag = "2")]
14621    pub entries: ::prost::alloc::vec::Vec<
14622        c_msg_client_to_gc_get_leaderboard_response::LeaderboardEntry,
14623    >,
14624    #[prost(int32, optional, tag = "3", default = "-1")]
14625    pub local_player_index: ::core::option::Option<i32>,
14626}
14627/// Nested message and enum types in `CMsgClientToGCGetLeaderboardResponse`.
14628pub mod c_msg_client_to_gc_get_leaderboard_response {
14629    #[derive(serde::Serialize, serde::Deserialize)]
14630    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
14631    pub struct LeaderboardEntry {
14632        #[prost(string, optional, tag = "1")]
14633        pub account_name: ::core::option::Option<::prost::alloc::string::String>,
14634        #[prost(uint32, optional, tag = "2")]
14635        pub rank: ::core::option::Option<u32>,
14636        #[prost(uint32, repeated, packed = "false", tag = "3")]
14637        pub top_hero_ids: ::prost::alloc::vec::Vec<u32>,
14638        #[prost(uint32, optional, tag = "4")]
14639        pub badge_level: ::core::option::Option<u32>,
14640    }
14641    #[derive(serde::Serialize, serde::Deserialize)]
14642    #[derive(
14643        Clone,
14644        Copy,
14645        Debug,
14646        PartialEq,
14647        Eq,
14648        Hash,
14649        PartialOrd,
14650        Ord,
14651        ::prost::Enumeration
14652    )]
14653    #[repr(i32)]
14654    pub enum EResult {
14655        KESuccess = 0,
14656        KEInvalidArguments = 1,
14657        KEInternalError = 2,
14658        KETooBusy = 3,
14659    }
14660    impl EResult {
14661        /// String value of the enum field names used in the ProtoBuf definition.
14662        ///
14663        /// The values are not transformed in any way and thus are considered stable
14664        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14665        pub fn as_str_name(&self) -> &'static str {
14666            match self {
14667                Self::KESuccess => "k_eSuccess",
14668                Self::KEInvalidArguments => "k_eInvalidArguments",
14669                Self::KEInternalError => "k_eInternalError",
14670                Self::KETooBusy => "k_eTooBusy",
14671            }
14672        }
14673        /// Creates an enum from field names used in the ProtoBuf definition.
14674        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14675            match value {
14676                "k_eSuccess" => Some(Self::KESuccess),
14677                "k_eInvalidArguments" => Some(Self::KEInvalidArguments),
14678                "k_eInternalError" => Some(Self::KEInternalError),
14679                "k_eTooBusy" => Some(Self::KETooBusy),
14680                _ => None,
14681            }
14682        }
14683    }
14684}
14685#[derive(serde::Serialize, serde::Deserialize)]
14686#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14687pub struct CMsgClientToGcGetAccountLeaderboards {
14688    #[prost(uint32, optional, tag = "1")]
14689    pub account_id: ::core::option::Option<u32>,
14690}
14691#[derive(serde::Serialize, serde::Deserialize)]
14692#[derive(Clone, PartialEq, ::prost::Message)]
14693pub struct CMsgClientToGcGetAccountLeaderboardsResponse {
14694    #[prost(
14695        enumeration = "c_msg_client_to_gc_get_account_leaderboards_response::EResult",
14696        optional,
14697        tag = "1",
14698        default = "KESuccess"
14699    )]
14700    pub result: ::core::option::Option<i32>,
14701    #[prost(string, optional, tag = "2")]
14702    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
14703    #[prost(message, repeated, tag = "3")]
14704    pub entries: ::prost::alloc::vec::Vec<
14705        c_msg_client_to_gc_get_account_leaderboards_response::LeaderboardEntry,
14706    >,
14707}
14708/// Nested message and enum types in `CMsgClientToGCGetAccountLeaderboardsResponse`.
14709pub mod c_msg_client_to_gc_get_account_leaderboards_response {
14710    #[derive(serde::Serialize, serde::Deserialize)]
14711    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14712    pub struct LeaderboardEntry {
14713        #[prost(
14714            enumeration = "super::ECitadelLeaderboardRegion",
14715            optional,
14716            tag = "1",
14717            default = "KECitadelLeaderboardRegionNone"
14718        )]
14719        pub region: ::core::option::Option<i32>,
14720        #[prost(uint32, optional, tag = "2")]
14721        pub hero_id: ::core::option::Option<u32>,
14722        #[prost(uint32, optional, tag = "3")]
14723        pub rank: ::core::option::Option<u32>,
14724    }
14725    #[derive(serde::Serialize, serde::Deserialize)]
14726    #[derive(
14727        Clone,
14728        Copy,
14729        Debug,
14730        PartialEq,
14731        Eq,
14732        Hash,
14733        PartialOrd,
14734        Ord,
14735        ::prost::Enumeration
14736    )]
14737    #[repr(i32)]
14738    pub enum EResult {
14739        KESuccess = 0,
14740        KEInvalidPermission = 1,
14741        KEInternalError = 2,
14742        KETooBusy = 3,
14743    }
14744    impl EResult {
14745        /// String value of the enum field names used in the ProtoBuf definition.
14746        ///
14747        /// The values are not transformed in any way and thus are considered stable
14748        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14749        pub fn as_str_name(&self) -> &'static str {
14750            match self {
14751                Self::KESuccess => "k_eSuccess",
14752                Self::KEInvalidPermission => "k_eInvalidPermission",
14753                Self::KEInternalError => "k_eInternalError",
14754                Self::KETooBusy => "k_eTooBusy",
14755            }
14756        }
14757        /// Creates an enum from field names used in the ProtoBuf definition.
14758        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14759            match value {
14760                "k_eSuccess" => Some(Self::KESuccess),
14761                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
14762                "k_eInternalError" => Some(Self::KEInternalError),
14763                "k_eTooBusy" => Some(Self::KETooBusy),
14764                _ => None,
14765            }
14766        }
14767    }
14768}
14769#[derive(serde::Serialize, serde::Deserialize)]
14770#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14771pub struct CMsgClientToGcGenerateChallengeSet {}
14772#[derive(serde::Serialize, serde::Deserialize)]
14773#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14774pub struct CMsgClientToGcGenerateChallengeSetResponse {
14775    #[prost(
14776        enumeration = "c_msg_client_to_gc_generate_challenge_set_response::EResult",
14777        optional,
14778        tag = "1",
14779        default = "KESuccess"
14780    )]
14781    pub result: ::core::option::Option<i32>,
14782}
14783/// Nested message and enum types in `CMsgClientToGCGenerateChallengeSetResponse`.
14784pub mod c_msg_client_to_gc_generate_challenge_set_response {
14785    #[derive(serde::Serialize, serde::Deserialize)]
14786    #[derive(
14787        Clone,
14788        Copy,
14789        Debug,
14790        PartialEq,
14791        Eq,
14792        Hash,
14793        PartialOrd,
14794        Ord,
14795        ::prost::Enumeration
14796    )]
14797    #[repr(i32)]
14798    pub enum EResult {
14799        KESuccess = 0,
14800        KEInternalError = 1,
14801        KEChallengeActive = 2,
14802        KEChallengeChoiceExists = 3,
14803    }
14804    impl EResult {
14805        /// String value of the enum field names used in the ProtoBuf definition.
14806        ///
14807        /// The values are not transformed in any way and thus are considered stable
14808        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14809        pub fn as_str_name(&self) -> &'static str {
14810            match self {
14811                Self::KESuccess => "k_eSuccess",
14812                Self::KEInternalError => "k_eInternalError",
14813                Self::KEChallengeActive => "k_eChallengeActive",
14814                Self::KEChallengeChoiceExists => "k_eChallengeChoiceExists",
14815            }
14816        }
14817        /// Creates an enum from field names used in the ProtoBuf definition.
14818        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14819            match value {
14820                "k_eSuccess" => Some(Self::KESuccess),
14821                "k_eInternalError" => Some(Self::KEInternalError),
14822                "k_eChallengeActive" => Some(Self::KEChallengeActive),
14823                "k_eChallengeChoiceExists" => Some(Self::KEChallengeChoiceExists),
14824                _ => None,
14825            }
14826        }
14827    }
14828}
14829#[derive(serde::Serialize, serde::Deserialize)]
14830#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14831pub struct CMsgClientToGcChallengeActivate {
14832    #[prost(uint64, optional, tag = "1")]
14833    pub challenge_id: ::core::option::Option<u64>,
14834}
14835#[derive(serde::Serialize, serde::Deserialize)]
14836#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14837pub struct CMsgClientToGcChallengeActivateResponse {
14838    #[prost(
14839        enumeration = "c_msg_client_to_gc_challenge_activate_response::EResult",
14840        optional,
14841        tag = "1",
14842        default = "KESuccess"
14843    )]
14844    pub result: ::core::option::Option<i32>,
14845}
14846/// Nested message and enum types in `CMsgClientToGCChallengeActivateResponse`.
14847pub mod c_msg_client_to_gc_challenge_activate_response {
14848    #[derive(serde::Serialize, serde::Deserialize)]
14849    #[derive(
14850        Clone,
14851        Copy,
14852        Debug,
14853        PartialEq,
14854        Eq,
14855        Hash,
14856        PartialOrd,
14857        Ord,
14858        ::prost::Enumeration
14859    )]
14860    #[repr(i32)]
14861    pub enum EResult {
14862        KESuccess = 0,
14863        KEInternalError = 1,
14864        KEInvalidChallenge = 2,
14865    }
14866    impl EResult {
14867        /// String value of the enum field names used in the ProtoBuf definition.
14868        ///
14869        /// The values are not transformed in any way and thus are considered stable
14870        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14871        pub fn as_str_name(&self) -> &'static str {
14872            match self {
14873                Self::KESuccess => "k_eSuccess",
14874                Self::KEInternalError => "k_eInternalError",
14875                Self::KEInvalidChallenge => "k_eInvalidChallenge",
14876            }
14877        }
14878        /// Creates an enum from field names used in the ProtoBuf definition.
14879        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14880            match value {
14881                "k_eSuccess" => Some(Self::KESuccess),
14882                "k_eInternalError" => Some(Self::KEInternalError),
14883                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
14884                _ => None,
14885            }
14886        }
14887    }
14888}
14889#[derive(serde::Serialize, serde::Deserialize)]
14890#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14891pub struct CMsgClientToGcChallengeClaim {
14892    #[prost(uint64, optional, tag = "1")]
14893    pub challenge_id: ::core::option::Option<u64>,
14894}
14895#[derive(serde::Serialize, serde::Deserialize)]
14896#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14897pub struct CMsgClientToGcChallengeClaimResponse {
14898    #[prost(
14899        enumeration = "c_msg_client_to_gc_challenge_claim_response::EResult",
14900        optional,
14901        tag = "1",
14902        default = "KESuccess"
14903    )]
14904    pub result: ::core::option::Option<i32>,
14905}
14906/// Nested message and enum types in `CMsgClientToGCChallengeClaimResponse`.
14907pub mod c_msg_client_to_gc_challenge_claim_response {
14908    #[derive(serde::Serialize, serde::Deserialize)]
14909    #[derive(
14910        Clone,
14911        Copy,
14912        Debug,
14913        PartialEq,
14914        Eq,
14915        Hash,
14916        PartialOrd,
14917        Ord,
14918        ::prost::Enumeration
14919    )]
14920    #[repr(i32)]
14921    pub enum EResult {
14922        KESuccess = 0,
14923        KEInternalError = 1,
14924        KEInvalidChallenge = 2,
14925        KEChallengeIncomplete = 3,
14926    }
14927    impl EResult {
14928        /// String value of the enum field names used in the ProtoBuf definition.
14929        ///
14930        /// The values are not transformed in any way and thus are considered stable
14931        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14932        pub fn as_str_name(&self) -> &'static str {
14933            match self {
14934                Self::KESuccess => "k_eSuccess",
14935                Self::KEInternalError => "k_eInternalError",
14936                Self::KEInvalidChallenge => "k_eInvalidChallenge",
14937                Self::KEChallengeIncomplete => "k_eChallengeIncomplete",
14938            }
14939        }
14940        /// Creates an enum from field names used in the ProtoBuf definition.
14941        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
14942            match value {
14943                "k_eSuccess" => Some(Self::KESuccess),
14944                "k_eInternalError" => Some(Self::KEInternalError),
14945                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
14946                "k_eChallengeIncomplete" => Some(Self::KEChallengeIncomplete),
14947                _ => None,
14948            }
14949        }
14950    }
14951}
14952#[derive(serde::Serialize, serde::Deserialize)]
14953#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14954pub struct CMsgClientToGcChallengeCancel {
14955    #[prost(uint64, optional, tag = "1")]
14956    pub challenge_id: ::core::option::Option<u64>,
14957}
14958#[derive(serde::Serialize, serde::Deserialize)]
14959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
14960pub struct CMsgClientToGcChallengeCancelResponse {
14961    #[prost(
14962        enumeration = "c_msg_client_to_gc_challenge_cancel_response::EResult",
14963        optional,
14964        tag = "1",
14965        default = "KESuccess"
14966    )]
14967    pub result: ::core::option::Option<i32>,
14968}
14969/// Nested message and enum types in `CMsgClientToGCChallengeCancelResponse`.
14970pub mod c_msg_client_to_gc_challenge_cancel_response {
14971    #[derive(serde::Serialize, serde::Deserialize)]
14972    #[derive(
14973        Clone,
14974        Copy,
14975        Debug,
14976        PartialEq,
14977        Eq,
14978        Hash,
14979        PartialOrd,
14980        Ord,
14981        ::prost::Enumeration
14982    )]
14983    #[repr(i32)]
14984    pub enum EResult {
14985        KESuccess = 0,
14986        KEInternalError = 1,
14987        KEInvalidChallenge = 2,
14988        KEChallengeComplete = 3,
14989    }
14990    impl EResult {
14991        /// String value of the enum field names used in the ProtoBuf definition.
14992        ///
14993        /// The values are not transformed in any way and thus are considered stable
14994        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
14995        pub fn as_str_name(&self) -> &'static str {
14996            match self {
14997                Self::KESuccess => "k_eSuccess",
14998                Self::KEInternalError => "k_eInternalError",
14999                Self::KEInvalidChallenge => "k_eInvalidChallenge",
15000                Self::KEChallengeComplete => "k_eChallengeComplete",
15001            }
15002        }
15003        /// Creates an enum from field names used in the ProtoBuf definition.
15004        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15005            match value {
15006                "k_eSuccess" => Some(Self::KESuccess),
15007                "k_eInternalError" => Some(Self::KEInternalError),
15008                "k_eInvalidChallenge" => Some(Self::KEInvalidChallenge),
15009                "k_eChallengeComplete" => Some(Self::KEChallengeComplete),
15010                _ => None,
15011            }
15012        }
15013    }
15014}
15015#[derive(serde::Serialize, serde::Deserialize)]
15016#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15017pub struct CMsgSurveyQuestion {
15018    #[prost(uint32, optional, tag = "1")]
15019    pub question_id: ::core::option::Option<u32>,
15020    #[prost(
15021        enumeration = "c_msg_survey_question::EQuestionType",
15022        optional,
15023        tag = "2",
15024        default = "KEInvalid"
15025    )]
15026    pub question_type: ::core::option::Option<i32>,
15027    #[prost(uint32, repeated, packed = "false", tag = "3")]
15028    pub question_params: ::prost::alloc::vec::Vec<u32>,
15029    #[prost(uint32, optional, tag = "4")]
15030    pub remaining_questions: ::core::option::Option<u32>,
15031    #[prost(uint32, optional, tag = "5")]
15032    pub answered_questions: ::core::option::Option<u32>,
15033}
15034/// Nested message and enum types in `CMsgSurveyQuestion`.
15035pub mod c_msg_survey_question {
15036    #[derive(serde::Serialize, serde::Deserialize)]
15037    #[derive(
15038        Clone,
15039        Copy,
15040        Debug,
15041        PartialEq,
15042        Eq,
15043        Hash,
15044        PartialOrd,
15045        Ord,
15046        ::prost::Enumeration
15047    )]
15048    #[repr(i32)]
15049    pub enum EQuestionType {
15050        KEInvalid = 0,
15051        KEItemPower = 1,
15052        KEItemDesign = 2,
15053        KEHeroPlayAgainst = 3,
15054        KEMoreFunHero = 4,
15055        KEHeroPower = 5,
15056    }
15057    impl EQuestionType {
15058        /// String value of the enum field names used in the ProtoBuf definition.
15059        ///
15060        /// The values are not transformed in any way and thus are considered stable
15061        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15062        pub fn as_str_name(&self) -> &'static str {
15063            match self {
15064                Self::KEInvalid => "k_eInvalid",
15065                Self::KEItemPower => "k_eItemPower",
15066                Self::KEItemDesign => "k_eItemDesign",
15067                Self::KEHeroPlayAgainst => "k_eHeroPlayAgainst",
15068                Self::KEMoreFunHero => "k_eMoreFunHero",
15069                Self::KEHeroPower => "k_eHeroPower",
15070            }
15071        }
15072        /// Creates an enum from field names used in the ProtoBuf definition.
15073        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15074            match value {
15075                "k_eInvalid" => Some(Self::KEInvalid),
15076                "k_eItemPower" => Some(Self::KEItemPower),
15077                "k_eItemDesign" => Some(Self::KEItemDesign),
15078                "k_eHeroPlayAgainst" => Some(Self::KEHeroPlayAgainst),
15079                "k_eMoreFunHero" => Some(Self::KEMoreFunHero),
15080                "k_eHeroPower" => Some(Self::KEHeroPower),
15081                _ => None,
15082            }
15083        }
15084    }
15085}
15086#[derive(serde::Serialize, serde::Deserialize)]
15087#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15088pub struct CMsgClientToGcGetSurveyQuestion {}
15089#[derive(serde::Serialize, serde::Deserialize)]
15090#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15091pub struct CMsgClientToGcGetSurveyQuestionResponse {
15092    #[prost(
15093        enumeration = "c_msg_client_to_gc_get_survey_question_response::EResult",
15094        optional,
15095        tag = "1",
15096        default = "KESuccess"
15097    )]
15098    pub result: ::core::option::Option<i32>,
15099    #[prost(message, optional, tag = "2")]
15100    pub question: ::core::option::Option<CMsgSurveyQuestion>,
15101}
15102/// Nested message and enum types in `CMsgClientToGCGetSurveyQuestionResponse`.
15103pub mod c_msg_client_to_gc_get_survey_question_response {
15104    #[derive(serde::Serialize, serde::Deserialize)]
15105    #[derive(
15106        Clone,
15107        Copy,
15108        Debug,
15109        PartialEq,
15110        Eq,
15111        Hash,
15112        PartialOrd,
15113        Ord,
15114        ::prost::Enumeration
15115    )]
15116    #[repr(i32)]
15117    pub enum EResult {
15118        KESuccess = 0,
15119        KEInternalError = 1,
15120        KETooBusy = 2,
15121    }
15122    impl EResult {
15123        /// String value of the enum field names used in the ProtoBuf definition.
15124        ///
15125        /// The values are not transformed in any way and thus are considered stable
15126        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15127        pub fn as_str_name(&self) -> &'static str {
15128            match self {
15129                Self::KESuccess => "k_eSuccess",
15130                Self::KEInternalError => "k_eInternalError",
15131                Self::KETooBusy => "k_eTooBusy",
15132            }
15133        }
15134        /// Creates an enum from field names used in the ProtoBuf definition.
15135        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15136            match value {
15137                "k_eSuccess" => Some(Self::KESuccess),
15138                "k_eInternalError" => Some(Self::KEInternalError),
15139                "k_eTooBusy" => Some(Self::KETooBusy),
15140                _ => None,
15141            }
15142        }
15143    }
15144}
15145#[derive(serde::Serialize, serde::Deserialize)]
15146#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15147pub struct CMsgClientToGcSubmitSurvey {
15148    #[prost(uint32, optional, tag = "1")]
15149    pub question_id: ::core::option::Option<u32>,
15150    #[prost(bool, optional, tag = "2")]
15151    pub is_skip: ::core::option::Option<bool>,
15152    #[prost(uint32, optional, tag = "3")]
15153    pub response_value: ::core::option::Option<u32>,
15154}
15155#[derive(serde::Serialize, serde::Deserialize)]
15156#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15157pub struct CMsgClientToGcSubmitSurveyResponse {
15158    #[prost(
15159        enumeration = "c_msg_client_to_gc_submit_survey_response::EResult",
15160        optional,
15161        tag = "1",
15162        default = "KESuccess"
15163    )]
15164    pub result: ::core::option::Option<i32>,
15165    #[prost(message, optional, tag = "2")]
15166    pub question: ::core::option::Option<CMsgSurveyQuestion>,
15167}
15168/// Nested message and enum types in `CMsgClientToGCSubmitSurveyResponse`.
15169pub mod c_msg_client_to_gc_submit_survey_response {
15170    #[derive(serde::Serialize, serde::Deserialize)]
15171    #[derive(
15172        Clone,
15173        Copy,
15174        Debug,
15175        PartialEq,
15176        Eq,
15177        Hash,
15178        PartialOrd,
15179        Ord,
15180        ::prost::Enumeration
15181    )]
15182    #[repr(i32)]
15183    pub enum EResult {
15184        KESuccess = 0,
15185        KEInternalError = 1,
15186        KETooBusy = 2,
15187    }
15188    impl EResult {
15189        /// String value of the enum field names used in the ProtoBuf definition.
15190        ///
15191        /// The values are not transformed in any way and thus are considered stable
15192        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15193        pub fn as_str_name(&self) -> &'static str {
15194            match self {
15195                Self::KESuccess => "k_eSuccess",
15196                Self::KEInternalError => "k_eInternalError",
15197                Self::KETooBusy => "k_eTooBusy",
15198            }
15199        }
15200        /// Creates an enum from field names used in the ProtoBuf definition.
15201        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15202            match value {
15203                "k_eSuccess" => Some(Self::KESuccess),
15204                "k_eInternalError" => Some(Self::KEInternalError),
15205                "k_eTooBusy" => Some(Self::KETooBusy),
15206                _ => None,
15207            }
15208        }
15209    }
15210}
15211#[derive(serde::Serialize, serde::Deserialize)]
15212#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15213pub struct CMsgClientToGcGetRankData {}
15214#[derive(serde::Serialize, serde::Deserialize)]
15215#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15216pub struct CMsgGcToClientGetRankDataResponse {
15217    #[prost(
15218        enumeration = "c_msg_gc_to_client_get_rank_data_response::EResultCode",
15219        optional,
15220        tag = "1",
15221        default = "KSucceeded"
15222    )]
15223    pub result: ::core::option::Option<i32>,
15224    #[prost(int32, optional, tag = "2")]
15225    pub current_rank_confidence: ::core::option::Option<i32>,
15226    #[prost(int32, optional, tag = "3")]
15227    pub calibrated_rank_confidence: ::core::option::Option<i32>,
15228    #[prost(bool, optional, tag = "4")]
15229    pub requires_calibration: ::core::option::Option<bool>,
15230}
15231/// Nested message and enum types in `CMsgGCToClientGetRankDataResponse`.
15232pub mod c_msg_gc_to_client_get_rank_data_response {
15233    #[derive(serde::Serialize, serde::Deserialize)]
15234    #[derive(
15235        Clone,
15236        Copy,
15237        Debug,
15238        PartialEq,
15239        Eq,
15240        Hash,
15241        PartialOrd,
15242        Ord,
15243        ::prost::Enumeration
15244    )]
15245    #[repr(i32)]
15246    pub enum EResultCode {
15247        KSucceeded = 0,
15248        KFailed = 1,
15249    }
15250    impl EResultCode {
15251        /// String value of the enum field names used in the ProtoBuf definition.
15252        ///
15253        /// The values are not transformed in any way and thus are considered stable
15254        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15255        pub fn as_str_name(&self) -> &'static str {
15256            match self {
15257                Self::KSucceeded => "k_Succeeded",
15258                Self::KFailed => "k_Failed",
15259            }
15260        }
15261        /// Creates an enum from field names used in the ProtoBuf definition.
15262        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15263            match value {
15264                "k_Succeeded" => Some(Self::KSucceeded),
15265                "k_Failed" => Some(Self::KFailed),
15266                _ => None,
15267            }
15268        }
15269    }
15270}
15271#[derive(serde::Serialize, serde::Deserialize)]
15272#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15273pub struct CMsgGcToClientRankDataUpdate {
15274    #[prost(message, optional, tag = "2")]
15275    pub rank_info: ::core::option::Option<CMsgGcToClientGetRankDataResponse>,
15276}
15277#[derive(serde::Serialize, serde::Deserialize)]
15278#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15279pub struct CMsgClientToGcRequestHeroReleaseVoteTally {
15280    #[prost(uint32, repeated, tag = "1")]
15281    pub vote_rounds: ::prost::alloc::vec::Vec<u32>,
15282}
15283#[derive(serde::Serialize, serde::Deserialize)]
15284#[derive(Clone, PartialEq, ::prost::Message)]
15285pub struct CMsgGcToClientUpdateHeroReleaseVoteTally {
15286    #[prost(message, repeated, tag = "1")]
15287    pub vote_round_to_tally: ::prost::alloc::vec::Vec<
15288        c_msg_gc_to_client_update_hero_release_vote_tally::VoteRoundToTallyEntry,
15289    >,
15290}
15291/// Nested message and enum types in `CMsgGCToClientUpdateHeroReleaseVoteTally`.
15292pub mod c_msg_gc_to_client_update_hero_release_vote_tally {
15293    #[derive(serde::Serialize, serde::Deserialize)]
15294    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15295    pub struct VoteRoundToTallyEntry {
15296        #[prost(uint32, optional, tag = "1")]
15297        pub key: ::core::option::Option<u32>,
15298        #[prost(message, optional, tag = "2")]
15299        pub value: ::core::option::Option<super::CMsgHeroReleaseVoteTally>,
15300    }
15301}
15302#[derive(serde::Serialize, serde::Deserialize)]
15303#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15304pub struct CMsgClientToGcSubmitHeroReleaseVote {
15305    #[prost(uint32, optional, tag = "1")]
15306    pub vote_round: ::core::option::Option<u32>,
15307    #[prost(uint32, optional, tag = "2")]
15308    pub vote_option: ::core::option::Option<u32>,
15309}
15310#[derive(serde::Serialize, serde::Deserialize)]
15311#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15312pub struct CMsgClientToGcPartySendChatMsg {
15313    #[prost(fixed64, optional, tag = "1")]
15314    pub party_id: ::core::option::Option<u64>,
15315    #[prost(string, optional, tag = "2")]
15316    pub chat_msg: ::core::option::Option<::prost::alloc::string::String>,
15317}
15318#[derive(serde::Serialize, serde::Deserialize)]
15319#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
15320pub struct CMsgClientToGcPartySendChatMsgResponse {
15321    #[prost(
15322        enumeration = "c_msg_client_to_gc_party_send_chat_msg_response::EResultCode",
15323        optional,
15324        tag = "1",
15325        default = "KESuccess"
15326    )]
15327    pub result: ::core::option::Option<i32>,
15328}
15329/// Nested message and enum types in `CMsgClientToGCPartySendChatMsgResponse`.
15330pub mod c_msg_client_to_gc_party_send_chat_msg_response {
15331    #[derive(serde::Serialize, serde::Deserialize)]
15332    #[derive(
15333        Clone,
15334        Copy,
15335        Debug,
15336        PartialEq,
15337        Eq,
15338        Hash,
15339        PartialOrd,
15340        Ord,
15341        ::prost::Enumeration
15342    )]
15343    #[repr(i32)]
15344    pub enum EResultCode {
15345        KESuccess = 0,
15346        KEInternalError = 1,
15347        KEInvalidPermission = 2,
15348        KEDisabled = 3,
15349        KERateLimited = 4,
15350        KEInvalidMsg = 5,
15351    }
15352    impl EResultCode {
15353        /// String value of the enum field names used in the ProtoBuf definition.
15354        ///
15355        /// The values are not transformed in any way and thus are considered stable
15356        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15357        pub fn as_str_name(&self) -> &'static str {
15358            match self {
15359                Self::KESuccess => "k_eSuccess",
15360                Self::KEInternalError => "k_eInternalError",
15361                Self::KEInvalidPermission => "k_eInvalidPermission",
15362                Self::KEDisabled => "k_eDisabled",
15363                Self::KERateLimited => "k_eRateLimited",
15364                Self::KEInvalidMsg => "k_eInvalidMsg",
15365            }
15366        }
15367        /// Creates an enum from field names used in the ProtoBuf definition.
15368        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15369            match value {
15370                "k_eSuccess" => Some(Self::KESuccess),
15371                "k_eInternalError" => Some(Self::KEInternalError),
15372                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
15373                "k_eDisabled" => Some(Self::KEDisabled),
15374                "k_eRateLimited" => Some(Self::KERateLimited),
15375                "k_eInvalidMsg" => Some(Self::KEInvalidMsg),
15376                _ => None,
15377            }
15378        }
15379    }
15380}
15381#[derive(serde::Serialize, serde::Deserialize)]
15382#[derive(Clone, PartialEq, ::prost::Message)]
15383pub struct CMsgGcToClientPartyChatMsg {
15384    #[prost(fixed64, optional, tag = "1")]
15385    pub party_id: ::core::option::Option<u64>,
15386    #[prost(message, repeated, tag = "2")]
15387    pub chat_lines: ::prost::alloc::vec::Vec<
15388        c_msg_gc_to_client_party_chat_msg::ChatLine,
15389    >,
15390}
15391/// Nested message and enum types in `CMsgGCToClientPartyChatMsg`.
15392pub mod c_msg_gc_to_client_party_chat_msg {
15393    #[derive(serde::Serialize, serde::Deserialize)]
15394    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15395    pub struct ChatLine {
15396        #[prost(uint32, optional, tag = "1")]
15397        pub account_id: ::core::option::Option<u32>,
15398        #[prost(string, optional, tag = "2")]
15399        pub chat_msg: ::core::option::Option<::prost::alloc::string::String>,
15400        #[prost(uint32, optional, tag = "3")]
15401        pub time_stamp: ::core::option::Option<u32>,
15402    }
15403}
15404#[derive(serde::Serialize, serde::Deserialize)]
15405#[derive(Clone, PartialEq, ::prost::Message)]
15406pub struct CMsgPostGameProgressData {
15407    #[prost(uint64, optional, tag = "1")]
15408    pub match_id: ::core::option::Option<u64>,
15409    #[prost(
15410        enumeration = "ECitadelLobbyTeam",
15411        optional,
15412        tag = "2",
15413        default = "KECitadelLobbyTeamTeam0"
15414    )]
15415    pub winning_team: ::core::option::Option<i32>,
15416    #[prost(message, optional, tag = "3")]
15417    pub local_player: ::core::option::Option<c_msg_post_game_progress_data::PlayerData>,
15418    #[prost(message, repeated, tag = "4")]
15419    pub mvp_players: ::prost::alloc::vec::Vec<c_msg_post_game_progress_data::PlayerData>,
15420}
15421/// Nested message and enum types in `CMsgPostGameProgressData`.
15422pub mod c_msg_post_game_progress_data {
15423    #[derive(serde::Serialize, serde::Deserialize)]
15424    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15425    pub struct PlayerAccolade {
15426        #[prost(uint32, optional, tag = "1")]
15427        pub accolade_id: ::core::option::Option<u32>,
15428        #[prost(string, optional, tag = "2")]
15429        pub accolade_name: ::core::option::Option<::prost::alloc::string::String>,
15430        #[prost(string, optional, tag = "3")]
15431        pub accolade_desc: ::core::option::Option<::prost::alloc::string::String>,
15432        #[prost(uint32, optional, tag = "4")]
15433        pub accolade_stars_achieved: ::core::option::Option<u32>,
15434        #[prost(int32, optional, tag = "5")]
15435        pub accolade_stat_value: ::core::option::Option<i32>,
15436    }
15437    #[derive(serde::Serialize, serde::Deserialize)]
15438    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
15439    pub struct PlayerAward {
15440        #[prost(uint32, optional, tag = "1")]
15441        pub award_column: ::core::option::Option<u32>,
15442        #[prost(uint32, optional, tag = "2")]
15443        pub award_id: ::core::option::Option<u32>,
15444        #[prost(int32, optional, tag = "3")]
15445        pub award_value: ::core::option::Option<i32>,
15446        #[prost(uint32, optional, tag = "4")]
15447        pub award_rank: ::core::option::Option<u32>,
15448        #[prost(string, optional, tag = "5")]
15449        pub award_desc: ::core::option::Option<::prost::alloc::string::String>,
15450        #[prost(string, optional, tag = "6")]
15451        pub award_class: ::core::option::Option<::prost::alloc::string::String>,
15452    }
15453    #[derive(serde::Serialize, serde::Deserialize)]
15454    #[derive(Clone, PartialEq, ::prost::Message)]
15455    pub struct PlayerData {
15456        #[prost(uint32, optional, tag = "1")]
15457        pub player_slot: ::core::option::Option<u32>,
15458        #[prost(uint32, optional, tag = "2")]
15459        pub account_id: ::core::option::Option<u32>,
15460        #[prost(uint32, optional, tag = "3")]
15461        pub hero_id: ::core::option::Option<u32>,
15462        #[prost(
15463            enumeration = "super::ECitadelLobbyTeam",
15464            optional,
15465            tag = "4",
15466            default = "KECitadelLobbyTeamTeam0"
15467        )]
15468        pub team: ::core::option::Option<i32>,
15469        #[prost(uint32, optional, tag = "5")]
15470        pub mvp_rank: ::core::option::Option<u32>,
15471        #[prost(message, repeated, tag = "6")]
15472        pub accolades: ::prost::alloc::vec::Vec<PlayerAccolade>,
15473        #[prost(message, repeated, tag = "7")]
15474        pub awards: ::prost::alloc::vec::Vec<PlayerAward>,
15475    }
15476}
15477#[derive(serde::Serialize, serde::Deserialize)]
15478#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
15479#[repr(i32)]
15480pub enum EgcCitadelClientMessages {
15481    KEMsgClientToGcStartMatchmaking = 9010,
15482    KEMsgClientToGcStartMatchmakingResponse = 9011,
15483    KEMsgClientToGcStopMatchmaking = 9012,
15484    KEMsgClientToGcStopMatchmakingResponse = 9013,
15485    KEMsgGcToClientMatchmakingStopped = 9014,
15486    KEMsgClientToGcLeaveLobby = 9015,
15487    KEMsgClientToGcLeaveLobbyResponse = 9016,
15488    KEMsgClientToGcIsInMatchmaking = 9017,
15489    KEMsgClientToGcIsInMatchmakingResponse = 9018,
15490    KEMsgGcToClientDevPlaytestStatus = 9019,
15491    KEMsgClientToGcDevSetMmBias = 9023,
15492    KEMsgClientToGcGetProfileCard = 9024,
15493    KEMsgClientToGcGetProfileCardResponse = 9025,
15494    KEMsgClientToGcUpdateRoster = 9026,
15495    KEMsgClientToGcUpdateRosterResponse = 9027,
15496    KEMsgGcToClientProfileCardUpdated = 9028,
15497    KEMsgGcToClientDevAnnouncements = 9029,
15498    KEMsgClientToGcModifyDevAnnouncements = 9030,
15499    KEMsgClientToGcModifyDevAnnouncementsResponse = 9031,
15500    KEMsgGcToClientSdrTicket = 9100,
15501    KEMsgClientToGcReplacementSdrTicket = 9101,
15502    KEMsgClientToGcReplacementSdrTicketResponse = 9102,
15503    KEMsgClientToGcSetServerConVar = 9107,
15504    KEMsgClientToGcSetServerConVarResponse = 9108,
15505    KEMsgClientToGcSpectateLobby = 9109,
15506    KEMsgClientToGcSpectateLobbyResponse = 9110,
15507    KEMsgClientToGcPostMatchSurveyResponse = 9111,
15508    KEMsgClientToGcGetMatchHistory = 9112,
15509    KEMsgClientToGcGetMatchHistoryResponse = 9113,
15510    KEMsgClientToGcSpectateUser = 9116,
15511    KEMsgClientToGcSpectateUserResponse = 9117,
15512    KEMsgClientToGcPartyCreate = 9123,
15513    KEMsgClientToGcPartyCreateResponse = 9124,
15514    KEMsgClientToGcPartyLeave = 9125,
15515    KEMsgClientToGcPartyLeaveResponse = 9126,
15516    KEMsgClientToGcPartyJoin = 9127,
15517    KEMsgClientToGcPartyJoinResponse = 9128,
15518    KEMsgClientToGcPartyAction = 9129,
15519    KEMsgClientToGcPartyActionResponse = 9130,
15520    KEMsgClientToGcPartyStartMatch = 9131,
15521    KEMsgClientToGcPartyStartMatchResponse = 9132,
15522    KEMsgClientToGcPartyInviteUser = 9133,
15523    KEMsgClientToGcPartyInviteUserResponse = 9134,
15524    KEMsgGcToClientPartyEvent = 9135,
15525    KEMsgGcToClientCanRejoinParty = 9137,
15526    KEMsgClientToGcPartyJoinViaCode = 9138,
15527    KEMsgClientToGcPartyJoinViaCodeResponse = 9139,
15528    KEMsgClientToGcPartySetReadyState = 9142,
15529    KEMsgClientToGcPartySetReadyStateResponse = 9143,
15530    KEMsgClientToGcGetAccountStats = 9164,
15531    KEMsgClientToGcGetAccountStatsResponse = 9165,
15532    KEMsgGcToClientAccountStatsUpdated = 9166,
15533    KEMsgClientToGcGetMatchMetaData = 9167,
15534    KEMsgClientToGcGetMatchMetaDataResponse = 9168,
15535    KEMsgClientToGcDevAction = 9172,
15536    KEMsgClientToGcDevActionResponse = 9173,
15537    KEMsgClientToGcRecordClientEvents = 9174,
15538    KEMsgClientToGcRecordClientEventsResponse = 9175,
15539    KEMsgClientToGcSetNewPlayerProgress = 9176,
15540    KEMsgClientToGcSetNewPlayerProgressResponse = 9177,
15541    KEMsgClientToGcUpdateAccountSync = 9178,
15542    KEMsgClientToGcUpdateAccountSyncResponse = 9179,
15543    KEMsgClientToGcGetHeroChoice = 9180,
15544    KEMsgClientToGcGetHeroChoiceResponse = 9181,
15545    KEMsgClientToGcUnlockHero = 9182,
15546    KEMsgClientToGcUnlockHeroResponse = 9183,
15547    KEMsgClientToGcBookUnlock = 9184,
15548    KEMsgClientToGcBookUnlockResponse = 9185,
15549    KEMsgClientToGcGetBook = 9186,
15550    KEMsgClientToGcGetBookResponse = 9187,
15551    KEMsgGcToClientBookUpdated = 9188,
15552    KEMsgClientToGcSubmitPlaytestUser = 9189,
15553    KEMsgClientToGcSubmitPlaytestUserResponse = 9190,
15554    KEMsgClientToGcUpdateHeroBuild = 9193,
15555    KEMsgClientToGcUpdateHeroBuildResponse = 9194,
15556    KEMsgClientToGcFindHeroBuilds = 9195,
15557    KEMsgClientToGcFindHeroBuildsResponse = 9196,
15558    KEMsgClientToGcReportPlayerFromMatch = 9197,
15559    KEMsgClientToGcReportPlayerFromMatchResponse = 9198,
15560    KEMsgClientToGcGetAccountMatchReports = 9199,
15561    KEMsgClientToGcGetAccountMatchReportsResponse = 9200,
15562    KEMsgClientToGcDeleteHeroBuild = 9201,
15563    KEMsgClientToGcDeleteHeroBuildResponse = 9202,
15564    KEMsgClientToGcGetActiveMatches = 9203,
15565    KEMsgClientToGcGetActiveMatchesResponse = 9204,
15566    KEMsgClientToGcGetDiscordLink = 9205,
15567    KEMsgClientToGcGetDiscordLinkResponse = 9206,
15568    KEMsgClientToGcPartySetMode = 9207,
15569    KEMsgClientToGcPartySetModeResponse = 9208,
15570    KEMsgClientToGcGrantForumAccess = 9209,
15571    KEMsgClientToGcGrantForumAccessResponse = 9210,
15572    KEMsgClientToGcModeratorRequest = 9211,
15573    KEMsgClientToGcModeratorRequestResponse = 9212,
15574    KEMsgClientToGcGetFriendGameStatus = 9213,
15575    KEMsgClientToGcGetFriendGameStatusResponse = 9214,
15576    KEMsgClientToGcUpdateHeroBuildPreference = 9215,
15577    KEMsgClientToGcUpdateHeroBuildPreferenceResponse = 9216,
15578    KEMsgClientToGcUpdateSpectatorStatus = 9219,
15579    KEMsgClientToGcCommendPlayerFromMatch = 9223,
15580    KEMsgClientToGcCommendPlayerFromMatchResponse = 9224,
15581    KEMsgGcToClientCommendNotification = 9225,
15582    KEMsgGcToClientHeroLabsSchedule = 9228,
15583    KEMsgClientToGcDevRequestCheatReports = 9230,
15584    KEMsgClientToGcDevRequestCheatReportsResponse = 9231,
15585    KEMsgClientToGcDevBan = 9232,
15586    KEMsgClientToGcDevBanResponse = 9233,
15587    KEMsgClientToGcGetHeroMmrRankings = 9234,
15588    KEMsgClientToGcGetHeroMmrRankingsResponse = 9235,
15589    KEMsgClientToGcGetLeaderboard = 9236,
15590    KEMsgClientToGcGetLeaderboardResponse = 9237,
15591    KEMsgClientToGcGetAccountLeaderboards = 9238,
15592    KEMsgClientToGcGetAccountLeaderboardsResponse = 9239,
15593    KEMsgClientToGcTarotGetUserData = 9242,
15594    KEMsgClientToGcTarotGetUserDataResponse = 9243,
15595    KEMsgGcToClientTarotUserDataUpdated = 9244,
15596    KEMsgClientToGcTarotPlaceTile = 9245,
15597    KEMsgClientToGcTarotPlaceTileResponse = 9246,
15598    KEMsgClientToGcTarotApplyRune = 9247,
15599    KEMsgClientToGcTarotApplyRuneResponse = 9248,
15600    KEMsgClientToGcTarotCompleteBoard = 9249,
15601    KEMsgClientToGcTarotCompleteBoardResponse = 9250,
15602    KEMsgClientToGcTarotDevCreateTile = 9251,
15603    KEMsgClientToGcTarotDevCreateTileResponse = 9252,
15604    KEMsgClientToGcTarotDevCreateBoard = 9253,
15605    KEMsgClientToGcTarotDevCreateBoardResponse = 9254,
15606    KEMsgClientToGcTarotDevGenerateTestTiles = 9255,
15607    KEMsgClientToGcTarotDevGenerateTestTilesResponse = 9256,
15608    KEMsgClientToGcTarotDevModifyEnergy = 9257,
15609    KEMsgClientToGcTarotDevModifyEnergyResponse = 9258,
15610    KEMsgClientToGcGenerateChallengeSet = 9259,
15611    KEMsgClientToGcGenerateChallengeSetResponse = 9260,
15612    KEMsgClientToGcChallengeActivate = 9261,
15613    KEMsgClientToGcChallengeActivateResponse = 9262,
15614    KEMsgClientToGcChallengeClaim = 9263,
15615    KEMsgClientToGcChallengeClaimResponse = 9264,
15616    KEMsgClientToGcChallengeCancel = 9265,
15617    KEMsgClientToGcChallengeCancelResponse = 9266,
15618    KEMsgClientToGcGetSurveyQuestion = 9267,
15619    KEMsgClientToGcGetSurveyQuestionResponse = 9268,
15620    KEMsgClientToGcSubmitSurvey = 9269,
15621    KEMsgClientToGcSubmitSurveyResponse = 9270,
15622    KEMsgClientToGcGetRankData = 9271,
15623    KEMsgGcToClientGetRankDataResponse = 9272,
15624    KEMsgGcToClientRankDataUpdate = 9273,
15625    KEMsgClientToGcGetHideoutSdrTicket = 9274,
15626    KEMsgClientToGcGetHideoutSdrTicketResponse = 9275,
15627    KEMsgClientToGcSubmitHeroReleaseVote = 9276,
15628    KEMsgClientToGcPartySendChatMsg = 9277,
15629    KEMsgClientToGcPartySendChatMsgResponse = 9278,
15630    KEMsgGcToClientPartyChatMsg = 9279,
15631    KEMsgClientToGcRequestHeroReleaseVoteTally = 9280,
15632    KEMsgGcToClientUpdateHeroReleaseVoteTally = 9281,
15633}
15634impl EgcCitadelClientMessages {
15635    /// String value of the enum field names used in the ProtoBuf definition.
15636    ///
15637    /// The values are not transformed in any way and thus are considered stable
15638    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
15639    pub fn as_str_name(&self) -> &'static str {
15640        match self {
15641            Self::KEMsgClientToGcStartMatchmaking => "k_EMsgClientToGCStartMatchmaking",
15642            Self::KEMsgClientToGcStartMatchmakingResponse => {
15643                "k_EMsgClientToGCStartMatchmakingResponse"
15644            }
15645            Self::KEMsgClientToGcStopMatchmaking => "k_EMsgClientToGCStopMatchmaking",
15646            Self::KEMsgClientToGcStopMatchmakingResponse => {
15647                "k_EMsgClientToGCStopMatchmakingResponse"
15648            }
15649            Self::KEMsgGcToClientMatchmakingStopped => {
15650                "k_EMsgGCToClientMatchmakingStopped"
15651            }
15652            Self::KEMsgClientToGcLeaveLobby => "k_EMsgClientToGCLeaveLobby",
15653            Self::KEMsgClientToGcLeaveLobbyResponse => {
15654                "k_EMsgClientToGCLeaveLobbyResponse"
15655            }
15656            Self::KEMsgClientToGcIsInMatchmaking => "k_EMsgClientToGCIsInMatchmaking",
15657            Self::KEMsgClientToGcIsInMatchmakingResponse => {
15658                "k_EMsgClientToGCIsInMatchmakingResponse"
15659            }
15660            Self::KEMsgGcToClientDevPlaytestStatus => "k_EMsgGCToClientDevPlaytestStatus",
15661            Self::KEMsgClientToGcDevSetMmBias => "k_EMsgClientToGCDevSetMMBias",
15662            Self::KEMsgClientToGcGetProfileCard => "k_EMsgClientToGCGetProfileCard",
15663            Self::KEMsgClientToGcGetProfileCardResponse => {
15664                "k_EMsgClientToGCGetProfileCardResponse"
15665            }
15666            Self::KEMsgClientToGcUpdateRoster => "k_EMsgClientToGCUpdateRoster",
15667            Self::KEMsgClientToGcUpdateRosterResponse => {
15668                "k_EMsgClientToGCUpdateRosterResponse"
15669            }
15670            Self::KEMsgGcToClientProfileCardUpdated => {
15671                "k_EMsgGCToClientProfileCardUpdated"
15672            }
15673            Self::KEMsgGcToClientDevAnnouncements => "k_EMsgGCToClientDevAnnouncements",
15674            Self::KEMsgClientToGcModifyDevAnnouncements => {
15675                "k_EMsgClientToGCModifyDevAnnouncements"
15676            }
15677            Self::KEMsgClientToGcModifyDevAnnouncementsResponse => {
15678                "k_EMsgClientToGCModifyDevAnnouncementsResponse"
15679            }
15680            Self::KEMsgGcToClientSdrTicket => "k_EMsgGCToClientSDRTicket",
15681            Self::KEMsgClientToGcReplacementSdrTicket => {
15682                "k_EMsgClientToGCReplacementSDRTicket"
15683            }
15684            Self::KEMsgClientToGcReplacementSdrTicketResponse => {
15685                "k_EMsgClientToGCReplacementSDRTicketResponse"
15686            }
15687            Self::KEMsgClientToGcSetServerConVar => "k_EMsgClientToGCSetServerConVar",
15688            Self::KEMsgClientToGcSetServerConVarResponse => {
15689                "k_EMsgClientToGCSetServerConVarResponse"
15690            }
15691            Self::KEMsgClientToGcSpectateLobby => "k_EMsgClientToGCSpectateLobby",
15692            Self::KEMsgClientToGcSpectateLobbyResponse => {
15693                "k_EMsgClientToGCSpectateLobbyResponse"
15694            }
15695            Self::KEMsgClientToGcPostMatchSurveyResponse => {
15696                "k_EMsgClientToGCPostMatchSurveyResponse"
15697            }
15698            Self::KEMsgClientToGcGetMatchHistory => "k_EMsgClientToGCGetMatchHistory",
15699            Self::KEMsgClientToGcGetMatchHistoryResponse => {
15700                "k_EMsgClientToGCGetMatchHistoryResponse"
15701            }
15702            Self::KEMsgClientToGcSpectateUser => "k_EMsgClientToGCSpectateUser",
15703            Self::KEMsgClientToGcSpectateUserResponse => {
15704                "k_EMsgClientToGCSpectateUserResponse"
15705            }
15706            Self::KEMsgClientToGcPartyCreate => "k_EMsgClientToGCPartyCreate",
15707            Self::KEMsgClientToGcPartyCreateResponse => {
15708                "k_EMsgClientToGCPartyCreateResponse"
15709            }
15710            Self::KEMsgClientToGcPartyLeave => "k_EMsgClientToGCPartyLeave",
15711            Self::KEMsgClientToGcPartyLeaveResponse => {
15712                "k_EMsgClientToGCPartyLeaveResponse"
15713            }
15714            Self::KEMsgClientToGcPartyJoin => "k_EMsgClientToGCPartyJoin",
15715            Self::KEMsgClientToGcPartyJoinResponse => "k_EMsgClientToGCPartyJoinResponse",
15716            Self::KEMsgClientToGcPartyAction => "k_EMsgClientToGCPartyAction",
15717            Self::KEMsgClientToGcPartyActionResponse => {
15718                "k_EMsgClientToGCPartyActionResponse"
15719            }
15720            Self::KEMsgClientToGcPartyStartMatch => "k_EMsgClientToGCPartyStartMatch",
15721            Self::KEMsgClientToGcPartyStartMatchResponse => {
15722                "k_EMsgClientToGCPartyStartMatchResponse"
15723            }
15724            Self::KEMsgClientToGcPartyInviteUser => "k_EMsgClientToGCPartyInviteUser",
15725            Self::KEMsgClientToGcPartyInviteUserResponse => {
15726                "k_EMsgClientToGCPartyInviteUserResponse"
15727            }
15728            Self::KEMsgGcToClientPartyEvent => "k_EMsgGCToClientPartyEvent",
15729            Self::KEMsgGcToClientCanRejoinParty => "k_EMsgGCToClientCanRejoinParty",
15730            Self::KEMsgClientToGcPartyJoinViaCode => "k_EMsgClientToGCPartyJoinViaCode",
15731            Self::KEMsgClientToGcPartyJoinViaCodeResponse => {
15732                "k_EMsgClientToGCPartyJoinViaCodeResponse"
15733            }
15734            Self::KEMsgClientToGcPartySetReadyState => {
15735                "k_EMsgClientToGCPartySetReadyState"
15736            }
15737            Self::KEMsgClientToGcPartySetReadyStateResponse => {
15738                "k_EMsgClientToGCPartySetReadyStateResponse"
15739            }
15740            Self::KEMsgClientToGcGetAccountStats => "k_EMsgClientToGCGetAccountStats",
15741            Self::KEMsgClientToGcGetAccountStatsResponse => {
15742                "k_EMsgClientToGCGetAccountStatsResponse"
15743            }
15744            Self::KEMsgGcToClientAccountStatsUpdated => {
15745                "k_EMsgGCToClientAccountStatsUpdated"
15746            }
15747            Self::KEMsgClientToGcGetMatchMetaData => "k_EMsgClientToGCGetMatchMetaData",
15748            Self::KEMsgClientToGcGetMatchMetaDataResponse => {
15749                "k_EMsgClientToGCGetMatchMetaDataResponse"
15750            }
15751            Self::KEMsgClientToGcDevAction => "k_EMsgClientToGCDevAction",
15752            Self::KEMsgClientToGcDevActionResponse => "k_EMsgClientToGCDevActionResponse",
15753            Self::KEMsgClientToGcRecordClientEvents => {
15754                "k_EMsgClientToGCRecordClientEvents"
15755            }
15756            Self::KEMsgClientToGcRecordClientEventsResponse => {
15757                "k_EMsgClientToGCRecordClientEventsResponse"
15758            }
15759            Self::KEMsgClientToGcSetNewPlayerProgress => {
15760                "k_EMsgClientToGCSetNewPlayerProgress"
15761            }
15762            Self::KEMsgClientToGcSetNewPlayerProgressResponse => {
15763                "k_EMsgClientToGCSetNewPlayerProgressResponse"
15764            }
15765            Self::KEMsgClientToGcUpdateAccountSync => "k_EMsgClientToGCUpdateAccountSync",
15766            Self::KEMsgClientToGcUpdateAccountSyncResponse => {
15767                "k_EMsgClientToGCUpdateAccountSyncResponse"
15768            }
15769            Self::KEMsgClientToGcGetHeroChoice => "k_EMsgClientToGCGetHeroChoice",
15770            Self::KEMsgClientToGcGetHeroChoiceResponse => {
15771                "k_EMsgClientToGCGetHeroChoiceResponse"
15772            }
15773            Self::KEMsgClientToGcUnlockHero => "k_EMsgClientToGCUnlockHero",
15774            Self::KEMsgClientToGcUnlockHeroResponse => {
15775                "k_EMsgClientToGCUnlockHeroResponse"
15776            }
15777            Self::KEMsgClientToGcBookUnlock => "k_EMsgClientToGCBookUnlock",
15778            Self::KEMsgClientToGcBookUnlockResponse => {
15779                "k_EMsgClientToGCBookUnlockResponse"
15780            }
15781            Self::KEMsgClientToGcGetBook => "k_EMsgClientToGCGetBook",
15782            Self::KEMsgClientToGcGetBookResponse => "k_EMsgClientToGCGetBookResponse",
15783            Self::KEMsgGcToClientBookUpdated => "k_EMsgGCToClientBookUpdated",
15784            Self::KEMsgClientToGcSubmitPlaytestUser => {
15785                "k_EMsgClientToGCSubmitPlaytestUser"
15786            }
15787            Self::KEMsgClientToGcSubmitPlaytestUserResponse => {
15788                "k_EMsgClientToGCSubmitPlaytestUserResponse"
15789            }
15790            Self::KEMsgClientToGcUpdateHeroBuild => "k_EMsgClientToGCUpdateHeroBuild",
15791            Self::KEMsgClientToGcUpdateHeroBuildResponse => {
15792                "k_EMsgClientToGCUpdateHeroBuildResponse"
15793            }
15794            Self::KEMsgClientToGcFindHeroBuilds => "k_EMsgClientToGCFindHeroBuilds",
15795            Self::KEMsgClientToGcFindHeroBuildsResponse => {
15796                "k_EMsgClientToGCFindHeroBuildsResponse"
15797            }
15798            Self::KEMsgClientToGcReportPlayerFromMatch => {
15799                "k_EMsgClientToGCReportPlayerFromMatch"
15800            }
15801            Self::KEMsgClientToGcReportPlayerFromMatchResponse => {
15802                "k_EMsgClientToGCReportPlayerFromMatchResponse"
15803            }
15804            Self::KEMsgClientToGcGetAccountMatchReports => {
15805                "k_EMsgClientToGCGetAccountMatchReports"
15806            }
15807            Self::KEMsgClientToGcGetAccountMatchReportsResponse => {
15808                "k_EMsgClientToGCGetAccountMatchReportsResponse"
15809            }
15810            Self::KEMsgClientToGcDeleteHeroBuild => "k_EMsgClientToGCDeleteHeroBuild",
15811            Self::KEMsgClientToGcDeleteHeroBuildResponse => {
15812                "k_EMsgClientToGCDeleteHeroBuildResponse"
15813            }
15814            Self::KEMsgClientToGcGetActiveMatches => "k_EMsgClientToGCGetActiveMatches",
15815            Self::KEMsgClientToGcGetActiveMatchesResponse => {
15816                "k_EMsgClientToGCGetActiveMatchesResponse"
15817            }
15818            Self::KEMsgClientToGcGetDiscordLink => "k_EMsgClientToGCGetDiscordLink",
15819            Self::KEMsgClientToGcGetDiscordLinkResponse => {
15820                "k_EMsgClientToGCGetDiscordLinkResponse"
15821            }
15822            Self::KEMsgClientToGcPartySetMode => "k_EMsgClientToGCPartySetMode",
15823            Self::KEMsgClientToGcPartySetModeResponse => {
15824                "k_EMsgClientToGCPartySetModeResponse"
15825            }
15826            Self::KEMsgClientToGcGrantForumAccess => "k_EMsgClientToGCGrantForumAccess",
15827            Self::KEMsgClientToGcGrantForumAccessResponse => {
15828                "k_EMsgClientToGCGrantForumAccessResponse"
15829            }
15830            Self::KEMsgClientToGcModeratorRequest => "k_EMsgClientToGCModeratorRequest",
15831            Self::KEMsgClientToGcModeratorRequestResponse => {
15832                "k_EMsgClientToGCModeratorRequestResponse"
15833            }
15834            Self::KEMsgClientToGcGetFriendGameStatus => {
15835                "k_EMsgClientToGCGetFriendGameStatus"
15836            }
15837            Self::KEMsgClientToGcGetFriendGameStatusResponse => {
15838                "k_EMsgClientToGCGetFriendGameStatusResponse"
15839            }
15840            Self::KEMsgClientToGcUpdateHeroBuildPreference => {
15841                "k_EMsgClientToGCUpdateHeroBuildPreference"
15842            }
15843            Self::KEMsgClientToGcUpdateHeroBuildPreferenceResponse => {
15844                "k_EMsgClientToGCUpdateHeroBuildPreferenceResponse"
15845            }
15846            Self::KEMsgClientToGcUpdateSpectatorStatus => {
15847                "k_EMsgClientToGCUpdateSpectatorStatus"
15848            }
15849            Self::KEMsgClientToGcCommendPlayerFromMatch => {
15850                "k_EMsgClientToGCCommendPlayerFromMatch"
15851            }
15852            Self::KEMsgClientToGcCommendPlayerFromMatchResponse => {
15853                "k_EMsgClientToGCCommendPlayerFromMatchResponse"
15854            }
15855            Self::KEMsgGcToClientCommendNotification => {
15856                "k_EMsgGCToClientCommendNotification"
15857            }
15858            Self::KEMsgGcToClientHeroLabsSchedule => "k_EMsgGCToClientHeroLabsSchedule",
15859            Self::KEMsgClientToGcDevRequestCheatReports => {
15860                "k_EMsgClientToGCDevRequestCheatReports"
15861            }
15862            Self::KEMsgClientToGcDevRequestCheatReportsResponse => {
15863                "k_EMsgClientToGCDevRequestCheatReportsResponse"
15864            }
15865            Self::KEMsgClientToGcDevBan => "k_EMsgClientToGCDevBan",
15866            Self::KEMsgClientToGcDevBanResponse => "k_EMsgClientToGCDevBanResponse",
15867            Self::KEMsgClientToGcGetHeroMmrRankings => {
15868                "k_EMsgClientToGCGetHeroMMRRankings"
15869            }
15870            Self::KEMsgClientToGcGetHeroMmrRankingsResponse => {
15871                "k_EMsgClientToGCGetHeroMMRRankingsResponse"
15872            }
15873            Self::KEMsgClientToGcGetLeaderboard => "k_EMsgClientToGCGetLeaderboard",
15874            Self::KEMsgClientToGcGetLeaderboardResponse => {
15875                "k_EMsgClientToGCGetLeaderboardResponse"
15876            }
15877            Self::KEMsgClientToGcGetAccountLeaderboards => {
15878                "k_EMsgClientToGCGetAccountLeaderboards"
15879            }
15880            Self::KEMsgClientToGcGetAccountLeaderboardsResponse => {
15881                "k_EMsgClientToGCGetAccountLeaderboardsResponse"
15882            }
15883            Self::KEMsgClientToGcTarotGetUserData => "k_EMsgClientToGCTarotGetUserData",
15884            Self::KEMsgClientToGcTarotGetUserDataResponse => {
15885                "k_EMsgClientToGCTarotGetUserDataResponse"
15886            }
15887            Self::KEMsgGcToClientTarotUserDataUpdated => {
15888                "k_EMsgGCToClientTarotUserDataUpdated"
15889            }
15890            Self::KEMsgClientToGcTarotPlaceTile => "k_EMsgClientToGCTarotPlaceTile",
15891            Self::KEMsgClientToGcTarotPlaceTileResponse => {
15892                "k_EMsgClientToGCTarotPlaceTileResponse"
15893            }
15894            Self::KEMsgClientToGcTarotApplyRune => "k_EMsgClientToGCTarotApplyRune",
15895            Self::KEMsgClientToGcTarotApplyRuneResponse => {
15896                "k_EMsgClientToGCTarotApplyRuneResponse"
15897            }
15898            Self::KEMsgClientToGcTarotCompleteBoard => {
15899                "k_EMsgClientToGCTarotCompleteBoard"
15900            }
15901            Self::KEMsgClientToGcTarotCompleteBoardResponse => {
15902                "k_EMsgClientToGCTarotCompleteBoardResponse"
15903            }
15904            Self::KEMsgClientToGcTarotDevCreateTile => {
15905                "k_EMsgClientToGCTarotDevCreateTile"
15906            }
15907            Self::KEMsgClientToGcTarotDevCreateTileResponse => {
15908                "k_EMsgClientToGCTarotDevCreateTileResponse"
15909            }
15910            Self::KEMsgClientToGcTarotDevCreateBoard => {
15911                "k_EMsgClientToGCTarotDevCreateBoard"
15912            }
15913            Self::KEMsgClientToGcTarotDevCreateBoardResponse => {
15914                "k_EMsgClientToGCTarotDevCreateBoardResponse"
15915            }
15916            Self::KEMsgClientToGcTarotDevGenerateTestTiles => {
15917                "k_EMsgClientToGCTarotDevGenerateTestTiles"
15918            }
15919            Self::KEMsgClientToGcTarotDevGenerateTestTilesResponse => {
15920                "k_EMsgClientToGCTarotDevGenerateTestTilesResponse"
15921            }
15922            Self::KEMsgClientToGcTarotDevModifyEnergy => {
15923                "k_EMsgClientToGCTarotDevModifyEnergy"
15924            }
15925            Self::KEMsgClientToGcTarotDevModifyEnergyResponse => {
15926                "k_EMsgClientToGCTarotDevModifyEnergyResponse"
15927            }
15928            Self::KEMsgClientToGcGenerateChallengeSet => {
15929                "k_EMsgClientToGCGenerateChallengeSet"
15930            }
15931            Self::KEMsgClientToGcGenerateChallengeSetResponse => {
15932                "k_EMsgClientToGCGenerateChallengeSetResponse"
15933            }
15934            Self::KEMsgClientToGcChallengeActivate => "k_EMsgClientToGCChallengeActivate",
15935            Self::KEMsgClientToGcChallengeActivateResponse => {
15936                "k_EMsgClientToGCChallengeActivateResponse"
15937            }
15938            Self::KEMsgClientToGcChallengeClaim => "k_EMsgClientToGCChallengeClaim",
15939            Self::KEMsgClientToGcChallengeClaimResponse => {
15940                "k_EMsgClientToGCChallengeClaimResponse"
15941            }
15942            Self::KEMsgClientToGcChallengeCancel => "k_EMsgClientToGCChallengeCancel",
15943            Self::KEMsgClientToGcChallengeCancelResponse => {
15944                "k_EMsgClientToGCChallengeCancelResponse"
15945            }
15946            Self::KEMsgClientToGcGetSurveyQuestion => "k_EMsgClientToGCGetSurveyQuestion",
15947            Self::KEMsgClientToGcGetSurveyQuestionResponse => {
15948                "k_EMsgClientToGCGetSurveyQuestionResponse"
15949            }
15950            Self::KEMsgClientToGcSubmitSurvey => "k_EMsgClientToGCSubmitSurvey",
15951            Self::KEMsgClientToGcSubmitSurveyResponse => {
15952                "k_EMsgClientToGCSubmitSurveyResponse"
15953            }
15954            Self::KEMsgClientToGcGetRankData => "k_EMsgClientToGCGetRankData",
15955            Self::KEMsgGcToClientGetRankDataResponse => {
15956                "k_EMsgGCToClientGetRankDataResponse"
15957            }
15958            Self::KEMsgGcToClientRankDataUpdate => "k_EMsgGCToClientRankDataUpdate",
15959            Self::KEMsgClientToGcGetHideoutSdrTicket => {
15960                "k_EMsgClientToGCGetHideoutSDRTicket"
15961            }
15962            Self::KEMsgClientToGcGetHideoutSdrTicketResponse => {
15963                "k_EMsgClientToGCGetHideoutSDRTicketResponse"
15964            }
15965            Self::KEMsgClientToGcSubmitHeroReleaseVote => {
15966                "k_EMsgClientToGCSubmitHeroReleaseVote"
15967            }
15968            Self::KEMsgClientToGcPartySendChatMsg => "k_EMsgClientToGCPartySendChatMsg",
15969            Self::KEMsgClientToGcPartySendChatMsgResponse => {
15970                "k_EMsgClientToGCPartySendChatMsgResponse"
15971            }
15972            Self::KEMsgGcToClientPartyChatMsg => "k_EMsgGCToClientPartyChatMsg",
15973            Self::KEMsgClientToGcRequestHeroReleaseVoteTally => {
15974                "k_EMsgClientToGCRequestHeroReleaseVoteTally"
15975            }
15976            Self::KEMsgGcToClientUpdateHeroReleaseVoteTally => {
15977                "k_EMsgGCToClientUpdateHeroReleaseVoteTally"
15978            }
15979        }
15980    }
15981    /// Creates an enum from field names used in the ProtoBuf definition.
15982    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
15983        match value {
15984            "k_EMsgClientToGCStartMatchmaking" => {
15985                Some(Self::KEMsgClientToGcStartMatchmaking)
15986            }
15987            "k_EMsgClientToGCStartMatchmakingResponse" => {
15988                Some(Self::KEMsgClientToGcStartMatchmakingResponse)
15989            }
15990            "k_EMsgClientToGCStopMatchmaking" => {
15991                Some(Self::KEMsgClientToGcStopMatchmaking)
15992            }
15993            "k_EMsgClientToGCStopMatchmakingResponse" => {
15994                Some(Self::KEMsgClientToGcStopMatchmakingResponse)
15995            }
15996            "k_EMsgGCToClientMatchmakingStopped" => {
15997                Some(Self::KEMsgGcToClientMatchmakingStopped)
15998            }
15999            "k_EMsgClientToGCLeaveLobby" => Some(Self::KEMsgClientToGcLeaveLobby),
16000            "k_EMsgClientToGCLeaveLobbyResponse" => {
16001                Some(Self::KEMsgClientToGcLeaveLobbyResponse)
16002            }
16003            "k_EMsgClientToGCIsInMatchmaking" => {
16004                Some(Self::KEMsgClientToGcIsInMatchmaking)
16005            }
16006            "k_EMsgClientToGCIsInMatchmakingResponse" => {
16007                Some(Self::KEMsgClientToGcIsInMatchmakingResponse)
16008            }
16009            "k_EMsgGCToClientDevPlaytestStatus" => {
16010                Some(Self::KEMsgGcToClientDevPlaytestStatus)
16011            }
16012            "k_EMsgClientToGCDevSetMMBias" => Some(Self::KEMsgClientToGcDevSetMmBias),
16013            "k_EMsgClientToGCGetProfileCard" => Some(Self::KEMsgClientToGcGetProfileCard),
16014            "k_EMsgClientToGCGetProfileCardResponse" => {
16015                Some(Self::KEMsgClientToGcGetProfileCardResponse)
16016            }
16017            "k_EMsgClientToGCUpdateRoster" => Some(Self::KEMsgClientToGcUpdateRoster),
16018            "k_EMsgClientToGCUpdateRosterResponse" => {
16019                Some(Self::KEMsgClientToGcUpdateRosterResponse)
16020            }
16021            "k_EMsgGCToClientProfileCardUpdated" => {
16022                Some(Self::KEMsgGcToClientProfileCardUpdated)
16023            }
16024            "k_EMsgGCToClientDevAnnouncements" => {
16025                Some(Self::KEMsgGcToClientDevAnnouncements)
16026            }
16027            "k_EMsgClientToGCModifyDevAnnouncements" => {
16028                Some(Self::KEMsgClientToGcModifyDevAnnouncements)
16029            }
16030            "k_EMsgClientToGCModifyDevAnnouncementsResponse" => {
16031                Some(Self::KEMsgClientToGcModifyDevAnnouncementsResponse)
16032            }
16033            "k_EMsgGCToClientSDRTicket" => Some(Self::KEMsgGcToClientSdrTicket),
16034            "k_EMsgClientToGCReplacementSDRTicket" => {
16035                Some(Self::KEMsgClientToGcReplacementSdrTicket)
16036            }
16037            "k_EMsgClientToGCReplacementSDRTicketResponse" => {
16038                Some(Self::KEMsgClientToGcReplacementSdrTicketResponse)
16039            }
16040            "k_EMsgClientToGCSetServerConVar" => {
16041                Some(Self::KEMsgClientToGcSetServerConVar)
16042            }
16043            "k_EMsgClientToGCSetServerConVarResponse" => {
16044                Some(Self::KEMsgClientToGcSetServerConVarResponse)
16045            }
16046            "k_EMsgClientToGCSpectateLobby" => Some(Self::KEMsgClientToGcSpectateLobby),
16047            "k_EMsgClientToGCSpectateLobbyResponse" => {
16048                Some(Self::KEMsgClientToGcSpectateLobbyResponse)
16049            }
16050            "k_EMsgClientToGCPostMatchSurveyResponse" => {
16051                Some(Self::KEMsgClientToGcPostMatchSurveyResponse)
16052            }
16053            "k_EMsgClientToGCGetMatchHistory" => {
16054                Some(Self::KEMsgClientToGcGetMatchHistory)
16055            }
16056            "k_EMsgClientToGCGetMatchHistoryResponse" => {
16057                Some(Self::KEMsgClientToGcGetMatchHistoryResponse)
16058            }
16059            "k_EMsgClientToGCSpectateUser" => Some(Self::KEMsgClientToGcSpectateUser),
16060            "k_EMsgClientToGCSpectateUserResponse" => {
16061                Some(Self::KEMsgClientToGcSpectateUserResponse)
16062            }
16063            "k_EMsgClientToGCPartyCreate" => Some(Self::KEMsgClientToGcPartyCreate),
16064            "k_EMsgClientToGCPartyCreateResponse" => {
16065                Some(Self::KEMsgClientToGcPartyCreateResponse)
16066            }
16067            "k_EMsgClientToGCPartyLeave" => Some(Self::KEMsgClientToGcPartyLeave),
16068            "k_EMsgClientToGCPartyLeaveResponse" => {
16069                Some(Self::KEMsgClientToGcPartyLeaveResponse)
16070            }
16071            "k_EMsgClientToGCPartyJoin" => Some(Self::KEMsgClientToGcPartyJoin),
16072            "k_EMsgClientToGCPartyJoinResponse" => {
16073                Some(Self::KEMsgClientToGcPartyJoinResponse)
16074            }
16075            "k_EMsgClientToGCPartyAction" => Some(Self::KEMsgClientToGcPartyAction),
16076            "k_EMsgClientToGCPartyActionResponse" => {
16077                Some(Self::KEMsgClientToGcPartyActionResponse)
16078            }
16079            "k_EMsgClientToGCPartyStartMatch" => {
16080                Some(Self::KEMsgClientToGcPartyStartMatch)
16081            }
16082            "k_EMsgClientToGCPartyStartMatchResponse" => {
16083                Some(Self::KEMsgClientToGcPartyStartMatchResponse)
16084            }
16085            "k_EMsgClientToGCPartyInviteUser" => {
16086                Some(Self::KEMsgClientToGcPartyInviteUser)
16087            }
16088            "k_EMsgClientToGCPartyInviteUserResponse" => {
16089                Some(Self::KEMsgClientToGcPartyInviteUserResponse)
16090            }
16091            "k_EMsgGCToClientPartyEvent" => Some(Self::KEMsgGcToClientPartyEvent),
16092            "k_EMsgGCToClientCanRejoinParty" => Some(Self::KEMsgGcToClientCanRejoinParty),
16093            "k_EMsgClientToGCPartyJoinViaCode" => {
16094                Some(Self::KEMsgClientToGcPartyJoinViaCode)
16095            }
16096            "k_EMsgClientToGCPartyJoinViaCodeResponse" => {
16097                Some(Self::KEMsgClientToGcPartyJoinViaCodeResponse)
16098            }
16099            "k_EMsgClientToGCPartySetReadyState" => {
16100                Some(Self::KEMsgClientToGcPartySetReadyState)
16101            }
16102            "k_EMsgClientToGCPartySetReadyStateResponse" => {
16103                Some(Self::KEMsgClientToGcPartySetReadyStateResponse)
16104            }
16105            "k_EMsgClientToGCGetAccountStats" => {
16106                Some(Self::KEMsgClientToGcGetAccountStats)
16107            }
16108            "k_EMsgClientToGCGetAccountStatsResponse" => {
16109                Some(Self::KEMsgClientToGcGetAccountStatsResponse)
16110            }
16111            "k_EMsgGCToClientAccountStatsUpdated" => {
16112                Some(Self::KEMsgGcToClientAccountStatsUpdated)
16113            }
16114            "k_EMsgClientToGCGetMatchMetaData" => {
16115                Some(Self::KEMsgClientToGcGetMatchMetaData)
16116            }
16117            "k_EMsgClientToGCGetMatchMetaDataResponse" => {
16118                Some(Self::KEMsgClientToGcGetMatchMetaDataResponse)
16119            }
16120            "k_EMsgClientToGCDevAction" => Some(Self::KEMsgClientToGcDevAction),
16121            "k_EMsgClientToGCDevActionResponse" => {
16122                Some(Self::KEMsgClientToGcDevActionResponse)
16123            }
16124            "k_EMsgClientToGCRecordClientEvents" => {
16125                Some(Self::KEMsgClientToGcRecordClientEvents)
16126            }
16127            "k_EMsgClientToGCRecordClientEventsResponse" => {
16128                Some(Self::KEMsgClientToGcRecordClientEventsResponse)
16129            }
16130            "k_EMsgClientToGCSetNewPlayerProgress" => {
16131                Some(Self::KEMsgClientToGcSetNewPlayerProgress)
16132            }
16133            "k_EMsgClientToGCSetNewPlayerProgressResponse" => {
16134                Some(Self::KEMsgClientToGcSetNewPlayerProgressResponse)
16135            }
16136            "k_EMsgClientToGCUpdateAccountSync" => {
16137                Some(Self::KEMsgClientToGcUpdateAccountSync)
16138            }
16139            "k_EMsgClientToGCUpdateAccountSyncResponse" => {
16140                Some(Self::KEMsgClientToGcUpdateAccountSyncResponse)
16141            }
16142            "k_EMsgClientToGCGetHeroChoice" => Some(Self::KEMsgClientToGcGetHeroChoice),
16143            "k_EMsgClientToGCGetHeroChoiceResponse" => {
16144                Some(Self::KEMsgClientToGcGetHeroChoiceResponse)
16145            }
16146            "k_EMsgClientToGCUnlockHero" => Some(Self::KEMsgClientToGcUnlockHero),
16147            "k_EMsgClientToGCUnlockHeroResponse" => {
16148                Some(Self::KEMsgClientToGcUnlockHeroResponse)
16149            }
16150            "k_EMsgClientToGCBookUnlock" => Some(Self::KEMsgClientToGcBookUnlock),
16151            "k_EMsgClientToGCBookUnlockResponse" => {
16152                Some(Self::KEMsgClientToGcBookUnlockResponse)
16153            }
16154            "k_EMsgClientToGCGetBook" => Some(Self::KEMsgClientToGcGetBook),
16155            "k_EMsgClientToGCGetBookResponse" => {
16156                Some(Self::KEMsgClientToGcGetBookResponse)
16157            }
16158            "k_EMsgGCToClientBookUpdated" => Some(Self::KEMsgGcToClientBookUpdated),
16159            "k_EMsgClientToGCSubmitPlaytestUser" => {
16160                Some(Self::KEMsgClientToGcSubmitPlaytestUser)
16161            }
16162            "k_EMsgClientToGCSubmitPlaytestUserResponse" => {
16163                Some(Self::KEMsgClientToGcSubmitPlaytestUserResponse)
16164            }
16165            "k_EMsgClientToGCUpdateHeroBuild" => {
16166                Some(Self::KEMsgClientToGcUpdateHeroBuild)
16167            }
16168            "k_EMsgClientToGCUpdateHeroBuildResponse" => {
16169                Some(Self::KEMsgClientToGcUpdateHeroBuildResponse)
16170            }
16171            "k_EMsgClientToGCFindHeroBuilds" => Some(Self::KEMsgClientToGcFindHeroBuilds),
16172            "k_EMsgClientToGCFindHeroBuildsResponse" => {
16173                Some(Self::KEMsgClientToGcFindHeroBuildsResponse)
16174            }
16175            "k_EMsgClientToGCReportPlayerFromMatch" => {
16176                Some(Self::KEMsgClientToGcReportPlayerFromMatch)
16177            }
16178            "k_EMsgClientToGCReportPlayerFromMatchResponse" => {
16179                Some(Self::KEMsgClientToGcReportPlayerFromMatchResponse)
16180            }
16181            "k_EMsgClientToGCGetAccountMatchReports" => {
16182                Some(Self::KEMsgClientToGcGetAccountMatchReports)
16183            }
16184            "k_EMsgClientToGCGetAccountMatchReportsResponse" => {
16185                Some(Self::KEMsgClientToGcGetAccountMatchReportsResponse)
16186            }
16187            "k_EMsgClientToGCDeleteHeroBuild" => {
16188                Some(Self::KEMsgClientToGcDeleteHeroBuild)
16189            }
16190            "k_EMsgClientToGCDeleteHeroBuildResponse" => {
16191                Some(Self::KEMsgClientToGcDeleteHeroBuildResponse)
16192            }
16193            "k_EMsgClientToGCGetActiveMatches" => {
16194                Some(Self::KEMsgClientToGcGetActiveMatches)
16195            }
16196            "k_EMsgClientToGCGetActiveMatchesResponse" => {
16197                Some(Self::KEMsgClientToGcGetActiveMatchesResponse)
16198            }
16199            "k_EMsgClientToGCGetDiscordLink" => Some(Self::KEMsgClientToGcGetDiscordLink),
16200            "k_EMsgClientToGCGetDiscordLinkResponse" => {
16201                Some(Self::KEMsgClientToGcGetDiscordLinkResponse)
16202            }
16203            "k_EMsgClientToGCPartySetMode" => Some(Self::KEMsgClientToGcPartySetMode),
16204            "k_EMsgClientToGCPartySetModeResponse" => {
16205                Some(Self::KEMsgClientToGcPartySetModeResponse)
16206            }
16207            "k_EMsgClientToGCGrantForumAccess" => {
16208                Some(Self::KEMsgClientToGcGrantForumAccess)
16209            }
16210            "k_EMsgClientToGCGrantForumAccessResponse" => {
16211                Some(Self::KEMsgClientToGcGrantForumAccessResponse)
16212            }
16213            "k_EMsgClientToGCModeratorRequest" => {
16214                Some(Self::KEMsgClientToGcModeratorRequest)
16215            }
16216            "k_EMsgClientToGCModeratorRequestResponse" => {
16217                Some(Self::KEMsgClientToGcModeratorRequestResponse)
16218            }
16219            "k_EMsgClientToGCGetFriendGameStatus" => {
16220                Some(Self::KEMsgClientToGcGetFriendGameStatus)
16221            }
16222            "k_EMsgClientToGCGetFriendGameStatusResponse" => {
16223                Some(Self::KEMsgClientToGcGetFriendGameStatusResponse)
16224            }
16225            "k_EMsgClientToGCUpdateHeroBuildPreference" => {
16226                Some(Self::KEMsgClientToGcUpdateHeroBuildPreference)
16227            }
16228            "k_EMsgClientToGCUpdateHeroBuildPreferenceResponse" => {
16229                Some(Self::KEMsgClientToGcUpdateHeroBuildPreferenceResponse)
16230            }
16231            "k_EMsgClientToGCUpdateSpectatorStatus" => {
16232                Some(Self::KEMsgClientToGcUpdateSpectatorStatus)
16233            }
16234            "k_EMsgClientToGCCommendPlayerFromMatch" => {
16235                Some(Self::KEMsgClientToGcCommendPlayerFromMatch)
16236            }
16237            "k_EMsgClientToGCCommendPlayerFromMatchResponse" => {
16238                Some(Self::KEMsgClientToGcCommendPlayerFromMatchResponse)
16239            }
16240            "k_EMsgGCToClientCommendNotification" => {
16241                Some(Self::KEMsgGcToClientCommendNotification)
16242            }
16243            "k_EMsgGCToClientHeroLabsSchedule" => {
16244                Some(Self::KEMsgGcToClientHeroLabsSchedule)
16245            }
16246            "k_EMsgClientToGCDevRequestCheatReports" => {
16247                Some(Self::KEMsgClientToGcDevRequestCheatReports)
16248            }
16249            "k_EMsgClientToGCDevRequestCheatReportsResponse" => {
16250                Some(Self::KEMsgClientToGcDevRequestCheatReportsResponse)
16251            }
16252            "k_EMsgClientToGCDevBan" => Some(Self::KEMsgClientToGcDevBan),
16253            "k_EMsgClientToGCDevBanResponse" => Some(Self::KEMsgClientToGcDevBanResponse),
16254            "k_EMsgClientToGCGetHeroMMRRankings" => {
16255                Some(Self::KEMsgClientToGcGetHeroMmrRankings)
16256            }
16257            "k_EMsgClientToGCGetHeroMMRRankingsResponse" => {
16258                Some(Self::KEMsgClientToGcGetHeroMmrRankingsResponse)
16259            }
16260            "k_EMsgClientToGCGetLeaderboard" => Some(Self::KEMsgClientToGcGetLeaderboard),
16261            "k_EMsgClientToGCGetLeaderboardResponse" => {
16262                Some(Self::KEMsgClientToGcGetLeaderboardResponse)
16263            }
16264            "k_EMsgClientToGCGetAccountLeaderboards" => {
16265                Some(Self::KEMsgClientToGcGetAccountLeaderboards)
16266            }
16267            "k_EMsgClientToGCGetAccountLeaderboardsResponse" => {
16268                Some(Self::KEMsgClientToGcGetAccountLeaderboardsResponse)
16269            }
16270            "k_EMsgClientToGCTarotGetUserData" => {
16271                Some(Self::KEMsgClientToGcTarotGetUserData)
16272            }
16273            "k_EMsgClientToGCTarotGetUserDataResponse" => {
16274                Some(Self::KEMsgClientToGcTarotGetUserDataResponse)
16275            }
16276            "k_EMsgGCToClientTarotUserDataUpdated" => {
16277                Some(Self::KEMsgGcToClientTarotUserDataUpdated)
16278            }
16279            "k_EMsgClientToGCTarotPlaceTile" => Some(Self::KEMsgClientToGcTarotPlaceTile),
16280            "k_EMsgClientToGCTarotPlaceTileResponse" => {
16281                Some(Self::KEMsgClientToGcTarotPlaceTileResponse)
16282            }
16283            "k_EMsgClientToGCTarotApplyRune" => Some(Self::KEMsgClientToGcTarotApplyRune),
16284            "k_EMsgClientToGCTarotApplyRuneResponse" => {
16285                Some(Self::KEMsgClientToGcTarotApplyRuneResponse)
16286            }
16287            "k_EMsgClientToGCTarotCompleteBoard" => {
16288                Some(Self::KEMsgClientToGcTarotCompleteBoard)
16289            }
16290            "k_EMsgClientToGCTarotCompleteBoardResponse" => {
16291                Some(Self::KEMsgClientToGcTarotCompleteBoardResponse)
16292            }
16293            "k_EMsgClientToGCTarotDevCreateTile" => {
16294                Some(Self::KEMsgClientToGcTarotDevCreateTile)
16295            }
16296            "k_EMsgClientToGCTarotDevCreateTileResponse" => {
16297                Some(Self::KEMsgClientToGcTarotDevCreateTileResponse)
16298            }
16299            "k_EMsgClientToGCTarotDevCreateBoard" => {
16300                Some(Self::KEMsgClientToGcTarotDevCreateBoard)
16301            }
16302            "k_EMsgClientToGCTarotDevCreateBoardResponse" => {
16303                Some(Self::KEMsgClientToGcTarotDevCreateBoardResponse)
16304            }
16305            "k_EMsgClientToGCTarotDevGenerateTestTiles" => {
16306                Some(Self::KEMsgClientToGcTarotDevGenerateTestTiles)
16307            }
16308            "k_EMsgClientToGCTarotDevGenerateTestTilesResponse" => {
16309                Some(Self::KEMsgClientToGcTarotDevGenerateTestTilesResponse)
16310            }
16311            "k_EMsgClientToGCTarotDevModifyEnergy" => {
16312                Some(Self::KEMsgClientToGcTarotDevModifyEnergy)
16313            }
16314            "k_EMsgClientToGCTarotDevModifyEnergyResponse" => {
16315                Some(Self::KEMsgClientToGcTarotDevModifyEnergyResponse)
16316            }
16317            "k_EMsgClientToGCGenerateChallengeSet" => {
16318                Some(Self::KEMsgClientToGcGenerateChallengeSet)
16319            }
16320            "k_EMsgClientToGCGenerateChallengeSetResponse" => {
16321                Some(Self::KEMsgClientToGcGenerateChallengeSetResponse)
16322            }
16323            "k_EMsgClientToGCChallengeActivate" => {
16324                Some(Self::KEMsgClientToGcChallengeActivate)
16325            }
16326            "k_EMsgClientToGCChallengeActivateResponse" => {
16327                Some(Self::KEMsgClientToGcChallengeActivateResponse)
16328            }
16329            "k_EMsgClientToGCChallengeClaim" => Some(Self::KEMsgClientToGcChallengeClaim),
16330            "k_EMsgClientToGCChallengeClaimResponse" => {
16331                Some(Self::KEMsgClientToGcChallengeClaimResponse)
16332            }
16333            "k_EMsgClientToGCChallengeCancel" => {
16334                Some(Self::KEMsgClientToGcChallengeCancel)
16335            }
16336            "k_EMsgClientToGCChallengeCancelResponse" => {
16337                Some(Self::KEMsgClientToGcChallengeCancelResponse)
16338            }
16339            "k_EMsgClientToGCGetSurveyQuestion" => {
16340                Some(Self::KEMsgClientToGcGetSurveyQuestion)
16341            }
16342            "k_EMsgClientToGCGetSurveyQuestionResponse" => {
16343                Some(Self::KEMsgClientToGcGetSurveyQuestionResponse)
16344            }
16345            "k_EMsgClientToGCSubmitSurvey" => Some(Self::KEMsgClientToGcSubmitSurvey),
16346            "k_EMsgClientToGCSubmitSurveyResponse" => {
16347                Some(Self::KEMsgClientToGcSubmitSurveyResponse)
16348            }
16349            "k_EMsgClientToGCGetRankData" => Some(Self::KEMsgClientToGcGetRankData),
16350            "k_EMsgGCToClientGetRankDataResponse" => {
16351                Some(Self::KEMsgGcToClientGetRankDataResponse)
16352            }
16353            "k_EMsgGCToClientRankDataUpdate" => Some(Self::KEMsgGcToClientRankDataUpdate),
16354            "k_EMsgClientToGCGetHideoutSDRTicket" => {
16355                Some(Self::KEMsgClientToGcGetHideoutSdrTicket)
16356            }
16357            "k_EMsgClientToGCGetHideoutSDRTicketResponse" => {
16358                Some(Self::KEMsgClientToGcGetHideoutSdrTicketResponse)
16359            }
16360            "k_EMsgClientToGCSubmitHeroReleaseVote" => {
16361                Some(Self::KEMsgClientToGcSubmitHeroReleaseVote)
16362            }
16363            "k_EMsgClientToGCPartySendChatMsg" => {
16364                Some(Self::KEMsgClientToGcPartySendChatMsg)
16365            }
16366            "k_EMsgClientToGCPartySendChatMsgResponse" => {
16367                Some(Self::KEMsgClientToGcPartySendChatMsgResponse)
16368            }
16369            "k_EMsgGCToClientPartyChatMsg" => Some(Self::KEMsgGcToClientPartyChatMsg),
16370            "k_EMsgClientToGCRequestHeroReleaseVoteTally" => {
16371                Some(Self::KEMsgClientToGcRequestHeroReleaseVoteTally)
16372            }
16373            "k_EMsgGCToClientUpdateHeroReleaseVoteTally" => {
16374                Some(Self::KEMsgGcToClientUpdateHeroReleaseVoteTally)
16375            }
16376            _ => None,
16377        }
16378    }
16379}
16380#[derive(serde::Serialize, serde::Deserialize)]
16381#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16382#[repr(i32)]
16383pub enum ECitadelAccountPermissionFlag {
16384    KEAccountPermissionRanked = 1,
16385}
16386impl ECitadelAccountPermissionFlag {
16387    /// String value of the enum field names used in the ProtoBuf definition.
16388    ///
16389    /// The values are not transformed in any way and thus are considered stable
16390    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16391    pub fn as_str_name(&self) -> &'static str {
16392        match self {
16393            Self::KEAccountPermissionRanked => "k_eAccountPermission_Ranked",
16394        }
16395    }
16396    /// Creates an enum from field names used in the ProtoBuf definition.
16397    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16398        match value {
16399            "k_eAccountPermission_Ranked" => Some(Self::KEAccountPermissionRanked),
16400            _ => None,
16401        }
16402    }
16403}
16404#[derive(serde::Serialize, serde::Deserialize)]
16405#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16406#[repr(i32)]
16407pub enum ECitadelNewPlayerProgressFlag {
16408    KENewPlayerProgressGettingStarted = 1,
16409    KENewPlayerProgressHeroTraining = 2,
16410    KENewPlayerProgressLaneTraining = 3,
16411}
16412impl ECitadelNewPlayerProgressFlag {
16413    /// String value of the enum field names used in the ProtoBuf definition.
16414    ///
16415    /// The values are not transformed in any way and thus are considered stable
16416    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16417    pub fn as_str_name(&self) -> &'static str {
16418        match self {
16419            Self::KENewPlayerProgressGettingStarted => {
16420                "k_eNewPlayerProgress_GettingStarted"
16421            }
16422            Self::KENewPlayerProgressHeroTraining => "k_eNewPlayerProgress_HeroTraining",
16423            Self::KENewPlayerProgressLaneTraining => "k_eNewPlayerProgress_LaneTraining",
16424        }
16425    }
16426    /// Creates an enum from field names used in the ProtoBuf definition.
16427    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16428        match value {
16429            "k_eNewPlayerProgress_GettingStarted" => {
16430                Some(Self::KENewPlayerProgressGettingStarted)
16431            }
16432            "k_eNewPlayerProgress_HeroTraining" => {
16433                Some(Self::KENewPlayerProgressHeroTraining)
16434            }
16435            "k_eNewPlayerProgress_LaneTraining" => {
16436                Some(Self::KENewPlayerProgressLaneTraining)
16437            }
16438            _ => None,
16439        }
16440    }
16441}
16442#[derive(serde::Serialize, serde::Deserialize)]
16443#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16444#[repr(i32)]
16445pub enum EProfileCardSlotType {
16446    KEProfileCardSlotTypeEmpty = 0,
16447    KEProfileCardSlotTypeStat = 1,
16448    KEProfileCardSlotTypeHero = 2,
16449}
16450impl EProfileCardSlotType {
16451    /// String value of the enum field names used in the ProtoBuf definition.
16452    ///
16453    /// The values are not transformed in any way and thus are considered stable
16454    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16455    pub fn as_str_name(&self) -> &'static str {
16456        match self {
16457            Self::KEProfileCardSlotTypeEmpty => "k_EProfileCardSlotType_Empty",
16458            Self::KEProfileCardSlotTypeStat => "k_EProfileCardSlotType_Stat",
16459            Self::KEProfileCardSlotTypeHero => "k_EProfileCardSlotType_Hero",
16460        }
16461    }
16462    /// Creates an enum from field names used in the ProtoBuf definition.
16463    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16464        match value {
16465            "k_EProfileCardSlotType_Empty" => Some(Self::KEProfileCardSlotTypeEmpty),
16466            "k_EProfileCardSlotType_Stat" => Some(Self::KEProfileCardSlotTypeStat),
16467            "k_EProfileCardSlotType_Hero" => Some(Self::KEProfileCardSlotTypeHero),
16468            _ => None,
16469        }
16470    }
16471}
16472#[derive(serde::Serialize, serde::Deserialize)]
16473#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16474#[repr(i32)]
16475pub enum EDevBanReason {
16476    KEDevBanReasonUnspecified = 0,
16477    KEDevBanReasonAimAssist = 1,
16478    KEDevBanReasonVisionAssist = 2,
16479    KEDevBanReasonMovementAssist = 3,
16480}
16481impl EDevBanReason {
16482    /// String value of the enum field names used in the ProtoBuf definition.
16483    ///
16484    /// The values are not transformed in any way and thus are considered stable
16485    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16486    pub fn as_str_name(&self) -> &'static str {
16487        match self {
16488            Self::KEDevBanReasonUnspecified => "k_eDevBanReason_Unspecified",
16489            Self::KEDevBanReasonAimAssist => "k_eDevBanReason_AimAssist",
16490            Self::KEDevBanReasonVisionAssist => "k_eDevBanReason_VisionAssist",
16491            Self::KEDevBanReasonMovementAssist => "k_eDevBanReason_MovementAssist",
16492        }
16493    }
16494    /// Creates an enum from field names used in the ProtoBuf definition.
16495    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16496        match value {
16497            "k_eDevBanReason_Unspecified" => Some(Self::KEDevBanReasonUnspecified),
16498            "k_eDevBanReason_AimAssist" => Some(Self::KEDevBanReasonAimAssist),
16499            "k_eDevBanReason_VisionAssist" => Some(Self::KEDevBanReasonVisionAssist),
16500            "k_eDevBanReason_MovementAssist" => Some(Self::KEDevBanReasonMovementAssist),
16501            _ => None,
16502        }
16503    }
16504}
16505#[derive(serde::Serialize, serde::Deserialize)]
16506#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16507#[repr(i32)]
16508pub enum ECitadelClientAccountEvent {
16509    KELaunchedHeroTest = 1,
16510    KEViewedProfile = 2,
16511    KEViewedHeroes = 4,
16512    KEViewedHeroDetails = 5,
16513    KEViewedPatchNotes = 6,
16514    KEViewedEvents = 7,
16515    KEViewedGettingStarted = 8,
16516    KEViewedGuidePage = 9,
16517    KELaunchedClient = 10,
16518    KEEditRoster = 11,
16519    KEViewedWatch = 12,
16520    KECreatedParty = 13,
16521    KECreatedPartyWithInvite = 14,
16522    KEViewedSelfProfile = 15,
16523    KEJoinedPartyCode = 16,
16524    KESentPartyInvite = 17,
16525    KEAcceptPartyInvite = 18,
16526    KERejectPartyInvite = 19,
16527    KESpectateUser = 20,
16528    KESpectateMatch = 21,
16529    KEEnteredMatchMaking = 22,
16530    KELeftMatchMaking = 23,
16531    KEEnteredPartyMatchMaking = 24,
16532    KELeftPartyMatchMaking = 25,
16533    KEDownloadedReplay = 26,
16534    KEWatchedReplay = 27,
16535    KEViewMatchDetails = 28,
16536    KEMatchDetailsTab = 29,
16537    KEDeleteReplay = 30,
16538    KEBotMatchGuided = 31,
16539    KEBotMatchEasy = 32,
16540    KEBotMatchHard = 33,
16541    KELiveUpdatedRoster = 34,
16542    KEMatchMakingIdleDisplayed = 35,
16543    KEMatchMakingIdleStopped = 36,
16544    KEConnectReacquireTicket = 37,
16545    KEConnectAttemptReconnect = 38,
16546    KEDisconnectPresentedPrompt = 39,
16547    KEDisconnectConfirmed = 40,
16548    KEViewedSettingsOptions = 41,
16549    KEViewedSettingsVideo = 42,
16550    KEViewedSettingsAudio = 43,
16551    KEViewedSettingsHotKey = 44,
16552    KEViewedSettingsChatWheel = 45,
16553    KEViewedSettingsAbout = 46,
16554    KEOpenedSubmitFeedback = 47,
16555    KETutorialSkipPressed = 48,
16556    KETutorialSkipConfirmed = 49,
16557    KEViewedGuidePage5s = 50,
16558    KEViewedGuidePage15s = 51,
16559    KEViewedGuidePage30s = 52,
16560    KEViewedGuidePage60s = 53,
16561    KEOpenedBookTest = 54,
16562    KESandboxViaHeroPage = 55,
16563    KEViewedSettingsSteamInput = 56,
16564    KEViewedSettingsSocial = 57,
16565    KECalibrationMatch = 58,
16566    KESandboxViaPlayMenu = 59,
16567    KEBotMatchMedium = 60,
16568    KESandboxViaHideoutTeleport = 61,
16569    KERosterSelectSingleHero = 62,
16570}
16571impl ECitadelClientAccountEvent {
16572    /// String value of the enum field names used in the ProtoBuf definition.
16573    ///
16574    /// The values are not transformed in any way and thus are considered stable
16575    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16576    pub fn as_str_name(&self) -> &'static str {
16577        match self {
16578            Self::KELaunchedHeroTest => "k_eLaunchedHeroTest",
16579            Self::KEViewedProfile => "k_eViewedProfile",
16580            Self::KEViewedHeroes => "k_eViewedHeroes",
16581            Self::KEViewedHeroDetails => "k_eViewedHeroDetails",
16582            Self::KEViewedPatchNotes => "k_eViewedPatchNotes",
16583            Self::KEViewedEvents => "k_eViewedEvents",
16584            Self::KEViewedGettingStarted => "k_eViewedGettingStarted",
16585            Self::KEViewedGuidePage => "k_eViewedGuidePage",
16586            Self::KELaunchedClient => "k_eLaunchedClient",
16587            Self::KEEditRoster => "k_eEditRoster",
16588            Self::KEViewedWatch => "k_eViewedWatch",
16589            Self::KECreatedParty => "k_eCreatedParty",
16590            Self::KECreatedPartyWithInvite => "k_eCreatedPartyWithInvite",
16591            Self::KEViewedSelfProfile => "k_eViewedSelfProfile",
16592            Self::KEJoinedPartyCode => "k_eJoinedPartyCode",
16593            Self::KESentPartyInvite => "k_eSentPartyInvite",
16594            Self::KEAcceptPartyInvite => "k_eAcceptPartyInvite",
16595            Self::KERejectPartyInvite => "k_eRejectPartyInvite",
16596            Self::KESpectateUser => "k_eSpectateUser",
16597            Self::KESpectateMatch => "k_eSpectateMatch",
16598            Self::KEEnteredMatchMaking => "k_eEnteredMatchMaking",
16599            Self::KELeftMatchMaking => "k_eLeftMatchMaking",
16600            Self::KEEnteredPartyMatchMaking => "k_eEnteredPartyMatchMaking",
16601            Self::KELeftPartyMatchMaking => "k_eLeftPartyMatchMaking",
16602            Self::KEDownloadedReplay => "k_eDownloadedReplay",
16603            Self::KEWatchedReplay => "k_eWatchedReplay",
16604            Self::KEViewMatchDetails => "k_eViewMatchDetails",
16605            Self::KEMatchDetailsTab => "k_eMatchDetailsTab",
16606            Self::KEDeleteReplay => "k_eDeleteReplay",
16607            Self::KEBotMatchGuided => "k_eBotMatch_Guided",
16608            Self::KEBotMatchEasy => "k_eBotMatch_Easy",
16609            Self::KEBotMatchHard => "k_eBotMatch_Hard",
16610            Self::KELiveUpdatedRoster => "k_eLiveUpdatedRoster",
16611            Self::KEMatchMakingIdleDisplayed => "k_eMatchMakingIdle_Displayed",
16612            Self::KEMatchMakingIdleStopped => "k_eMatchMakingIdle_Stopped",
16613            Self::KEConnectReacquireTicket => "k_eConnectReacquireTicket",
16614            Self::KEConnectAttemptReconnect => "k_eConnectAttemptReconnect",
16615            Self::KEDisconnectPresentedPrompt => "k_eDisconnectPresentedPrompt",
16616            Self::KEDisconnectConfirmed => "k_eDisconnectConfirmed",
16617            Self::KEViewedSettingsOptions => "k_eViewedSettings_Options",
16618            Self::KEViewedSettingsVideo => "k_eViewedSettings_Video",
16619            Self::KEViewedSettingsAudio => "k_eViewedSettings_Audio",
16620            Self::KEViewedSettingsHotKey => "k_eViewedSettings_HotKey",
16621            Self::KEViewedSettingsChatWheel => "k_eViewedSettings_ChatWheel",
16622            Self::KEViewedSettingsAbout => "k_eViewedSettings_About",
16623            Self::KEOpenedSubmitFeedback => "k_eOpenedSubmitFeedback",
16624            Self::KETutorialSkipPressed => "k_eTutorialSkip_Pressed",
16625            Self::KETutorialSkipConfirmed => "k_eTutorialSkip_Confirmed",
16626            Self::KEViewedGuidePage5s => "k_eViewedGuidePage_5s",
16627            Self::KEViewedGuidePage15s => "k_eViewedGuidePage_15s",
16628            Self::KEViewedGuidePage30s => "k_eViewedGuidePage_30s",
16629            Self::KEViewedGuidePage60s => "k_eViewedGuidePage_60s",
16630            Self::KEOpenedBookTest => "k_eOpenedBookTest",
16631            Self::KESandboxViaHeroPage => "k_eSandboxViaHeroPage",
16632            Self::KEViewedSettingsSteamInput => "k_eViewedSettings_SteamInput",
16633            Self::KEViewedSettingsSocial => "k_eViewedSettings_Social",
16634            Self::KECalibrationMatch => "k_eCalibrationMatch",
16635            Self::KESandboxViaPlayMenu => "k_eSandboxViaPlayMenu",
16636            Self::KEBotMatchMedium => "k_eBotMatch_Medium",
16637            Self::KESandboxViaHideoutTeleport => "k_eSandboxViaHideoutTeleport",
16638            Self::KERosterSelectSingleHero => "k_eRosterSelectSingleHero",
16639        }
16640    }
16641    /// Creates an enum from field names used in the ProtoBuf definition.
16642    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16643        match value {
16644            "k_eLaunchedHeroTest" => Some(Self::KELaunchedHeroTest),
16645            "k_eViewedProfile" => Some(Self::KEViewedProfile),
16646            "k_eViewedHeroes" => Some(Self::KEViewedHeroes),
16647            "k_eViewedHeroDetails" => Some(Self::KEViewedHeroDetails),
16648            "k_eViewedPatchNotes" => Some(Self::KEViewedPatchNotes),
16649            "k_eViewedEvents" => Some(Self::KEViewedEvents),
16650            "k_eViewedGettingStarted" => Some(Self::KEViewedGettingStarted),
16651            "k_eViewedGuidePage" => Some(Self::KEViewedGuidePage),
16652            "k_eLaunchedClient" => Some(Self::KELaunchedClient),
16653            "k_eEditRoster" => Some(Self::KEEditRoster),
16654            "k_eViewedWatch" => Some(Self::KEViewedWatch),
16655            "k_eCreatedParty" => Some(Self::KECreatedParty),
16656            "k_eCreatedPartyWithInvite" => Some(Self::KECreatedPartyWithInvite),
16657            "k_eViewedSelfProfile" => Some(Self::KEViewedSelfProfile),
16658            "k_eJoinedPartyCode" => Some(Self::KEJoinedPartyCode),
16659            "k_eSentPartyInvite" => Some(Self::KESentPartyInvite),
16660            "k_eAcceptPartyInvite" => Some(Self::KEAcceptPartyInvite),
16661            "k_eRejectPartyInvite" => Some(Self::KERejectPartyInvite),
16662            "k_eSpectateUser" => Some(Self::KESpectateUser),
16663            "k_eSpectateMatch" => Some(Self::KESpectateMatch),
16664            "k_eEnteredMatchMaking" => Some(Self::KEEnteredMatchMaking),
16665            "k_eLeftMatchMaking" => Some(Self::KELeftMatchMaking),
16666            "k_eEnteredPartyMatchMaking" => Some(Self::KEEnteredPartyMatchMaking),
16667            "k_eLeftPartyMatchMaking" => Some(Self::KELeftPartyMatchMaking),
16668            "k_eDownloadedReplay" => Some(Self::KEDownloadedReplay),
16669            "k_eWatchedReplay" => Some(Self::KEWatchedReplay),
16670            "k_eViewMatchDetails" => Some(Self::KEViewMatchDetails),
16671            "k_eMatchDetailsTab" => Some(Self::KEMatchDetailsTab),
16672            "k_eDeleteReplay" => Some(Self::KEDeleteReplay),
16673            "k_eBotMatch_Guided" => Some(Self::KEBotMatchGuided),
16674            "k_eBotMatch_Easy" => Some(Self::KEBotMatchEasy),
16675            "k_eBotMatch_Hard" => Some(Self::KEBotMatchHard),
16676            "k_eLiveUpdatedRoster" => Some(Self::KELiveUpdatedRoster),
16677            "k_eMatchMakingIdle_Displayed" => Some(Self::KEMatchMakingIdleDisplayed),
16678            "k_eMatchMakingIdle_Stopped" => Some(Self::KEMatchMakingIdleStopped),
16679            "k_eConnectReacquireTicket" => Some(Self::KEConnectReacquireTicket),
16680            "k_eConnectAttemptReconnect" => Some(Self::KEConnectAttemptReconnect),
16681            "k_eDisconnectPresentedPrompt" => Some(Self::KEDisconnectPresentedPrompt),
16682            "k_eDisconnectConfirmed" => Some(Self::KEDisconnectConfirmed),
16683            "k_eViewedSettings_Options" => Some(Self::KEViewedSettingsOptions),
16684            "k_eViewedSettings_Video" => Some(Self::KEViewedSettingsVideo),
16685            "k_eViewedSettings_Audio" => Some(Self::KEViewedSettingsAudio),
16686            "k_eViewedSettings_HotKey" => Some(Self::KEViewedSettingsHotKey),
16687            "k_eViewedSettings_ChatWheel" => Some(Self::KEViewedSettingsChatWheel),
16688            "k_eViewedSettings_About" => Some(Self::KEViewedSettingsAbout),
16689            "k_eOpenedSubmitFeedback" => Some(Self::KEOpenedSubmitFeedback),
16690            "k_eTutorialSkip_Pressed" => Some(Self::KETutorialSkipPressed),
16691            "k_eTutorialSkip_Confirmed" => Some(Self::KETutorialSkipConfirmed),
16692            "k_eViewedGuidePage_5s" => Some(Self::KEViewedGuidePage5s),
16693            "k_eViewedGuidePage_15s" => Some(Self::KEViewedGuidePage15s),
16694            "k_eViewedGuidePage_30s" => Some(Self::KEViewedGuidePage30s),
16695            "k_eViewedGuidePage_60s" => Some(Self::KEViewedGuidePage60s),
16696            "k_eOpenedBookTest" => Some(Self::KEOpenedBookTest),
16697            "k_eSandboxViaHeroPage" => Some(Self::KESandboxViaHeroPage),
16698            "k_eViewedSettings_SteamInput" => Some(Self::KEViewedSettingsSteamInput),
16699            "k_eViewedSettings_Social" => Some(Self::KEViewedSettingsSocial),
16700            "k_eCalibrationMatch" => Some(Self::KECalibrationMatch),
16701            "k_eSandboxViaPlayMenu" => Some(Self::KESandboxViaPlayMenu),
16702            "k_eBotMatch_Medium" => Some(Self::KEBotMatchMedium),
16703            "k_eSandboxViaHideoutTeleport" => Some(Self::KESandboxViaHideoutTeleport),
16704            "k_eRosterSelectSingleHero" => Some(Self::KERosterSelectSingleHero),
16705            _ => None,
16706        }
16707    }
16708}
16709#[derive(serde::Serialize, serde::Deserialize)]
16710#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
16711#[repr(i32)]
16712pub enum ECommendType {
16713    KEInvalid = 0,
16714    KEGeneric = 1,
16715    KEFriendly = 2,
16716    KETeamwork = 3,
16717    KESkilled = 4,
16718}
16719impl ECommendType {
16720    /// String value of the enum field names used in the ProtoBuf definition.
16721    ///
16722    /// The values are not transformed in any way and thus are considered stable
16723    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
16724    pub fn as_str_name(&self) -> &'static str {
16725        match self {
16726            Self::KEInvalid => "k_eInvalid",
16727            Self::KEGeneric => "k_eGeneric",
16728            Self::KEFriendly => "k_eFriendly",
16729            Self::KETeamwork => "k_eTeamwork",
16730            Self::KESkilled => "k_eSkilled",
16731        }
16732    }
16733    /// Creates an enum from field names used in the ProtoBuf definition.
16734    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
16735        match value {
16736            "k_eInvalid" => Some(Self::KEInvalid),
16737            "k_eGeneric" => Some(Self::KEGeneric),
16738            "k_eFriendly" => Some(Self::KEFriendly),
16739            "k_eTeamwork" => Some(Self::KETeamwork),
16740            "k_eSkilled" => Some(Self::KESkilled),
16741            _ => None,
16742        }
16743    }
16744}
16745#[derive(serde::Serialize, serde::Deserialize)]
16746#[derive(Clone, PartialEq, ::prost::Message)]
16747pub struct CMsgServerCrashSentinelFile {
16748    #[prost(uint32, optional, tag = "1")]
16749    pub version: ::core::option::Option<u32>,
16750    #[prost(fixed64, optional, tag = "2")]
16751    pub server_steam_id: ::core::option::Option<u64>,
16752    #[prost(fixed32, optional, tag = "3")]
16753    pub server_public_ip_addr: ::core::option::Option<u32>,
16754    #[prost(uint32, optional, tag = "4")]
16755    pub server_port: ::core::option::Option<u32>,
16756    #[prost(uint32, optional, tag = "5")]
16757    pub server_cluster_id: ::core::option::Option<u32>,
16758    #[prost(uint32, optional, tag = "6")]
16759    pub pid: ::core::option::Option<u32>,
16760    #[prost(uint32, optional, tag = "7")]
16761    pub saved_time: ::core::option::Option<u32>,
16762    #[prost(uint32, optional, tag = "8")]
16763    pub server_version: ::core::option::Option<u32>,
16764    #[prost(message, optional, tag = "9")]
16765    pub game_info: ::core::option::Option<c_msg_server_crash_sentinel_file::GameInfo>,
16766    #[prost(uint32, optional, tag = "10")]
16767    pub server_private_ip_addr: ::core::option::Option<u32>,
16768    #[prost(uint32, optional, tag = "11")]
16769    pub instance_id: ::core::option::Option<u32>,
16770    #[prost(uint32, optional, tag = "12")]
16771    pub server_region_id: ::core::option::Option<u32>,
16772}
16773/// Nested message and enum types in `CMsgServerCrashSentinelFile`.
16774pub mod c_msg_server_crash_sentinel_file {
16775    #[derive(serde::Serialize, serde::Deserialize)]
16776    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16777    pub struct Player {
16778        #[prost(uint32, optional, tag = "1")]
16779        pub account_id: ::core::option::Option<u32>,
16780        #[prost(uint32, optional, tag = "2")]
16781        pub hero_id: ::core::option::Option<u32>,
16782    }
16783    #[derive(serde::Serialize, serde::Deserialize)]
16784    #[derive(Clone, PartialEq, ::prost::Message)]
16785    pub struct GameInfo {
16786        #[prost(uint64, optional, tag = "1")]
16787        pub match_id: ::core::option::Option<u64>,
16788        #[prost(fixed64, optional, tag = "2")]
16789        pub lobby_id: ::core::option::Option<u64>,
16790        #[prost(uint32, optional, tag = "3")]
16791        pub server_state: ::core::option::Option<u32>,
16792        #[prost(message, repeated, tag = "5")]
16793        pub players: ::prost::alloc::vec::Vec<Player>,
16794        #[prost(
16795            enumeration = "super::ECitadelMatchMode",
16796            optional,
16797            tag = "6",
16798            default = "KECitadelMatchModeInvalid"
16799        )]
16800        pub match_mode: ::core::option::Option<i32>,
16801        #[prost(
16802            enumeration = "super::ECitadelGameMode",
16803            optional,
16804            tag = "7",
16805            default = "KECitadelGameModeInvalid"
16806        )]
16807        pub game_mode: ::core::option::Option<i32>,
16808        #[prost(bool, optional, tag = "8")]
16809        pub was_server_shutdown: ::core::option::Option<bool>,
16810        #[prost(uint64, optional, tag = "9")]
16811        pub hideout_lobby_id: ::core::option::Option<u64>,
16812        #[prost(bool, optional, tag = "10")]
16813        pub allow_matches: ::core::option::Option<bool>,
16814        #[prost(bool, optional, tag = "11")]
16815        pub allow_hideout: ::core::option::Option<bool>,
16816    }
16817}
16818#[derive(serde::Serialize, serde::Deserialize)]
16819#[derive(Clone, PartialEq, ::prost::Message)]
16820pub struct CMsgAccountChallengesActive {
16821    #[prost(message, repeated, tag = "1")]
16822    pub challenges: ::prost::alloc::vec::Vec<c_msg_account_challenges_active::Challenge>,
16823}
16824/// Nested message and enum types in `CMsgAccountChallengesActive`.
16825pub mod c_msg_account_challenges_active {
16826    #[derive(serde::Serialize, serde::Deserialize)]
16827    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16828    pub struct Challenge {
16829        #[prost(uint64, optional, tag = "1")]
16830        pub challenge_id: ::core::option::Option<u64>,
16831        #[prost(uint32, optional, tag = "2")]
16832        pub progress: ::core::option::Option<u32>,
16833        #[prost(uint32, optional, tag = "3")]
16834        pub max_progress: ::core::option::Option<u32>,
16835    }
16836}
16837#[derive(serde::Serialize, serde::Deserialize)]
16838#[derive(Clone, PartialEq, ::prost::Message)]
16839pub struct CServerLobbyDataPlayerMmr {
16840    #[prost(message, repeated, tag = "1")]
16841    pub players: ::prost::alloc::vec::Vec<c_server_lobby_data_player_mmr::Player>,
16842}
16843/// Nested message and enum types in `CServerLobbyData_PlayerMMR`.
16844pub mod c_server_lobby_data_player_mmr {
16845    #[derive(serde::Serialize, serde::Deserialize)]
16846    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16847    pub struct Player {
16848        #[prost(uint32, optional, tag = "2")]
16849        pub player_mmr: ::core::option::Option<u32>,
16850        #[prost(uint32, optional, tag = "3")]
16851        pub player_uncertainty: ::core::option::Option<u32>,
16852        #[prost(uint32, optional, tag = "4")]
16853        pub hero_mmr: ::core::option::Option<u32>,
16854        #[prost(uint32, optional, tag = "5")]
16855        pub hero_mmr_with_uncertainty: ::core::option::Option<u32>,
16856        #[prost(uint32, optional, tag = "6")]
16857        pub player_slot: ::core::option::Option<u32>,
16858    }
16859}
16860#[derive(serde::Serialize, serde::Deserialize)]
16861#[derive(Clone, PartialEq, ::prost::Message)]
16862pub struct CServerLobbyDataPlayerInfo {
16863    #[prost(uint32, optional, tag = "1")]
16864    pub account_id: ::core::option::Option<u32>,
16865    #[prost(message, repeated, tag = "2")]
16866    pub account_stats: ::prost::alloc::vec::Vec<CMsgAccountHeroStats>,
16867    #[prost(message, repeated, tag = "5")]
16868    pub book_info: ::prost::alloc::vec::Vec<CMsgAccountBookStats>,
16869    #[prost(message, optional, tag = "7")]
16870    pub challenges: ::core::option::Option<CMsgAccountChallengesActive>,
16871    #[prost(message, optional, tag = "8")]
16872    pub global_equips: ::core::option::Option<CMsgEquippedItemList>,
16873}
16874#[derive(serde::Serialize, serde::Deserialize)]
16875#[derive(Clone, PartialEq, ::prost::Message)]
16876pub struct CServerLobbyDataPostMatchSurvey {
16877    #[prost(message, repeated, tag = "1")]
16878    pub surveys: ::prost::alloc::vec::Vec<
16879        c_server_lobby_data_post_match_survey::PlayerSurvey,
16880    >,
16881}
16882/// Nested message and enum types in `CServerLobbyData_PostMatchSurvey`.
16883pub mod c_server_lobby_data_post_match_survey {
16884    #[derive(serde::Serialize, serde::Deserialize)]
16885    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16886    pub struct PlayerSurvey {
16887        #[prost(uint32, optional, tag = "1")]
16888        pub account_id: ::core::option::Option<u32>,
16889        #[prost(uint32, optional, tag = "2")]
16890        pub question_id: ::core::option::Option<u32>,
16891    }
16892}
16893#[derive(serde::Serialize, serde::Deserialize)]
16894#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
16895pub struct CServerLobbyDataAutoTest {
16896    #[prost(uint32, optional, tag = "2")]
16897    pub max_duration_s: ::core::option::Option<u32>,
16898}
16899#[derive(serde::Serialize, serde::Deserialize)]
16900#[derive(Clone, PartialEq, ::prost::Message)]
16901pub struct CServerLobbyDataPlayerStatValues {
16902    #[prost(message, repeated, tag = "1")]
16903    pub accolades: ::prost::alloc::vec::Vec<
16904        c_server_lobby_data_player_stat_values::AccoladeThresholds,
16905    >,
16906    #[prost(message, repeated, tag = "2")]
16907    pub stat_distributions: ::prost::alloc::vec::Vec<
16908        c_server_lobby_data_player_stat_values::StatDistribution,
16909    >,
16910}
16911/// Nested message and enum types in `CServerLobbyData_PlayerStatValues`.
16912pub mod c_server_lobby_data_player_stat_values {
16913    #[derive(serde::Serialize, serde::Deserialize)]
16914    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16915    pub struct AccoladeThresholds {
16916        #[prost(uint32, optional, tag = "1")]
16917        pub accolade_id: ::core::option::Option<u32>,
16918        #[prost(uint32, repeated, packed = "false", tag = "2")]
16919        pub thresholds: ::prost::alloc::vec::Vec<u32>,
16920    }
16921    #[derive(serde::Serialize, serde::Deserialize)]
16922    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
16923    pub struct StatDistribution {
16924        #[prost(uint32, optional, tag = "1")]
16925        pub tracked_stat_id: ::core::option::Option<u32>,
16926        #[prost(float, optional, tag = "2")]
16927        pub tracked_stat_mean: ::core::option::Option<f32>,
16928        #[prost(float, optional, tag = "3")]
16929        pub tracked_stat_std_dev: ::core::option::Option<f32>,
16930    }
16931}
16932#[derive(serde::Serialize, serde::Deserialize)]
16933#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
16934pub struct CsoCitadelServerDynamicLobby {
16935    #[prost(uint64, optional, tag = "1")]
16936    pub lobby_id: ::core::option::Option<u64>,
16937    #[prost(uint32, repeated, tag = "2")]
16938    pub left_account_ids: ::prost::alloc::vec::Vec<u32>,
16939    #[prost(bool, optional, tag = "3")]
16940    pub broadcast_active: ::core::option::Option<bool>,
16941    #[prost(uint32, optional, tag = "4")]
16942    pub spectator_count: ::core::option::Option<u32>,
16943}
16944#[derive(serde::Serialize, serde::Deserialize)]
16945#[derive(Clone, PartialEq, ::prost::Message)]
16946pub struct CsoCitadelServerStaticLobby {
16947    #[prost(message, repeated, tag = "1")]
16948    pub extra_messages: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
16949    #[prost(fixed64, optional, tag = "2")]
16950    pub server_steam_id: ::core::option::Option<u64>,
16951    #[prost(uint64, optional, tag = "3")]
16952    pub lobby_id: ::core::option::Option<u64>,
16953    #[prost(fixed32, optional, tag = "4")]
16954    pub replay_salt: ::core::option::Option<u32>,
16955    #[prost(string, optional, tag = "5")]
16956    pub level_name: ::core::option::Option<::prost::alloc::string::String>,
16957    #[prost(message, repeated, tag = "6")]
16958    pub members: ::prost::alloc::vec::Vec<cso_citadel_server_static_lobby::Member>,
16959    #[prost(message, optional, tag = "7")]
16960    pub dev_settings: ::core::option::Option<
16961        cso_citadel_server_static_lobby::DevSettings,
16962    >,
16963    #[prost(bool, optional, tag = "8")]
16964    pub gc_provided_heroes: ::core::option::Option<bool>,
16965    #[prost(
16966        enumeration = "ECitadelBotDifficulty",
16967        optional,
16968        tag = "9",
16969        default = "KECitadelBotDifficultyNone"
16970    )]
16971    pub bot_difficulty: ::core::option::Option<i32>,
16972    #[prost(fixed32, optional, tag = "10")]
16973    pub metadata_salt: ::core::option::Option<u32>,
16974    #[prost(uint32, optional, tag = "11")]
16975    pub match_start_time: ::core::option::Option<u32>,
16976    #[prost(
16977        enumeration = "ECitadelRegionMode",
16978        optional,
16979        tag = "16",
16980        default = "KECitadelRegionModeRow"
16981    )]
16982    pub region_mode: ::core::option::Option<i32>,
16983    #[prost(string, optional, tag = "17")]
16984    pub broadcast_url: ::core::option::Option<::prost::alloc::string::String>,
16985    #[prost(bool, optional, tag = "18")]
16986    pub new_player_pool: ::core::option::Option<bool>,
16987    #[prost(bool, optional, tag = "19")]
16988    pub low_pri_pool: ::core::option::Option<bool>,
16989    #[prost(bool, optional, tag = "20")]
16990    pub is_restricted_access: ::core::option::Option<bool>,
16991    #[prost(bool, optional, tag = "21")]
16992    pub cheats_enabled: ::core::option::Option<bool>,
16993    #[prost(bool, optional, tag = "22")]
16994    pub duplicate_heroes_enabled: ::core::option::Option<bool>,
16995    #[prost(bool, optional, tag = "23")]
16996    pub is_high_skill_range_parties: ::core::option::Option<bool>,
16997    #[prost(uint32, optional, tag = "25")]
16998    pub average_badge_team_0: ::core::option::Option<u32>,
16999    #[prost(uint32, optional, tag = "26")]
17000    pub average_badge_team_1: ::core::option::Option<u32>,
17001    #[prost(string, optional, tag = "27")]
17002    pub gameplay_experiment: ::core::option::Option<::prost::alloc::string::String>,
17003    #[prost(bool, optional, tag = "28")]
17004    pub rewards_eligible: ::core::option::Option<bool>,
17005    #[prost(uint32, repeated, packed = "false", tag = "29")]
17006    pub banned_heroes: ::prost::alloc::vec::Vec<u32>,
17007}
17008/// Nested message and enum types in `CSOCitadelServerStaticLobby`.
17009pub mod cso_citadel_server_static_lobby {
17010    #[derive(serde::Serialize, serde::Deserialize)]
17011    #[derive(Clone, PartialEq, ::prost::Message)]
17012    pub struct Member {
17013        #[prost(uint32, optional, tag = "1")]
17014        pub account_id: ::core::option::Option<u32>,
17015        #[prost(string, optional, tag = "2")]
17016        pub persona_name: ::core::option::Option<::prost::alloc::string::String>,
17017        #[prost(
17018            enumeration = "super::ECitadelLobbyTeam",
17019            optional,
17020            tag = "3",
17021            default = "KECitadelLobbyTeamTeam0"
17022        )]
17023        pub team: ::core::option::Option<i32>,
17024        #[prost(uint32, optional, tag = "4")]
17025        pub player_slot: ::core::option::Option<u32>,
17026        #[prost(uint32, optional, tag = "5")]
17027        pub hero_id: ::core::option::Option<u32>,
17028        #[prost(uint32, optional, tag = "6")]
17029        pub party_index: ::core::option::Option<u32>,
17030        #[prost(
17031            enumeration = "super::EgcPlatform",
17032            optional,
17033            tag = "7",
17034            default = "KEGcPlatformNone"
17035        )]
17036        pub platform: ::core::option::Option<i32>,
17037        #[prost(enumeration = "EAwardIDs", repeated, packed = "false", tag = "8")]
17038        pub award_ids: ::prost::alloc::vec::Vec<i32>,
17039        #[prost(bool, optional, tag = "9")]
17040        pub is_comms_restricted: ::core::option::Option<bool>,
17041        #[prost(uint32, optional, tag = "10")]
17042        pub lane_id: ::core::option::Option<u32>,
17043        #[prost(message, optional, tag = "13")]
17044        pub gc_account_data: ::core::option::Option<super::CMsgGcAccountData>,
17045        #[prost(bool, optional, tag = "14")]
17046        pub party_desires_laning_together: ::core::option::Option<bool>,
17047        #[prost(
17048            enumeration = "super::ECitadelBotDifficulty",
17049            optional,
17050            tag = "16",
17051            default = "KECitadelBotDifficultyNone"
17052        )]
17053        pub bot_difficulty: ::core::option::Option<i32>,
17054        #[prost(bool, optional, tag = "18")]
17055        pub requires_skill_calibration: ::core::option::Option<bool>,
17056        #[prost(message, optional, tag = "19")]
17057        pub hero_data: ::core::option::Option<super::CMsgPlayerHeroData>,
17058        #[prost(uint32, optional, tag = "20")]
17059        pub match_number: ::core::option::Option<u32>,
17060        #[prost(bool, optional, tag = "21")]
17061        pub randomed_hero: ::core::option::Option<bool>,
17062    }
17063    #[derive(serde::Serialize, serde::Deserialize)]
17064    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17065    pub struct DevSettings {
17066        #[prost(string, optional, tag = "1")]
17067        pub console_string: ::core::option::Option<::prost::alloc::string::String>,
17068    }
17069    #[derive(serde::Serialize, serde::Deserialize)]
17070    #[derive(
17071        Clone,
17072        Copy,
17073        Debug,
17074        PartialEq,
17075        Eq,
17076        Hash,
17077        PartialOrd,
17078        Ord,
17079        ::prost::Enumeration
17080    )]
17081    #[repr(i32)]
17082    pub enum EAwardIDs {
17083        KEAwardKingPandaDeprecated = 1,
17084    }
17085    impl EAwardIDs {
17086        /// String value of the enum field names used in the ProtoBuf definition.
17087        ///
17088        /// The values are not transformed in any way and thus are considered stable
17089        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17090        pub fn as_str_name(&self) -> &'static str {
17091            match self {
17092                Self::KEAwardKingPandaDeprecated => "k_eAward_KingPanda_DEPRECATED",
17093            }
17094        }
17095        /// Creates an enum from field names used in the ProtoBuf definition.
17096        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17097            match value {
17098                "k_eAward_KingPanda_DEPRECATED" => Some(Self::KEAwardKingPandaDeprecated),
17099                _ => None,
17100            }
17101        }
17102    }
17103}
17104#[derive(serde::Serialize, serde::Deserialize)]
17105#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17106pub struct CsoCitadelServerHideoutLobby {
17107    #[prost(uint64, optional, tag = "1")]
17108    pub hideout_lobby_id: ::core::option::Option<u64>,
17109}
17110#[derive(serde::Serialize, serde::Deserialize)]
17111#[derive(Clone, PartialEq, ::prost::Message)]
17112pub struct CMsgServerSignoutDataServerPerfStats {
17113    #[prost(uint64, optional, tag = "1")]
17114    pub peak_memory_bytes: ::core::option::Option<u64>,
17115    #[prost(uint64, optional, tag = "2")]
17116    pub end_memory_bytes: ::core::option::Option<u64>,
17117    #[prost(uint32, optional, tag = "3")]
17118    pub frame_time_max_micro_s: ::core::option::Option<u32>,
17119    #[prost(uint32, optional, tag = "4")]
17120    pub frame_time_95_micro_s: ::core::option::Option<u32>,
17121    #[prost(uint32, optional, tag = "5")]
17122    pub frame_time_avg_micro_s: ::core::option::Option<u32>,
17123    #[prost(uint32, optional, tag = "6")]
17124    pub frame_idle_time_95_micro_s: ::core::option::Option<u32>,
17125    #[prost(uint32, optional, tag = "7")]
17126    pub frame_idle_time_avg_micro_s: ::core::option::Option<u32>,
17127    #[prost(uint32, optional, tag = "8")]
17128    pub frame_time_80_micro_s: ::core::option::Option<u32>,
17129    #[prost(uint32, optional, tag = "9")]
17130    pub frame_time_99_micro_s: ::core::option::Option<u32>,
17131    #[prost(message, optional, tag = "10")]
17132    pub perf_samples: ::core::option::Option<
17133        c_msg_server_signout_data_server_perf_stats::MatchPerfSamples,
17134    >,
17135}
17136/// Nested message and enum types in `CMsgServerSignoutData_ServerPerfStats`.
17137pub mod c_msg_server_signout_data_server_perf_stats {
17138    #[derive(serde::Serialize, serde::Deserialize)]
17139    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17140    pub struct FrameCounts {
17141        #[prost(uint32, optional, tag = "1")]
17142        pub num_frames: ::core::option::Option<u32>,
17143        #[prost(uint32, optional, tag = "2")]
17144        pub longest_run: ::core::option::Option<u32>,
17145        #[prost(uint32, optional, tag = "3")]
17146        pub num_runs: ::core::option::Option<u32>,
17147    }
17148    #[derive(serde::Serialize, serde::Deserialize)]
17149    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17150    pub struct PerfSample {
17151        #[prost(uint32, optional, tag = "1")]
17152        pub game_time_s: ::core::option::Option<u32>,
17153        #[prost(float, optional, tag = "2")]
17154        pub avg_frame: ::core::option::Option<f32>,
17155        #[prost(float, optional, tag = "3")]
17156        pub avg_idle: ::core::option::Option<f32>,
17157        #[prost(uint32, optional, tag = "4")]
17158        pub total_frames: ::core::option::Option<u32>,
17159        #[prost(message, optional, tag = "5")]
17160        pub performant_frames: ::core::option::Option<FrameCounts>,
17161        #[prost(message, optional, tag = "6")]
17162        pub long_frames: ::core::option::Option<FrameCounts>,
17163        #[prost(message, optional, tag = "7")]
17164        pub low_idle_frames: ::core::option::Option<FrameCounts>,
17165        #[prost(uint64, optional, tag = "8")]
17166        pub memory_bytes: ::core::option::Option<u64>,
17167        #[prost(uint64, optional, tag = "9")]
17168        pub peak_memory_bytes: ::core::option::Option<u64>,
17169    }
17170    #[derive(serde::Serialize, serde::Deserialize)]
17171    #[derive(Clone, PartialEq, ::prost::Message)]
17172    pub struct MatchPerfSamples {
17173        #[prost(float, optional, tag = "1")]
17174        pub long_frame_threshold: ::core::option::Option<f32>,
17175        #[prost(float, optional, tag = "2")]
17176        pub low_idle_threshold: ::core::option::Option<f32>,
17177        #[prost(message, repeated, tag = "3")]
17178        pub samples: ::prost::alloc::vec::Vec<PerfSample>,
17179    }
17180}
17181#[derive(serde::Serialize, serde::Deserialize)]
17182#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17183pub struct CMsgServerToGcUpdateMatchInfo {
17184    #[prost(uint64, optional, tag = "1")]
17185    pub lobby_id: ::core::option::Option<u64>,
17186    #[prost(uint32, optional, tag = "3")]
17187    pub kills_team_0: ::core::option::Option<u32>,
17188    #[prost(uint32, optional, tag = "4")]
17189    pub kills_team_1: ::core::option::Option<u32>,
17190    #[prost(uint32, optional, tag = "5")]
17191    pub net_worth_team_0: ::core::option::Option<u32>,
17192    #[prost(uint32, optional, tag = "6")]
17193    pub net_worth_team_1: ::core::option::Option<u32>,
17194    #[prost(uint32, optional, tag = "7")]
17195    pub spectators: ::core::option::Option<u32>,
17196    #[prost(uint32, optional, tag = "8")]
17197    pub open_spectator_slots: ::core::option::Option<u32>,
17198    #[prost(uint64, optional, tag = "9")]
17199    pub objectives_mask_team0: ::core::option::Option<u64>,
17200    #[prost(uint64, optional, tag = "10")]
17201    pub objectives_mask_team1: ::core::option::Option<u64>,
17202    #[prost(uint32, optional, tag = "11")]
17203    pub brawl_score_team0: ::core::option::Option<u32>,
17204    #[prost(uint32, optional, tag = "12")]
17205    pub brawl_score_team1: ::core::option::Option<u32>,
17206}
17207#[derive(serde::Serialize, serde::Deserialize)]
17208#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17209pub struct CMsgServerToGcMatchSignoutPermission {
17210    #[prost(uint32, optional, tag = "1")]
17211    pub signout_start: ::core::option::Option<u32>,
17212    #[prost(uint32, optional, tag = "2")]
17213    pub permission_request: ::core::option::Option<u32>,
17214    #[prost(uint64, optional, tag = "3")]
17215    pub match_id: ::core::option::Option<u64>,
17216    #[prost(
17217        enumeration = "ECitadelMatchMode",
17218        optional,
17219        tag = "4",
17220        default = "KECitadelMatchModeInvalid"
17221    )]
17222    pub match_mode: ::core::option::Option<i32>,
17223}
17224#[derive(serde::Serialize, serde::Deserialize)]
17225#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17226pub struct CMsgServerToGcMatchSignoutPermissionResponse {
17227    #[prost(bool, optional, tag = "1")]
17228    pub can_sign_out: ::core::option::Option<bool>,
17229    #[prost(uint32, optional, tag = "2")]
17230    pub retry_time_s: ::core::option::Option<u32>,
17231    #[prost(uint32, repeated, packed = "false", tag = "3")]
17232    pub requested_data: ::prost::alloc::vec::Vec<u32>,
17233}
17234#[derive(serde::Serialize, serde::Deserialize)]
17235#[derive(Clone, PartialEq, ::prost::Message)]
17236pub struct CMsgServerSignoutDataDisconnections {
17237    #[prost(message, repeated, tag = "1")]
17238    pub disconnections: ::prost::alloc::vec::Vec<
17239        c_msg_server_signout_data_disconnections::CMsgMatchDisconnection,
17240    >,
17241}
17242/// Nested message and enum types in `CMsgServerSignoutData_Disconnections`.
17243pub mod c_msg_server_signout_data_disconnections {
17244    #[derive(serde::Serialize, serde::Deserialize)]
17245    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17246    pub struct CMsgMatchDisconnection {
17247        #[prost(uint32, optional, tag = "1")]
17248        pub account_id: ::core::option::Option<u32>,
17249        #[prost(uint32, optional, tag = "2")]
17250        pub disconnect_time: ::core::option::Option<u32>,
17251        #[prost(uint32, optional, tag = "3")]
17252        pub connection_state: ::core::option::Option<u32>,
17253        #[prost(uint32, optional, tag = "4")]
17254        pub reason_code: ::core::option::Option<u32>,
17255        #[prost(uint32, optional, tag = "5")]
17256        pub reconnect_delay: ::core::option::Option<u32>,
17257        #[prost(uint32, optional, tag = "6")]
17258        pub match_disconnect_time: ::core::option::Option<u32>,
17259        #[prost(uint32, optional, tag = "7")]
17260        pub match_reconnect_delay: ::core::option::Option<u32>,
17261    }
17262}
17263#[derive(serde::Serialize, serde::Deserialize)]
17264#[derive(Clone, PartialEq, ::prost::Message)]
17265pub struct CMsgServerSignoutDataMatchDevStats {
17266    #[prost(message, repeated, tag = "1")]
17267    pub players: ::prost::alloc::vec::Vec<
17268        c_msg_server_signout_data_match_dev_stats::PlayerSlot,
17269    >,
17270}
17271/// Nested message and enum types in `CMsgServerSignoutData_MatchDevStats`.
17272pub mod c_msg_server_signout_data_match_dev_stats {
17273    #[derive(serde::Serialize, serde::Deserialize)]
17274    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17275    pub struct PlayerSlot {
17276        #[prost(uint32, optional, tag = "1")]
17277        pub player_slot: ::core::option::Option<u32>,
17278    }
17279}
17280#[derive(serde::Serialize, serde::Deserialize)]
17281#[derive(Clone, PartialEq, ::prost::Message)]
17282pub struct CMsgServerSignoutDataDetailedStats {
17283    #[prost(message, repeated, tag = "1")]
17284    pub player_stats: ::prost::alloc::vec::Vec<
17285        c_msg_server_signout_data_detailed_stats::Player,
17286    >,
17287    #[prost(message, repeated, tag = "2")]
17288    pub objectives: ::prost::alloc::vec::Vec<
17289        c_msg_server_signout_data_detailed_stats::Objective,
17290    >,
17291    #[prost(message, repeated, tag = "3")]
17292    pub mid_boss: ::prost::alloc::vec::Vec<
17293        c_msg_server_signout_data_detailed_stats::MidBoss,
17294    >,
17295}
17296/// Nested message and enum types in `CMsgServerSignoutData_DetailedStats`.
17297pub mod c_msg_server_signout_data_detailed_stats {
17298    #[derive(serde::Serialize, serde::Deserialize)]
17299    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
17300    pub struct Position {
17301        #[prost(float, optional, tag = "1")]
17302        pub x: ::core::option::Option<f32>,
17303        #[prost(float, optional, tag = "2")]
17304        pub y: ::core::option::Option<f32>,
17305        #[prost(float, optional, tag = "3")]
17306        pub z: ::core::option::Option<f32>,
17307    }
17308    #[derive(serde::Serialize, serde::Deserialize)]
17309    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17310    pub struct TimeSample {
17311        #[prost(uint32, optional, tag = "1")]
17312        pub match_time_s: ::core::option::Option<u32>,
17313        #[prost(message, optional, tag = "2")]
17314        pub stats: ::core::option::Option<time_sample::Stats>,
17315        #[prost(message, optional, tag = "4")]
17316        pub gold_stats: ::core::option::Option<time_sample::GoldStats>,
17317    }
17318    /// Nested message and enum types in `TimeSample`.
17319    pub mod time_sample {
17320        #[derive(serde::Serialize, serde::Deserialize)]
17321        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17322        pub struct Stats {
17323            #[prost(uint32, optional, tag = "1")]
17324            pub net_worth: ::core::option::Option<u32>,
17325            #[prost(uint32, optional, tag = "2")]
17326            pub kills: ::core::option::Option<u32>,
17327            #[prost(uint32, optional, tag = "3")]
17328            pub deaths: ::core::option::Option<u32>,
17329            #[prost(uint32, optional, tag = "4")]
17330            pub assists: ::core::option::Option<u32>,
17331            #[prost(uint32, optional, tag = "5")]
17332            pub possible_creeps: ::core::option::Option<u32>,
17333            #[prost(uint32, optional, tag = "6")]
17334            pub creep_kills: ::core::option::Option<u32>,
17335            #[prost(uint32, optional, tag = "7")]
17336            pub neutral_kills: ::core::option::Option<u32>,
17337            #[prost(uint32, optional, tag = "8")]
17338            pub creep_damage: ::core::option::Option<u32>,
17339            #[prost(uint32, optional, tag = "9")]
17340            pub neutral_damage: ::core::option::Option<u32>,
17341            #[prost(uint32, optional, tag = "10")]
17342            pub boss_damage: ::core::option::Option<u32>,
17343            #[prost(uint32, optional, tag = "11")]
17344            pub player_damage: ::core::option::Option<u32>,
17345            #[prost(uint32, optional, tag = "12")]
17346            pub denies: ::core::option::Option<u32>,
17347            #[prost(uint32, optional, tag = "13")]
17348            pub player_healing: ::core::option::Option<u32>,
17349            #[prost(uint32, optional, tag = "14")]
17350            pub ability_points: ::core::option::Option<u32>,
17351            #[prost(uint32, optional, tag = "15")]
17352            pub self_healing: ::core::option::Option<u32>,
17353            #[prost(uint32, optional, tag = "16")]
17354            pub player_damage_taken: ::core::option::Option<u32>,
17355            #[prost(uint32, optional, tag = "17")]
17356            pub max_health: ::core::option::Option<u32>,
17357            #[prost(uint32, optional, tag = "18")]
17358            pub weapon_power: ::core::option::Option<u32>,
17359            #[prost(uint32, optional, tag = "19")]
17360            pub tech_power: ::core::option::Option<u32>,
17361            #[prost(uint32, optional, tag = "20")]
17362            pub shots_hit: ::core::option::Option<u32>,
17363            #[prost(uint32, optional, tag = "21")]
17364            pub shots_missed: ::core::option::Option<u32>,
17365            #[prost(uint32, optional, tag = "22")]
17366            pub damage_absorbed: ::core::option::Option<u32>,
17367            #[prost(uint32, optional, tag = "23")]
17368            pub absorption_provided: ::core::option::Option<u32>,
17369            #[prost(uint32, optional, tag = "26")]
17370            pub heal_prevented: ::core::option::Option<u32>,
17371            #[prost(uint32, optional, tag = "27")]
17372            pub heal_lost: ::core::option::Option<u32>,
17373            #[prost(uint32, optional, tag = "28")]
17374            pub player_barriering: ::core::option::Option<u32>,
17375            #[prost(uint32, optional, tag = "45")]
17376            pub teammate_healing: ::core::option::Option<u32>,
17377            #[prost(uint32, optional, tag = "46")]
17378            pub teammate_barriering: ::core::option::Option<u32>,
17379            #[prost(uint32, optional, tag = "47")]
17380            pub self_damage: ::core::option::Option<u32>,
17381            #[prost(uint32, repeated, packed = "false", tag = "48")]
17382            pub damage_per_hero_ability: ::prost::alloc::vec::Vec<u32>,
17383            #[prost(uint32, optional, tag = "49")]
17384            pub player_bullet_damage: ::core::option::Option<u32>,
17385            #[prost(uint32, optional, tag = "50")]
17386            pub player_ability_damage: ::core::option::Option<u32>,
17387        }
17388        #[derive(serde::Serialize, serde::Deserialize)]
17389        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17390        pub struct GoldStats {
17391            #[prost(uint32, optional, tag = "1")]
17392            pub player: ::core::option::Option<u32>,
17393            #[prost(uint32, optional, tag = "2")]
17394            pub player_orb: ::core::option::Option<u32>,
17395            #[prost(uint32, optional, tag = "3")]
17396            pub lane_creep_orb: ::core::option::Option<u32>,
17397            #[prost(uint32, optional, tag = "4")]
17398            pub neutral_creep_orb: ::core::option::Option<u32>,
17399            #[prost(uint32, optional, tag = "5")]
17400            pub boss: ::core::option::Option<u32>,
17401            #[prost(uint32, optional, tag = "6")]
17402            pub boss_orb: ::core::option::Option<u32>,
17403            #[prost(uint32, optional, tag = "7")]
17404            pub treasure: ::core::option::Option<u32>,
17405            #[prost(uint32, optional, tag = "8")]
17406            pub denied: ::core::option::Option<u32>,
17407            #[prost(uint32, optional, tag = "9")]
17408            pub death_loss: ::core::option::Option<u32>,
17409            #[prost(uint32, optional, tag = "10")]
17410            pub lane_creep: ::core::option::Option<u32>,
17411            #[prost(uint32, optional, tag = "11")]
17412            pub neutral_creep: ::core::option::Option<u32>,
17413            #[prost(uint32, optional, tag = "12")]
17414            pub team_bonus: ::core::option::Option<u32>,
17415            #[prost(uint32, optional, tag = "13")]
17416            pub ability_assassinate: ::core::option::Option<u32>,
17417            #[prost(uint32, optional, tag = "14")]
17418            pub item_trophy_collector: ::core::option::Option<u32>,
17419            #[prost(uint32, optional, tag = "15")]
17420            pub item_cultist_sacrifice: ::core::option::Option<u32>,
17421            #[prost(uint32, optional, tag = "16")]
17422            pub comeback_kills: ::core::option::Option<u32>,
17423            #[prost(uint32, optional, tag = "17")]
17424            pub comeback_treasure: ::core::option::Option<u32>,
17425            #[prost(uint32, optional, tag = "18")]
17426            pub comeback_misc: ::core::option::Option<u32>,
17427        }
17428    }
17429    #[derive(serde::Serialize, serde::Deserialize)]
17430    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
17431    pub struct Objective {
17432        #[prost(uint32, optional, tag = "2")]
17433        pub destroyed_time_s: ::core::option::Option<u32>,
17434        #[prost(uint32, optional, tag = "4")]
17435        pub creep_damage: ::core::option::Option<u32>,
17436        #[prost(uint32, optional, tag = "5")]
17437        pub creep_damage_mitigated: ::core::option::Option<u32>,
17438        #[prost(uint32, optional, tag = "6")]
17439        pub player_damage: ::core::option::Option<u32>,
17440        #[prost(uint32, optional, tag = "8")]
17441        pub first_damage_time_s: ::core::option::Option<u32>,
17442        #[prost(
17443            enumeration = "super::ECitadelTeamObjective",
17444            optional,
17445            tag = "9",
17446            default = "KECitadelTeamObjectiveCore"
17447        )]
17448        pub team_objective_id: ::core::option::Option<i32>,
17449        #[prost(
17450            enumeration = "super::ECitadelLobbyTeam",
17451            optional,
17452            tag = "10",
17453            default = "KECitadelLobbyTeamTeam0"
17454        )]
17455        pub team: ::core::option::Option<i32>,
17456        #[prost(uint32, optional, tag = "11")]
17457        pub players_damaged: ::core::option::Option<u32>,
17458        #[prost(uint32, optional, tag = "12")]
17459        pub players_destroyed: ::core::option::Option<u32>,
17460        #[prost(uint32, repeated, packed = "false", tag = "13")]
17461        pub enemy_count_dmg_mitigated: ::prost::alloc::vec::Vec<u32>,
17462        #[prost(uint32, optional, tag = "14")]
17463        pub player_spirit_damage: ::core::option::Option<u32>,
17464    }
17465    #[derive(serde::Serialize, serde::Deserialize)]
17466    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17467    pub struct MidBoss {
17468        #[prost(
17469            enumeration = "super::ECitadelLobbyTeam",
17470            optional,
17471            tag = "1",
17472            default = "KECitadelLobbyTeamTeam0"
17473        )]
17474        pub team_killed: ::core::option::Option<i32>,
17475        #[prost(
17476            enumeration = "super::ECitadelLobbyTeam",
17477            optional,
17478            tag = "2",
17479            default = "KECitadelLobbyTeamTeam0"
17480        )]
17481        pub team_claimed: ::core::option::Option<i32>,
17482        #[prost(uint32, optional, tag = "3")]
17483        pub destroyed_time_s: ::core::option::Option<u32>,
17484    }
17485    #[derive(serde::Serialize, serde::Deserialize)]
17486    #[derive(Clone, PartialEq, ::prost::Message)]
17487    pub struct Player {
17488        #[prost(uint32, optional, tag = "1")]
17489        pub player_slot: ::core::option::Option<u32>,
17490        #[prost(message, repeated, tag = "3")]
17491        pub time_samples: ::prost::alloc::vec::Vec<TimeSample>,
17492    }
17493}
17494#[derive(serde::Serialize, serde::Deserialize)]
17495#[derive(Clone, PartialEq, ::prost::Message)]
17496pub struct CMsgServerSignoutDataPerfData {
17497    #[prost(float, repeated, packed = "false", tag = "1")]
17498    pub average_frame_time: ::prost::alloc::vec::Vec<f32>,
17499    #[prost(float, repeated, packed = "false", tag = "2")]
17500    pub max_frame_time: ::prost::alloc::vec::Vec<f32>,
17501    #[prost(float, optional, tag = "3")]
17502    pub server_average_frame_time: ::core::option::Option<f32>,
17503    #[prost(float, optional, tag = "4")]
17504    pub server_max_frame_time: ::core::option::Option<f32>,
17505    #[prost(float, repeated, packed = "false", tag = "5")]
17506    pub average_compute_time: ::prost::alloc::vec::Vec<f32>,
17507    #[prost(float, repeated, packed = "false", tag = "6")]
17508    pub max_compute_time: ::prost::alloc::vec::Vec<f32>,
17509    #[prost(float, repeated, packed = "false", tag = "7")]
17510    pub average_client_tick_time: ::prost::alloc::vec::Vec<f32>,
17511    #[prost(float, repeated, packed = "false", tag = "8")]
17512    pub max_client_tick_time: ::prost::alloc::vec::Vec<f32>,
17513    #[prost(float, repeated, packed = "false", tag = "9")]
17514    pub average_client_simulate_time: ::prost::alloc::vec::Vec<f32>,
17515    #[prost(float, repeated, packed = "false", tag = "10")]
17516    pub max_client_simulate_time: ::prost::alloc::vec::Vec<f32>,
17517    #[prost(float, repeated, packed = "false", tag = "11")]
17518    pub average_output_time: ::prost::alloc::vec::Vec<f32>,
17519    #[prost(float, repeated, packed = "false", tag = "12")]
17520    pub max_output_time: ::prost::alloc::vec::Vec<f32>,
17521    #[prost(float, repeated, packed = "false", tag = "13")]
17522    pub average_wait_for_rendering_to_complete_time: ::prost::alloc::vec::Vec<f32>,
17523    #[prost(float, repeated, packed = "false", tag = "14")]
17524    pub max_wait_for_rendering_to_complete_time: ::prost::alloc::vec::Vec<f32>,
17525    #[prost(float, repeated, packed = "false", tag = "15")]
17526    pub average_swap_time: ::prost::alloc::vec::Vec<f32>,
17527    #[prost(float, repeated, packed = "false", tag = "16")]
17528    pub max_swap_time: ::prost::alloc::vec::Vec<f32>,
17529    #[prost(float, repeated, packed = "false", tag = "17")]
17530    pub average_frame_update_time: ::prost::alloc::vec::Vec<f32>,
17531    #[prost(float, repeated, packed = "false", tag = "18")]
17532    pub max_frame_update_time: ::prost::alloc::vec::Vec<f32>,
17533    #[prost(float, repeated, packed = "false", tag = "19")]
17534    pub average_idle_time: ::prost::alloc::vec::Vec<f32>,
17535    #[prost(float, repeated, packed = "false", tag = "20")]
17536    pub max_idle_time: ::prost::alloc::vec::Vec<f32>,
17537    #[prost(float, repeated, packed = "false", tag = "21")]
17538    pub average_input_processing_time: ::prost::alloc::vec::Vec<f32>,
17539    #[prost(float, repeated, packed = "false", tag = "22")]
17540    pub max_input_processing_time: ::prost::alloc::vec::Vec<f32>,
17541}
17542#[derive(serde::Serialize, serde::Deserialize)]
17543#[derive(Clone, PartialEq, ::prost::Message)]
17544pub struct CMsgServerSignoutDataBookRewards {
17545    #[prost(message, repeated, tag = "1")]
17546    pub account_rewards: ::prost::alloc::vec::Vec<
17547        c_msg_server_signout_data_book_rewards::AccountRewards,
17548    >,
17549}
17550/// Nested message and enum types in `CMsgServerSignoutData_BookRewards`.
17551pub mod c_msg_server_signout_data_book_rewards {
17552    #[derive(serde::Serialize, serde::Deserialize)]
17553    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17554    pub struct BookReward {
17555        #[prost(uint32, optional, tag = "1")]
17556        pub book_id: ::core::option::Option<u32>,
17557        #[prost(uint32, optional, tag = "2")]
17558        pub xp_reward: ::core::option::Option<u32>,
17559    }
17560    #[derive(serde::Serialize, serde::Deserialize)]
17561    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17562    pub struct AccountRewards {
17563        #[prost(uint32, optional, tag = "1")]
17564        pub account_id: ::core::option::Option<u32>,
17565        #[prost(message, optional, tag = "2")]
17566        pub book_reward: ::core::option::Option<BookReward>,
17567    }
17568}
17569#[derive(serde::Serialize, serde::Deserialize)]
17570#[derive(Clone, PartialEq, ::prost::Message)]
17571pub struct CMsgServerSignoutDataChallengeProgress {
17572    #[prost(message, repeated, tag = "1")]
17573    pub account_challenges: ::prost::alloc::vec::Vec<
17574        c_msg_server_signout_data_challenge_progress::AccountChallenges,
17575    >,
17576}
17577/// Nested message and enum types in `CMsgServerSignoutData_ChallengeProgress`.
17578pub mod c_msg_server_signout_data_challenge_progress {
17579    #[derive(serde::Serialize, serde::Deserialize)]
17580    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17581    pub struct ChallengeProgress {
17582        #[prost(uint64, optional, tag = "1")]
17583        pub challenge_id: ::core::option::Option<u64>,
17584        #[prost(uint32, optional, tag = "2")]
17585        pub progress: ::core::option::Option<u32>,
17586    }
17587    #[derive(serde::Serialize, serde::Deserialize)]
17588    #[derive(Clone, PartialEq, ::prost::Message)]
17589    pub struct AccountChallenges {
17590        #[prost(uint32, optional, tag = "1")]
17591        pub account_id: ::core::option::Option<u32>,
17592        #[prost(message, repeated, tag = "2")]
17593        pub challenges: ::prost::alloc::vec::Vec<ChallengeProgress>,
17594    }
17595}
17596#[derive(serde::Serialize, serde::Deserialize)]
17597#[derive(Clone, PartialEq, ::prost::Message)]
17598pub struct CMsgServerSignoutDataHeroXpGrant {
17599    #[prost(message, repeated, tag = "1")]
17600    pub account_xp: ::prost::alloc::vec::Vec<
17601        c_msg_server_signout_data_hero_xp_grant::AccountXpGrant,
17602    >,
17603}
17604/// Nested message and enum types in `CMsgServerSignoutData_HeroXPGrant`.
17605pub mod c_msg_server_signout_data_hero_xp_grant {
17606    #[derive(serde::Serialize, serde::Deserialize)]
17607    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17608    pub struct HeroXpGrant {
17609        #[prost(uint32, optional, tag = "1")]
17610        pub hero_id: ::core::option::Option<u32>,
17611        #[prost(uint32, optional, tag = "2")]
17612        pub xp_grant: ::core::option::Option<u32>,
17613        #[prost(
17614            enumeration = "EGrantReason",
17615            optional,
17616            tag = "3",
17617            default = "KEGrantWin"
17618        )]
17619        pub reason: ::core::option::Option<i32>,
17620    }
17621    #[derive(serde::Serialize, serde::Deserialize)]
17622    #[derive(Clone, PartialEq, ::prost::Message)]
17623    pub struct AccountXpGrant {
17624        #[prost(uint32, optional, tag = "1")]
17625        pub account_id: ::core::option::Option<u32>,
17626        #[prost(message, repeated, tag = "2")]
17627        pub xp_grant: ::prost::alloc::vec::Vec<HeroXpGrant>,
17628    }
17629    #[derive(serde::Serialize, serde::Deserialize)]
17630    #[derive(
17631        Clone,
17632        Copy,
17633        Debug,
17634        PartialEq,
17635        Eq,
17636        Hash,
17637        PartialOrd,
17638        Ord,
17639        ::prost::Enumeration
17640    )]
17641    #[repr(i32)]
17642    pub enum EGrantReason {
17643        KEGrantWin = 0,
17644        KEGrantLoss = 1,
17645        KEGrantAward = 2,
17646    }
17647    impl EGrantReason {
17648        /// String value of the enum field names used in the ProtoBuf definition.
17649        ///
17650        /// The values are not transformed in any way and thus are considered stable
17651        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17652        pub fn as_str_name(&self) -> &'static str {
17653            match self {
17654                Self::KEGrantWin => "k_eGrant_Win",
17655                Self::KEGrantLoss => "k_eGrant_Loss",
17656                Self::KEGrantAward => "k_eGrant_Award",
17657            }
17658        }
17659        /// Creates an enum from field names used in the ProtoBuf definition.
17660        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17661            match value {
17662                "k_eGrant_Win" => Some(Self::KEGrantWin),
17663                "k_eGrant_Loss" => Some(Self::KEGrantLoss),
17664                "k_eGrant_Award" => Some(Self::KEGrantAward),
17665                _ => None,
17666            }
17667        }
17668    }
17669}
17670#[derive(serde::Serialize, serde::Deserialize)]
17671#[derive(Clone, PartialEq, ::prost::Message)]
17672pub struct CMsgServerSignoutDataMatchKills {
17673    #[prost(message, repeated, tag = "1")]
17674    pub kills: ::prost::alloc::vec::Vec<c_msg_server_signout_data_match_kills::Kill>,
17675}
17676/// Nested message and enum types in `CMsgServerSignoutData_MatchKills`.
17677pub mod c_msg_server_signout_data_match_kills {
17678    #[derive(serde::Serialize, serde::Deserialize)]
17679    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17680    pub struct Kill {
17681        #[prost(uint32, optional, tag = "1")]
17682        pub killer: ::core::option::Option<u32>,
17683        #[prost(uint32, optional, tag = "2")]
17684        pub victim: ::core::option::Option<u32>,
17685        #[prost(uint32, optional, tag = "3")]
17686        pub match_time: ::core::option::Option<u32>,
17687        #[prost(uint32, optional, tag = "4")]
17688        pub killer_streak: ::core::option::Option<u32>,
17689    }
17690}
17691#[derive(serde::Serialize, serde::Deserialize)]
17692#[derive(Clone, PartialEq, ::prost::Message)]
17693pub struct CMsgServerSignoutDataAccountStatChanges {
17694    #[prost(message, repeated, tag = "1")]
17695    pub account_stats: ::prost::alloc::vec::Vec<
17696        c_msg_server_signout_data_account_stat_changes::AccountStats,
17697    >,
17698}
17699/// Nested message and enum types in `CMsgServerSignoutData_AccountStatChanges`.
17700pub mod c_msg_server_signout_data_account_stat_changes {
17701    #[derive(serde::Serialize, serde::Deserialize)]
17702    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17703    pub struct Stat {
17704        #[prost(uint32, optional, tag = "1")]
17705        pub hero_id: ::core::option::Option<u32>,
17706        #[prost(uint32, optional, tag = "2")]
17707        pub stat_id: ::core::option::Option<u32>,
17708        #[prost(uint32, optional, tag = "3")]
17709        pub value: ::core::option::Option<u32>,
17710        #[prost(
17711            enumeration = "super::ECitadelAccountStatMedal",
17712            optional,
17713            tag = "4",
17714            default = "KENone"
17715        )]
17716        pub medal: ::core::option::Option<i32>,
17717    }
17718    #[derive(serde::Serialize, serde::Deserialize)]
17719    #[derive(Clone, PartialEq, ::prost::Message)]
17720    pub struct AccountStats {
17721        #[prost(uint32, optional, tag = "1")]
17722        pub account_id: ::core::option::Option<u32>,
17723        #[prost(message, repeated, tag = "2")]
17724        pub stats: ::prost::alloc::vec::Vec<Stat>,
17725    }
17726}
17727#[derive(serde::Serialize, serde::Deserialize)]
17728#[derive(Clone, PartialEq, ::prost::Message)]
17729pub struct CMsgServerSignoutDataPlayerChat {
17730    #[prost(message, repeated, tag = "1")]
17731    pub chat_lines: ::prost::alloc::vec::Vec<
17732        c_msg_server_signout_data_player_chat::ChatLine,
17733    >,
17734}
17735/// Nested message and enum types in `CMsgServerSignoutData_PlayerChat`.
17736pub mod c_msg_server_signout_data_player_chat {
17737    #[derive(serde::Serialize, serde::Deserialize)]
17738    #[derive(Clone, PartialEq, ::prost::Message)]
17739    pub struct ChatLine {
17740        #[prost(uint32, optional, tag = "1")]
17741        pub player_slot: ::core::option::Option<u32>,
17742        #[prost(float, optional, tag = "2")]
17743        pub game_time: ::core::option::Option<f32>,
17744        #[prost(bool, optional, tag = "3")]
17745        pub team_only: ::core::option::Option<bool>,
17746        #[prost(string, optional, tag = "4")]
17747        pub chat_line: ::core::option::Option<::prost::alloc::string::String>,
17748    }
17749}
17750#[derive(serde::Serialize, serde::Deserialize)]
17751#[derive(Clone, PartialEq, ::prost::Message)]
17752pub struct CMsgServerSignoutDataPlayerBehavior {
17753    #[prost(message, repeated, tag = "1")]
17754    pub players: ::prost::alloc::vec::Vec<
17755        c_msg_server_signout_data_player_behavior::Player,
17756    >,
17757}
17758/// Nested message and enum types in `CMsgServerSignoutData_PlayerBehavior`.
17759pub mod c_msg_server_signout_data_player_behavior {
17760    #[derive(serde::Serialize, serde::Deserialize)]
17761    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17762    pub struct Player {
17763        #[prost(uint32, optional, tag = "1")]
17764        pub account_id: ::core::option::Option<u32>,
17765        #[prost(uint32, optional, tag = "2")]
17766        pub team_chat_messages: ::core::option::Option<u32>,
17767        #[prost(uint32, optional, tag = "3")]
17768        pub all_chat_messages: ::core::option::Option<u32>,
17769        #[prost(uint32, optional, tag = "4")]
17770        pub pings: ::core::option::Option<u32>,
17771        #[prost(uint32, optional, tag = "5")]
17772        pub voice_chat_seconds: ::core::option::Option<u32>,
17773        #[prost(uint32, optional, tag = "6")]
17774        pub pauses: ::core::option::Option<u32>,
17775        #[prost(uint32, optional, tag = "7")]
17776        pub total_pause_time: ::core::option::Option<u32>,
17777        #[prost(uint32, optional, tag = "8")]
17778        pub disconnects: ::core::option::Option<u32>,
17779        #[prost(uint32, optional, tag = "9")]
17780        pub first_all_chat_gametime: ::core::option::Option<u32>,
17781        #[prost(uint32, optional, tag = "10")]
17782        pub first_voice_chat_gametime: ::core::option::Option<u32>,
17783        #[prost(uint32, optional, tag = "11")]
17784        pub total_idle_time: ::core::option::Option<u32>,
17785        #[prost(uint32, optional, tag = "12")]
17786        pub total_inactive_time: ::core::option::Option<u32>,
17787        #[prost(uint32, optional, tag = "13")]
17788        pub total_disconnect_time: ::core::option::Option<u32>,
17789        #[prost(uint32, optional, tag = "14")]
17790        pub first_team_chat_gametime: ::core::option::Option<u32>,
17791        #[prost(uint32, optional, tag = "15")]
17792        pub first_all_chat_time: ::core::option::Option<u32>,
17793        #[prost(uint32, optional, tag = "16")]
17794        pub first_voice_chat_time: ::core::option::Option<u32>,
17795        #[prost(uint32, optional, tag = "17")]
17796        pub first_team_chat_time: ::core::option::Option<u32>,
17797    }
17798}
17799#[derive(serde::Serialize, serde::Deserialize)]
17800#[derive(Clone, PartialEq, ::prost::Message)]
17801pub struct CMsgServerSignoutDataStreetBrawlData {
17802    #[prost(message, repeated, tag = "1")]
17803    pub rounds: ::prost::alloc::vec::Vec<
17804        c_msg_server_signout_data_street_brawl_data::Round,
17805    >,
17806}
17807/// Nested message and enum types in `CMsgServerSignoutData_StreetBrawlData`.
17808pub mod c_msg_server_signout_data_street_brawl_data {
17809    #[derive(serde::Serialize, serde::Deserialize)]
17810    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17811    pub struct DraftItem {
17812        #[prost(uint32, optional, tag = "1")]
17813        pub ability_id: ::core::option::Option<u32>,
17814        #[prost(uint32, optional, tag = "2")]
17815        pub flags: ::core::option::Option<u32>,
17816        #[prost(
17817            enumeration = "EDraftItemOutcome",
17818            optional,
17819            tag = "3",
17820            default = "KENotChosen"
17821        )]
17822        pub outcome: ::core::option::Option<i32>,
17823    }
17824    #[derive(serde::Serialize, serde::Deserialize)]
17825    #[derive(Clone, PartialEq, ::prost::Message)]
17826    pub struct DraftItemSet {
17827        #[prost(message, repeated, tag = "1")]
17828        pub items: ::prost::alloc::vec::Vec<DraftItem>,
17829    }
17830    #[derive(serde::Serialize, serde::Deserialize)]
17831    #[derive(Clone, PartialEq, ::prost::Message)]
17832    pub struct RoundPlayer {
17833        #[prost(uint32, optional, tag = "1")]
17834        pub player_slot: ::core::option::Option<u32>,
17835        #[prost(uint32, optional, tag = "2")]
17836        pub player_damage: ::core::option::Option<u32>,
17837        #[prost(uint32, optional, tag = "3")]
17838        pub kills: ::core::option::Option<u32>,
17839        #[prost(uint32, optional, tag = "4")]
17840        pub player_healing: ::core::option::Option<u32>,
17841        #[prost(uint32, optional, tag = "5")]
17842        pub deaths: ::core::option::Option<u32>,
17843        #[prost(uint32, optional, tag = "6")]
17844        pub assists: ::core::option::Option<u32>,
17845        #[prost(uint32, optional, tag = "7")]
17846        pub objective_damage: ::core::option::Option<u32>,
17847        #[prost(uint32, optional, tag = "8")]
17848        pub objective_spirit_damage: ::core::option::Option<u32>,
17849        #[prost(message, repeated, tag = "9")]
17850        pub draft_item_sets: ::prost::alloc::vec::Vec<DraftItemSet>,
17851    }
17852    #[derive(serde::Serialize, serde::Deserialize)]
17853    #[derive(Clone, PartialEq, ::prost::Message)]
17854    pub struct Round {
17855        #[prost(uint32, optional, tag = "1")]
17856        pub round_number: ::core::option::Option<u32>,
17857        #[prost(uint32, optional, tag = "2")]
17858        pub round_time: ::core::option::Option<u32>,
17859        #[prost(
17860            enumeration = "super::ECitadelLobbyTeam",
17861            optional,
17862            tag = "3",
17863            default = "KECitadelLobbyTeamTeam0"
17864        )]
17865        pub winning_team: ::core::option::Option<i32>,
17866        #[prost(message, repeated, tag = "5")]
17867        pub players: ::prost::alloc::vec::Vec<RoundPlayer>,
17868    }
17869    #[derive(serde::Serialize, serde::Deserialize)]
17870    #[derive(
17871        Clone,
17872        Copy,
17873        Debug,
17874        PartialEq,
17875        Eq,
17876        Hash,
17877        PartialOrd,
17878        Ord,
17879        ::prost::Enumeration
17880    )]
17881    #[repr(i32)]
17882    pub enum EDraftItemOutcome {
17883        KENotChosen = 0,
17884        KEChosen = 1,
17885        KERerolled = 2,
17886    }
17887    impl EDraftItemOutcome {
17888        /// String value of the enum field names used in the ProtoBuf definition.
17889        ///
17890        /// The values are not transformed in any way and thus are considered stable
17891        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17892        pub fn as_str_name(&self) -> &'static str {
17893            match self {
17894                Self::KENotChosen => "k_eNotChosen",
17895                Self::KEChosen => "k_eChosen",
17896                Self::KERerolled => "k_eRerolled",
17897            }
17898        }
17899        /// Creates an enum from field names used in the ProtoBuf definition.
17900        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17901            match value {
17902                "k_eNotChosen" => Some(Self::KENotChosen),
17903                "k_eChosen" => Some(Self::KEChosen),
17904                "k_eRerolled" => Some(Self::KERerolled),
17905                _ => None,
17906            }
17907        }
17908    }
17909    #[derive(serde::Serialize, serde::Deserialize)]
17910    #[derive(
17911        Clone,
17912        Copy,
17913        Debug,
17914        PartialEq,
17915        Eq,
17916        Hash,
17917        PartialOrd,
17918        Ord,
17919        ::prost::Enumeration
17920    )]
17921    #[repr(i32)]
17922    pub enum EDraftItemFlags {
17923        KEHasUpgradeBit = 1,
17924        KEHasAdditionalItem = 2,
17925        KERareItem = 4,
17926    }
17927    impl EDraftItemFlags {
17928        /// String value of the enum field names used in the ProtoBuf definition.
17929        ///
17930        /// The values are not transformed in any way and thus are considered stable
17931        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
17932        pub fn as_str_name(&self) -> &'static str {
17933            match self {
17934                Self::KEHasUpgradeBit => "k_eHasUpgradeBit",
17935                Self::KEHasAdditionalItem => "k_eHasAdditionalItem",
17936                Self::KERareItem => "k_eRareItem",
17937            }
17938        }
17939        /// Creates an enum from field names used in the ProtoBuf definition.
17940        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
17941            match value {
17942                "k_eHasUpgradeBit" => Some(Self::KEHasUpgradeBit),
17943                "k_eHasAdditionalItem" => Some(Self::KEHasAdditionalItem),
17944                "k_eRareItem" => Some(Self::KERareItem),
17945                _ => None,
17946            }
17947        }
17948    }
17949}
17950#[derive(serde::Serialize, serde::Deserialize)]
17951#[derive(Clone, PartialEq, ::prost::Message)]
17952pub struct CMsgServerSignoutDataPenalizedPlayers {
17953    #[prost(message, repeated, tag = "1")]
17954    pub penalized_players: ::prost::alloc::vec::Vec<
17955        c_msg_server_signout_data_penalized_players::Penalty,
17956    >,
17957}
17958/// Nested message and enum types in `CMsgServerSignoutData_PenalizedPlayers`.
17959pub mod c_msg_server_signout_data_penalized_players {
17960    #[derive(serde::Serialize, serde::Deserialize)]
17961    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
17962    pub struct Penalty {
17963        #[prost(uint32, optional, tag = "1")]
17964        pub account_id: ::core::option::Option<u32>,
17965        #[prost(
17966            enumeration = "EPenaltyReason",
17967            optional,
17968            tag = "2",
17969            default = "KEPenaltyReasonAbandon"
17970        )]
17971        pub reason: ::core::option::Option<i32>,
17972        #[prost(uint32, optional, tag = "3")]
17973        pub match_time_s: ::core::option::Option<u32>,
17974        #[prost(uint32, optional, tag = "4")]
17975        pub time_stamp: ::core::option::Option<u32>,
17976    }
17977    #[derive(serde::Serialize, serde::Deserialize)]
17978    #[derive(
17979        Clone,
17980        Copy,
17981        Debug,
17982        PartialEq,
17983        Eq,
17984        Hash,
17985        PartialOrd,
17986        Ord,
17987        ::prost::Enumeration
17988    )]
17989    #[repr(i32)]
17990    pub enum EPenaltyReason {
17991        KEPenaltyReasonAbandon = 0,
17992        KEPenaltyReasonDisconnectedTooLong = 1,
17993        KEPenaltyReasonAfk = 2,
17994        KEPenaltyReasonDisconnectedTooLongPregame = 3,
17995    }
17996    impl EPenaltyReason {
17997        /// String value of the enum field names used in the ProtoBuf definition.
17998        ///
17999        /// The values are not transformed in any way and thus are considered stable
18000        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18001        pub fn as_str_name(&self) -> &'static str {
18002            match self {
18003                Self::KEPenaltyReasonAbandon => "k_EPenaltyReason_Abandon",
18004                Self::KEPenaltyReasonDisconnectedTooLong => {
18005                    "k_EPenaltyReason_DisconnectedTooLong"
18006                }
18007                Self::KEPenaltyReasonAfk => "k_EPenaltyReason_AFK",
18008                Self::KEPenaltyReasonDisconnectedTooLongPregame => {
18009                    "k_EPenaltyReason_DisconnectedTooLongPregame"
18010                }
18011            }
18012        }
18013        /// Creates an enum from field names used in the ProtoBuf definition.
18014        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18015            match value {
18016                "k_EPenaltyReason_Abandon" => Some(Self::KEPenaltyReasonAbandon),
18017                "k_EPenaltyReason_DisconnectedTooLong" => {
18018                    Some(Self::KEPenaltyReasonDisconnectedTooLong)
18019                }
18020                "k_EPenaltyReason_AFK" => Some(Self::KEPenaltyReasonAfk),
18021                "k_EPenaltyReason_DisconnectedTooLongPregame" => {
18022                    Some(Self::KEPenaltyReasonDisconnectedTooLongPregame)
18023                }
18024                _ => None,
18025            }
18026        }
18027    }
18028}
18029#[derive(serde::Serialize, serde::Deserialize)]
18030#[derive(Clone, PartialEq, ::prost::Message)]
18031pub struct CMsgMatchData {
18032    #[prost(uint32, optional, tag = "1")]
18033    pub match_duration_s: ::core::option::Option<u32>,
18034    #[prost(
18035        enumeration = "c_msg_match_data::EEndReason",
18036        optional,
18037        tag = "2",
18038        default = "KEEndReasonTeamWin"
18039    )]
18040    pub end_reason: ::core::option::Option<i32>,
18041    #[prost(
18042        enumeration = "ECitadelLobbyTeam",
18043        optional,
18044        tag = "3",
18045        default = "KECitadelLobbyTeamTeam0"
18046    )]
18047    pub winning_team: ::core::option::Option<i32>,
18048    #[prost(message, repeated, tag = "4")]
18049    pub players: ::prost::alloc::vec::Vec<c_msg_match_data::PlayerInfo>,
18050    #[prost(uint32, optional, tag = "5")]
18051    pub objectives_mask_legacy: ::core::option::Option<u32>,
18052    #[prost(uint32, optional, tag = "6")]
18053    pub server_version: ::core::option::Option<u32>,
18054    #[prost(
18055        enumeration = "ECitadelGameMode",
18056        optional,
18057        tag = "7",
18058        default = "KECitadelGameModeInvalid"
18059    )]
18060    pub game_mode: ::core::option::Option<i32>,
18061    #[prost(
18062        enumeration = "ECitadelMatchMode",
18063        optional,
18064        tag = "8",
18065        default = "KECitadelMatchModeInvalid"
18066    )]
18067    pub match_mode: ::core::option::Option<i32>,
18068    #[prost(uint64, optional, tag = "9")]
18069    pub objectives_mask_team0: ::core::option::Option<u64>,
18070    #[prost(uint64, optional, tag = "10")]
18071    pub objectives_mask_team1: ::core::option::Option<u64>,
18072    #[prost(uint32, optional, tag = "11")]
18073    pub match_end_time: ::core::option::Option<u32>,
18074    #[prost(float, optional, tag = "12")]
18075    pub stomp_score: ::core::option::Option<f32>,
18076    #[prost(bool, optional, tag = "13")]
18077    pub safe_to_abandon: ::core::option::Option<bool>,
18078    #[prost(bool, optional, tag = "14")]
18079    pub team_abandon: ::core::option::Option<bool>,
18080    #[prost(bool, optional, tag = "15")]
18081    pub new_player_pool: ::core::option::Option<bool>,
18082    #[prost(bool, optional, tag = "16")]
18083    pub low_pri_pool: ::core::option::Option<bool>,
18084    #[prost(bool, optional, tag = "17")]
18085    pub not_scored: ::core::option::Option<bool>,
18086    #[prost(uint32, repeated, packed = "false", tag = "18")]
18087    pub team_score: ::prost::alloc::vec::Vec<u32>,
18088    #[prost(message, repeated, tag = "19")]
18089    pub teams: ::prost::alloc::vec::Vec<c_msg_match_data::TeamInfo>,
18090    #[prost(message, repeated, tag = "20")]
18091    pub match_tracked_stats: ::prost::alloc::vec::Vec<CMsgTrackedStat>,
18092    #[prost(float, optional, tag = "21")]
18093    pub winner_pct_time_in_enemy: ::core::option::Option<f32>,
18094    #[prost(bool, optional, tag = "22")]
18095    pub forgive_existing_abandons: ::core::option::Option<bool>,
18096    #[prost(uint32, optional, tag = "23")]
18097    pub brawl_avg_round_time_s: ::core::option::Option<u32>,
18098}
18099/// Nested message and enum types in `CMsgMatchData`.
18100pub mod c_msg_match_data {
18101    #[derive(serde::Serialize, serde::Deserialize)]
18102    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18103    pub struct PlayerItem {
18104        #[prost(uint32, optional, tag = "1")]
18105        pub item_id: ::core::option::Option<u32>,
18106        #[prost(uint32, optional, tag = "2")]
18107        pub game_time_s: ::core::option::Option<u32>,
18108        #[prost(uint32, optional, tag = "3")]
18109        pub upgrade_id: ::core::option::Option<u32>,
18110        #[prost(uint32, optional, tag = "4")]
18111        pub sold_time_s: ::core::option::Option<u32>,
18112        #[prost(uint32, optional, tag = "5")]
18113        pub flags: ::core::option::Option<u32>,
18114        #[prost(uint32, optional, tag = "6")]
18115        pub imbued_ability_id: ::core::option::Option<u32>,
18116    }
18117    #[derive(serde::Serialize, serde::Deserialize)]
18118    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18119    pub struct AuxStat {
18120        #[prost(
18121            enumeration = "super::ECitadelMatchAuxStat",
18122            optional,
18123            tag = "1",
18124            default = "KEMatchAuxStatDummy"
18125        )]
18126        pub stat_id: ::core::option::Option<i32>,
18127        #[prost(uint32, optional, tag = "2")]
18128        pub stat_value: ::core::option::Option<u32>,
18129    }
18130    #[derive(serde::Serialize, serde::Deserialize)]
18131    #[derive(Clone, PartialEq, ::prost::Message)]
18132    pub struct PlayerInfo {
18133        #[prost(uint32, optional, tag = "1")]
18134        pub account_id: ::core::option::Option<u32>,
18135        #[prost(
18136            enumeration = "super::ECitadelLobbyTeam",
18137            optional,
18138            tag = "2",
18139            default = "KECitadelLobbyTeamTeam0"
18140        )]
18141        pub team: ::core::option::Option<i32>,
18142        #[prost(uint32, optional, tag = "3")]
18143        pub player_slot: ::core::option::Option<u32>,
18144        #[prost(uint32, optional, tag = "4")]
18145        pub hero_mmr_with_uncertainty: ::core::option::Option<u32>,
18146        #[prost(uint32, optional, tag = "5")]
18147        pub player_mmr: ::core::option::Option<u32>,
18148        #[prost(uint32, optional, tag = "6")]
18149        pub player_uncertainty: ::core::option::Option<u32>,
18150        #[prost(uint32, optional, tag = "7")]
18151        pub hero_id: ::core::option::Option<u32>,
18152        #[prost(uint32, optional, tag = "8")]
18153        pub kills: ::core::option::Option<u32>,
18154        #[prost(uint32, optional, tag = "9")]
18155        pub deaths: ::core::option::Option<u32>,
18156        #[prost(uint32, optional, tag = "10")]
18157        pub net_worth: ::core::option::Option<u32>,
18158        #[prost(uint32, optional, tag = "11")]
18159        pub assists: ::core::option::Option<u32>,
18160        #[prost(uint32, optional, tag = "12")]
18161        pub hero_mmr: ::core::option::Option<u32>,
18162        #[prost(message, repeated, tag = "13")]
18163        pub items: ::prost::alloc::vec::Vec<PlayerItem>,
18164        #[prost(uint32, optional, tag = "14")]
18165        pub gpm_10min: ::core::option::Option<u32>,
18166        #[prost(uint32, optional, tag = "15")]
18167        pub gpm_15min: ::core::option::Option<u32>,
18168        #[prost(uint32, optional, tag = "16")]
18169        pub gpm_20min: ::core::option::Option<u32>,
18170        #[prost(uint32, optional, tag = "17")]
18171        pub gpm_25min: ::core::option::Option<u32>,
18172        #[prost(uint32, optional, tag = "18")]
18173        pub gpm_30min: ::core::option::Option<u32>,
18174        #[prost(uint32, optional, tag = "19")]
18175        pub gpm_35min: ::core::option::Option<u32>,
18176        #[prost(uint32, optional, tag = "20")]
18177        pub gpm_end: ::core::option::Option<u32>,
18178        #[prost(uint32, optional, tag = "21")]
18179        pub last_hits: ::core::option::Option<u32>,
18180        #[prost(uint32, optional, tag = "22")]
18181        pub denies: ::core::option::Option<u32>,
18182        #[prost(uint32, optional, tag = "23")]
18183        pub ability_points: ::core::option::Option<u32>,
18184        #[prost(uint32, optional, tag = "24")]
18185        pub level: ::core::option::Option<u32>,
18186        #[prost(uint32, optional, tag = "25")]
18187        pub assigned_lane: ::core::option::Option<u32>,
18188        #[prost(uint32, optional, tag = "26")]
18189        pub party_index: ::core::option::Option<u32>,
18190        #[prost(
18191            enumeration = "super::EgcPlatform",
18192            optional,
18193            tag = "27",
18194            default = "KEGcPlatformNone"
18195        )]
18196        pub platform: ::core::option::Option<i32>,
18197        #[prost(uint32, optional, tag = "28")]
18198        pub ability_damage: ::core::option::Option<u32>,
18199        #[prost(uint32, optional, tag = "29")]
18200        pub bullet_damage: ::core::option::Option<u32>,
18201        #[prost(uint32, optional, tag = "30")]
18202        pub hero_bullets_hit: ::core::option::Option<u32>,
18203        #[prost(uint32, optional, tag = "31")]
18204        pub hero_bullets_hit_crit: ::core::option::Option<u32>,
18205        #[prost(uint32, optional, tag = "32")]
18206        pub player_healing: ::core::option::Option<u32>,
18207        #[prost(uint32, optional, tag = "33")]
18208        pub hero_bullets_fired: ::core::option::Option<u32>,
18209        #[prost(uint32, optional, tag = "34")]
18210        pub hero_incoming_bullets_fired: ::core::option::Option<u32>,
18211        #[prost(uint32, optional, tag = "35")]
18212        pub hero_incoming_bullets_hit: ::core::option::Option<u32>,
18213        #[prost(uint32, optional, tag = "36")]
18214        pub hero_incoming_bullets_crit: ::core::option::Option<u32>,
18215        #[prost(uint32, optional, tag = "37")]
18216        pub time_dead_s: ::core::option::Option<u32>,
18217        #[prost(uint32, optional, tag = "38")]
18218        pub player_bullet_damage: ::core::option::Option<u32>,
18219        #[prost(uint32, optional, tag = "39")]
18220        pub player_ability_damage: ::core::option::Option<u32>,
18221        #[prost(uint32, optional, tag = "40")]
18222        pub player_melee_damage: ::core::option::Option<u32>,
18223        #[prost(uint32, optional, tag = "41")]
18224        pub abandon_match_time_s: ::core::option::Option<u32>,
18225        #[prost(uint32, optional, tag = "42")]
18226        pub abandon_time_stamp: ::core::option::Option<u32>,
18227        #[prost(uint32, optional, tag = "43")]
18228        pub trooper_kill_excluded: ::core::option::Option<u32>,
18229        #[prost(uint32, optional, tag = "44")]
18230        pub hero_bullets_lucky_shots: ::core::option::Option<u32>,
18231        #[prost(uint32, optional, tag = "45")]
18232        pub hero_build_id: ::core::option::Option<u32>,
18233        #[prost(uint32, optional, tag = "46")]
18234        pub objective_damage: ::core::option::Option<u32>,
18235        #[prost(float, optional, tag = "47")]
18236        pub avg_time_to_kill_s: ::core::option::Option<f32>,
18237        #[prost(bool, optional, tag = "48")]
18238        pub requires_skill_calibration: ::core::option::Option<bool>,
18239        #[prost(uint32, optional, tag = "49")]
18240        pub player_barriering: ::core::option::Option<u32>,
18241        #[prost(uint32, optional, tag = "50")]
18242        pub teammate_healing: ::core::option::Option<u32>,
18243        #[prost(uint32, optional, tag = "51")]
18244        pub teammate_barriering: ::core::option::Option<u32>,
18245        #[prost(uint32, optional, tag = "52")]
18246        pub self_damage: ::core::option::Option<u32>,
18247        #[prost(uint32, optional, tag = "53")]
18248        pub match_number: ::core::option::Option<u32>,
18249        #[prost(uint32, repeated, packed = "false", tag = "54")]
18250        pub damage_per_hero_ability: ::prost::alloc::vec::Vec<u32>,
18251        #[prost(message, repeated, tag = "55")]
18252        pub aux_stats: ::prost::alloc::vec::Vec<AuxStat>,
18253        #[prost(message, repeated, tag = "56")]
18254        pub player_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
18255        #[prost(float, optional, tag = "57")]
18256        pub new_player_score: ::core::option::Option<f32>,
18257    }
18258    #[derive(serde::Serialize, serde::Deserialize)]
18259    #[derive(Clone, PartialEq, ::prost::Message)]
18260    pub struct TeamInfo {
18261        #[prost(
18262            enumeration = "super::ECitadelLobbyTeam",
18263            optional,
18264            tag = "1",
18265            default = "KECitadelLobbyTeamTeam0"
18266        )]
18267        pub team: ::core::option::Option<i32>,
18268        #[prost(message, repeated, tag = "2")]
18269        pub team_tracked_stats: ::prost::alloc::vec::Vec<super::CMsgTrackedStat>,
18270    }
18271    #[derive(serde::Serialize, serde::Deserialize)]
18272    #[derive(
18273        Clone,
18274        Copy,
18275        Debug,
18276        PartialEq,
18277        Eq,
18278        Hash,
18279        PartialOrd,
18280        Ord,
18281        ::prost::Enumeration
18282    )]
18283    #[repr(i32)]
18284    pub enum EEndReason {
18285        KEEndReasonTeamWin = 0,
18286        KEEndReasonMatchDraw = 1,
18287        KEEndReasonAllAbandoned = 2,
18288        KEEndReasonNetworkIssues = 3,
18289        KEEndReasonMatchLength = 4,
18290        KEEndReasonPlayerNeverConnected = 5,
18291    }
18292    impl EEndReason {
18293        /// String value of the enum field names used in the ProtoBuf definition.
18294        ///
18295        /// The values are not transformed in any way and thus are considered stable
18296        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18297        pub fn as_str_name(&self) -> &'static str {
18298            match self {
18299                Self::KEEndReasonTeamWin => "k_EEndReason_TeamWin",
18300                Self::KEEndReasonMatchDraw => "k_EEndReason_MatchDraw",
18301                Self::KEEndReasonAllAbandoned => "k_EEndReason_AllAbandoned",
18302                Self::KEEndReasonNetworkIssues => "k_EEndReason_NetworkIssues",
18303                Self::KEEndReasonMatchLength => "k_EEndReason_MatchLength",
18304                Self::KEEndReasonPlayerNeverConnected => {
18305                    "k_EEndReason_PlayerNeverConnected"
18306                }
18307            }
18308        }
18309        /// Creates an enum from field names used in the ProtoBuf definition.
18310        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18311            match value {
18312                "k_EEndReason_TeamWin" => Some(Self::KEEndReasonTeamWin),
18313                "k_EEndReason_MatchDraw" => Some(Self::KEEndReasonMatchDraw),
18314                "k_EEndReason_AllAbandoned" => Some(Self::KEEndReasonAllAbandoned),
18315                "k_EEndReason_NetworkIssues" => Some(Self::KEEndReasonNetworkIssues),
18316                "k_EEndReason_MatchLength" => Some(Self::KEEndReasonMatchLength),
18317                "k_EEndReason_PlayerNeverConnected" => {
18318                    Some(Self::KEEndReasonPlayerNeverConnected)
18319                }
18320                _ => None,
18321            }
18322        }
18323    }
18324}
18325#[derive(serde::Serialize, serde::Deserialize)]
18326#[derive(Clone, PartialEq, ::prost::Message)]
18327pub struct CMsgServerToGcMatchSignout {
18328    #[prost(message, repeated, tag = "1")]
18329    pub additional_data: ::prost::alloc::vec::Vec<CExtraMsgBlock>,
18330    #[prost(uint32, optional, tag = "2")]
18331    pub signout_attempt: ::core::option::Option<u32>,
18332    #[prost(uint64, optional, tag = "3")]
18333    pub lobby_id: ::core::option::Option<u64>,
18334    #[prost(uint64, optional, tag = "4")]
18335    pub match_id: ::core::option::Option<u64>,
18336    #[prost(uint32, optional, tag = "9")]
18337    pub cluster_id: ::core::option::Option<u32>,
18338    #[prost(message, optional, tag = "10")]
18339    pub match_data: ::core::option::Option<CMsgMatchData>,
18340}
18341#[derive(serde::Serialize, serde::Deserialize)]
18342#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18343pub struct CMsgServerToGcMatchSignoutResponse {
18344    #[prost(
18345        enumeration = "c_msg_server_to_gc_match_signout_response::ESignoutResult",
18346        optional,
18347        tag = "1",
18348        default = "KESignoutFailedRetry"
18349    )]
18350    pub result: ::core::option::Option<i32>,
18351}
18352/// Nested message and enum types in `CMsgServerToGCMatchSignoutResponse`.
18353pub mod c_msg_server_to_gc_match_signout_response {
18354    #[derive(serde::Serialize, serde::Deserialize)]
18355    #[derive(
18356        Clone,
18357        Copy,
18358        Debug,
18359        PartialEq,
18360        Eq,
18361        Hash,
18362        PartialOrd,
18363        Ord,
18364        ::prost::Enumeration
18365    )]
18366    #[repr(i32)]
18367    pub enum ESignoutResult {
18368        KESignoutFailedRetry = 1,
18369        KESignoutFailedNoRetry = 2,
18370        KESignoutFailedInFlight = 3,
18371        KESignoutSuccess = 4,
18372        KESignoutSuccessAlreadySignedOut = 5,
18373    }
18374    impl ESignoutResult {
18375        /// String value of the enum field names used in the ProtoBuf definition.
18376        ///
18377        /// The values are not transformed in any way and thus are considered stable
18378        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18379        pub fn as_str_name(&self) -> &'static str {
18380            match self {
18381                Self::KESignoutFailedRetry => "k_ESignout_Failed_Retry",
18382                Self::KESignoutFailedNoRetry => "k_ESignout_Failed_NoRetry",
18383                Self::KESignoutFailedInFlight => "k_ESignout_Failed_InFlight",
18384                Self::KESignoutSuccess => "k_ESignout_Success",
18385                Self::KESignoutSuccessAlreadySignedOut => {
18386                    "k_ESignout_Success_AlreadySignedOut"
18387                }
18388            }
18389        }
18390        /// Creates an enum from field names used in the ProtoBuf definition.
18391        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18392            match value {
18393                "k_ESignout_Failed_Retry" => Some(Self::KESignoutFailedRetry),
18394                "k_ESignout_Failed_NoRetry" => Some(Self::KESignoutFailedNoRetry),
18395                "k_ESignout_Failed_InFlight" => Some(Self::KESignoutFailedInFlight),
18396                "k_ESignout_Success" => Some(Self::KESignoutSuccess),
18397                "k_ESignout_Success_AlreadySignedOut" => {
18398                    Some(Self::KESignoutSuccessAlreadySignedOut)
18399                }
18400                _ => None,
18401            }
18402        }
18403    }
18404}
18405#[derive(serde::Serialize, serde::Deserialize)]
18406#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18407pub struct CMsgServerWelcomeCitadel {}
18408#[derive(serde::Serialize, serde::Deserialize)]
18409#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18410pub struct CMsgServerToGcIdlePing {
18411    #[prost(uint32, optional, tag = "1")]
18412    pub server_version: ::core::option::Option<u32>,
18413}
18414#[derive(serde::Serialize, serde::Deserialize)]
18415#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18416pub struct CMsgGcToServerRequestPing {}
18417#[derive(serde::Serialize, serde::Deserialize)]
18418#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18419pub struct CMsgGcToServerAllocateForMatch {
18420    #[prost(uint64, optional, tag = "1")]
18421    pub match_id: ::core::option::Option<u64>,
18422}
18423#[derive(serde::Serialize, serde::Deserialize)]
18424#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18425pub struct CMsgGcToServerAllocateForMatchResponse {
18426    #[prost(bool, optional, tag = "1")]
18427    pub success: ::core::option::Option<bool>,
18428}
18429#[derive(serde::Serialize, serde::Deserialize)]
18430#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18431pub struct CMsgGcToServerAllocateForHideout {
18432    #[prost(uint64, optional, tag = "1")]
18433    pub hideout_lobby_id: ::core::option::Option<u64>,
18434}
18435#[derive(serde::Serialize, serde::Deserialize)]
18436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18437pub struct CMsgGcToServerAllocateForHideoutResponse {
18438    #[prost(uint64, optional, tag = "1")]
18439    pub hideout_lobby_id: ::core::option::Option<u64>,
18440    #[prost(bool, optional, tag = "2")]
18441    pub success: ::core::option::Option<bool>,
18442}
18443#[derive(serde::Serialize, serde::Deserialize)]
18444#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18445pub struct CMsgServerToGcEnterMatchmaking {
18446    #[prost(uint32, optional, tag = "1")]
18447    pub server_version: ::core::option::Option<u32>,
18448    #[prost(string, optional, tag = "2")]
18449    pub search_key: ::core::option::Option<::prost::alloc::string::String>,
18450    #[prost(uint32, optional, tag = "3")]
18451    pub region_id: ::core::option::Option<u32>,
18452    #[prost(uint32, optional, tag = "4")]
18453    pub cluster_id: ::core::option::Option<u32>,
18454    #[prost(uint32, optional, tag = "5")]
18455    pub server_public_ip: ::core::option::Option<u32>,
18456    #[prost(uint32, optional, tag = "6")]
18457    pub server_private_ip: ::core::option::Option<u32>,
18458    #[prost(uint32, optional, tag = "7")]
18459    pub server_port: ::core::option::Option<u32>,
18460    #[prost(bytes = "vec", optional, tag = "9")]
18461    pub sdr_address: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
18462    #[prost(uint32, optional, tag = "10")]
18463    pub replay_group_id: ::core::option::Option<u32>,
18464    #[prost(bool, optional, tag = "11")]
18465    pub allow_matches: ::core::option::Option<bool>,
18466    #[prost(bool, optional, tag = "12")]
18467    pub allow_hideout: ::core::option::Option<bool>,
18468}
18469#[derive(serde::Serialize, serde::Deserialize)]
18470#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18471pub struct CMsgGcToServerCancelAllocateForMatch {
18472    #[prost(uint64, optional, tag = "1")]
18473    pub match_id: ::core::option::Option<u64>,
18474    #[prost(uint64, optional, tag = "2")]
18475    pub hideout_lobby_id: ::core::option::Option<u64>,
18476}
18477#[derive(serde::Serialize, serde::Deserialize)]
18478#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18479pub struct CMsgServerToGcUpdateLobbyServerState {
18480    #[prost(uint64, optional, tag = "1")]
18481    pub lobby_id: ::core::option::Option<u64>,
18482    #[prost(
18483        enumeration = "ELobbyServerState",
18484        optional,
18485        tag = "2",
18486        default = "KELobbyServerStateAssign"
18487    )]
18488    pub server_state: ::core::option::Option<i32>,
18489    #[prost(bool, optional, tag = "3")]
18490    pub safe_to_abandon: ::core::option::Option<bool>,
18491}
18492#[derive(serde::Serialize, serde::Deserialize)]
18493#[derive(Clone, PartialEq, ::prost::Message)]
18494pub struct CMsgServerToGcAbandonMatch {
18495    #[prost(fixed64, optional, tag = "1")]
18496    pub server_steam_id: ::core::option::Option<u64>,
18497    #[prost(fixed64, optional, tag = "2")]
18498    pub lobby_id: ::core::option::Option<u64>,
18499    #[prost(uint32, optional, tag = "3")]
18500    pub cluster_id: ::core::option::Option<u32>,
18501    #[prost(
18502        enumeration = "c_msg_server_to_gc_abandon_match::EReason",
18503        optional,
18504        tag = "4",
18505        default = "ServerCrash"
18506    )]
18507    pub reason_code: ::core::option::Option<i32>,
18508    #[prost(uint64, optional, tag = "5")]
18509    pub additional_data: ::core::option::Option<u64>,
18510    #[prost(uint64, optional, tag = "6")]
18511    pub match_id: ::core::option::Option<u64>,
18512    #[prost(message, repeated, tag = "8")]
18513    pub players: ::prost::alloc::vec::Vec<c_msg_server_to_gc_abandon_match::Player>,
18514    #[prost(fixed32, optional, tag = "9")]
18515    pub public_ip_address: ::core::option::Option<u32>,
18516    #[prost(uint32, optional, tag = "10")]
18517    pub port: ::core::option::Option<u32>,
18518    #[prost(uint32, optional, tag = "11")]
18519    pub server_version: ::core::option::Option<u32>,
18520    #[prost(uint32, optional, tag = "12")]
18521    pub pid: ::core::option::Option<u32>,
18522    #[prost(uint32, optional, tag = "13")]
18523    pub instance_id: ::core::option::Option<u32>,
18524    #[prost(uint32, optional, tag = "14")]
18525    pub private_ip_address: ::core::option::Option<u32>,
18526    #[prost(
18527        enumeration = "ECitadelMatchMode",
18528        optional,
18529        tag = "15",
18530        default = "KECitadelMatchModeInvalid"
18531    )]
18532    pub match_mode: ::core::option::Option<i32>,
18533    #[prost(
18534        enumeration = "ECitadelGameMode",
18535        optional,
18536        tag = "16",
18537        default = "KECitadelGameModeInvalid"
18538    )]
18539    pub game_mode: ::core::option::Option<i32>,
18540    #[prost(bool, optional, tag = "17")]
18541    pub was_server_shutdown: ::core::option::Option<bool>,
18542    #[prost(uint32, optional, tag = "18")]
18543    pub region_id: ::core::option::Option<u32>,
18544    #[prost(uint64, optional, tag = "19")]
18545    pub hideout_lobby_id: ::core::option::Option<u64>,
18546    #[prost(uint64, optional, tag = "20")]
18547    pub routing_id: ::core::option::Option<u64>,
18548    #[prost(bool, optional, tag = "21")]
18549    pub allow_matches: ::core::option::Option<bool>,
18550    #[prost(bool, optional, tag = "22")]
18551    pub allow_hideout: ::core::option::Option<bool>,
18552}
18553/// Nested message and enum types in `CMsgServerToGCAbandonMatch`.
18554pub mod c_msg_server_to_gc_abandon_match {
18555    #[derive(serde::Serialize, serde::Deserialize)]
18556    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18557    pub struct Player {
18558        #[prost(uint32, optional, tag = "1")]
18559        pub account_id: ::core::option::Option<u32>,
18560        #[prost(uint64, optional, tag = "2")]
18561        pub additional_data: ::core::option::Option<u64>,
18562        #[prost(uint32, optional, tag = "3")]
18563        pub hero_id: ::core::option::Option<u32>,
18564    }
18565    #[derive(serde::Serialize, serde::Deserialize)]
18566    #[derive(
18567        Clone,
18568        Copy,
18569        Debug,
18570        PartialEq,
18571        Eq,
18572        Hash,
18573        PartialOrd,
18574        Ord,
18575        ::prost::Enumeration
18576    )]
18577    #[repr(i32)]
18578    pub enum EReason {
18579        ServerCrash = 1,
18580        ClientsFailedToConnect = 2,
18581    }
18582    impl EReason {
18583        /// String value of the enum field names used in the ProtoBuf definition.
18584        ///
18585        /// The values are not transformed in any way and thus are considered stable
18586        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18587        pub fn as_str_name(&self) -> &'static str {
18588            match self {
18589                Self::ServerCrash => "eReason_ServerCrash",
18590                Self::ClientsFailedToConnect => "eReason_ClientsFailedToConnect",
18591            }
18592        }
18593        /// Creates an enum from field names used in the ProtoBuf definition.
18594        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18595            match value {
18596                "eReason_ServerCrash" => Some(Self::ServerCrash),
18597                "eReason_ClientsFailedToConnect" => Some(Self::ClientsFailedToConnect),
18598                _ => None,
18599            }
18600        }
18601    }
18602}
18603#[derive(serde::Serialize, serde::Deserialize)]
18604#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18605pub struct CMsgServerToGcAbandonMatchResponse {}
18606#[derive(serde::Serialize, serde::Deserialize)]
18607#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18608pub struct CMsgServerToGcTestConnection {}
18609#[derive(serde::Serialize, serde::Deserialize)]
18610#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18611pub struct CMsgServerToGcTestConnectionResponse {}
18612#[derive(serde::Serialize, serde::Deserialize)]
18613#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
18614pub struct CMsgGcToServerSetServerConVar {
18615    #[prost(string, optional, tag = "1")]
18616    pub convar_name: ::core::option::Option<::prost::alloc::string::String>,
18617    #[prost(string, optional, tag = "2")]
18618    pub convar_value: ::core::option::Option<::prost::alloc::string::String>,
18619}
18620#[derive(serde::Serialize, serde::Deserialize)]
18621#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18622pub struct CMsgGcToServerSetServerConVarResponse {
18623    #[prost(bool, optional, tag = "1")]
18624    pub success: ::core::option::Option<bool>,
18625}
18626#[derive(serde::Serialize, serde::Deserialize)]
18627#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18628pub struct CMsgGcToServerAddSpectator {
18629    #[prost(uint64, optional, tag = "1")]
18630    pub lobby_id: ::core::option::Option<u64>,
18631    #[prost(uint32, optional, tag = "2")]
18632    pub account_id: ::core::option::Option<u32>,
18633    #[prost(uint32, optional, tag = "3")]
18634    pub account_to_spectate: ::core::option::Option<u32>,
18635}
18636#[derive(serde::Serialize, serde::Deserialize)]
18637#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18638pub struct CMsgGcToServerAddSpectatorResponse {
18639    #[prost(
18640        enumeration = "c_msg_gc_to_server_add_spectator_response::EResponse",
18641        optional,
18642        tag = "1",
18643        default = "KEInternalError"
18644    )]
18645    pub result: ::core::option::Option<i32>,
18646    #[prost(uint32, optional, tag = "2")]
18647    pub requesting_account_id: ::core::option::Option<u32>,
18648}
18649/// Nested message and enum types in `CMsgGCToServerAddSpectatorResponse`.
18650pub mod c_msg_gc_to_server_add_spectator_response {
18651    #[derive(serde::Serialize, serde::Deserialize)]
18652    #[derive(
18653        Clone,
18654        Copy,
18655        Debug,
18656        PartialEq,
18657        Eq,
18658        Hash,
18659        PartialOrd,
18660        Ord,
18661        ::prost::Enumeration
18662    )]
18663    #[repr(i32)]
18664    pub enum EResponse {
18665        KEInternalError = 0,
18666        KESuccess = 1,
18667        KEServerFull = 2,
18668    }
18669    impl EResponse {
18670        /// String value of the enum field names used in the ProtoBuf definition.
18671        ///
18672        /// The values are not transformed in any way and thus are considered stable
18673        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18674        pub fn as_str_name(&self) -> &'static str {
18675            match self {
18676                Self::KEInternalError => "k_eInternalError",
18677                Self::KESuccess => "k_eSuccess",
18678                Self::KEServerFull => "k_eServerFull",
18679            }
18680        }
18681        /// Creates an enum from field names used in the ProtoBuf definition.
18682        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18683            match value {
18684                "k_eInternalError" => Some(Self::KEInternalError),
18685                "k_eSuccess" => Some(Self::KESuccess),
18686                "k_eServerFull" => Some(Self::KEServerFull),
18687                _ => None,
18688            }
18689        }
18690    }
18691}
18692#[derive(serde::Serialize, serde::Deserialize)]
18693#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18694pub struct CMsgServerToGcRequestPlayerHeroData {
18695    #[prost(uint32, optional, tag = "1")]
18696    pub account_id: ::core::option::Option<u32>,
18697    #[prost(uint32, optional, tag = "2")]
18698    pub hero_id: ::core::option::Option<u32>,
18699}
18700#[derive(serde::Serialize, serde::Deserialize)]
18701#[derive(Clone, PartialEq, ::prost::Message)]
18702pub struct CMsgServerToGcRequestPlayerHeroDataResponse {
18703    #[prost(
18704        enumeration = "c_msg_server_to_gc_request_player_hero_data_response::EResult",
18705        optional,
18706        tag = "1",
18707        default = "KEInternalError"
18708    )]
18709    pub result: ::core::option::Option<i32>,
18710    #[prost(message, optional, tag = "2")]
18711    pub hero_data: ::core::option::Option<CMsgPlayerHeroData>,
18712}
18713/// Nested message and enum types in `CMsgServerToGCRequestPlayerHeroDataResponse`.
18714pub mod c_msg_server_to_gc_request_player_hero_data_response {
18715    #[derive(serde::Serialize, serde::Deserialize)]
18716    #[derive(
18717        Clone,
18718        Copy,
18719        Debug,
18720        PartialEq,
18721        Eq,
18722        Hash,
18723        PartialOrd,
18724        Ord,
18725        ::prost::Enumeration
18726    )]
18727    #[repr(i32)]
18728    pub enum EResult {
18729        KEInternalError = 0,
18730        KESuccess = 1,
18731        KETooBusy = 2,
18732        KEDisabled = 3,
18733        KETimeout = 4,
18734        KEInvalidPermission = 5,
18735    }
18736    impl EResult {
18737        /// String value of the enum field names used in the ProtoBuf definition.
18738        ///
18739        /// The values are not transformed in any way and thus are considered stable
18740        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18741        pub fn as_str_name(&self) -> &'static str {
18742            match self {
18743                Self::KEInternalError => "k_eInternalError",
18744                Self::KESuccess => "k_eSuccess",
18745                Self::KETooBusy => "k_eTooBusy",
18746                Self::KEDisabled => "k_eDisabled",
18747                Self::KETimeout => "k_eTimeout",
18748                Self::KEInvalidPermission => "k_eInvalidPermission",
18749            }
18750        }
18751        /// Creates an enum from field names used in the ProtoBuf definition.
18752        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18753            match value {
18754                "k_eInternalError" => Some(Self::KEInternalError),
18755                "k_eSuccess" => Some(Self::KESuccess),
18756                "k_eTooBusy" => Some(Self::KETooBusy),
18757                "k_eDisabled" => Some(Self::KEDisabled),
18758                "k_eTimeout" => Some(Self::KETimeout),
18759                "k_eInvalidPermission" => Some(Self::KEInvalidPermission),
18760                _ => None,
18761            }
18762        }
18763    }
18764}
18765#[derive(serde::Serialize, serde::Deserialize)]
18766#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
18767pub struct CMsgServerSteamLearnCitadelSignOutPlayerInfo {
18768    #[prost(int32, optional, tag = "1")]
18769    pub account_id: ::core::option::Option<i32>,
18770    #[prost(uint32, optional, tag = "2")]
18771    pub hero_id: ::core::option::Option<u32>,
18772    #[prost(uint32, optional, tag = "3")]
18773    pub mmr: ::core::option::Option<u32>,
18774    #[prost(uint32, optional, tag = "4")]
18775    pub total_games_played: ::core::option::Option<u32>,
18776    #[prost(
18777        enumeration = "ECitadelMatchMode",
18778        optional,
18779        tag = "10",
18780        default = "KECitadelMatchModeInvalid"
18781    )]
18782    pub match_mode: ::core::option::Option<i32>,
18783    #[prost(
18784        enumeration = "ECitadelGameMode",
18785        optional,
18786        tag = "11",
18787        default = "KECitadelGameModeInvalid"
18788    )]
18789    pub game_mode: ::core::option::Option<i32>,
18790}
18791#[derive(serde::Serialize, serde::Deserialize)]
18792#[derive(Clone, Copy, PartialEq, ::prost::Message)]
18793pub struct CMsgServerSteamLearnCitadelPlayerMechanicalBehavior {
18794    #[prost(uint32, optional, tag = "1")]
18795    pub net_worth: ::core::option::Option<u32>,
18796    #[prost(uint32, optional, tag = "2")]
18797    pub deaths: ::core::option::Option<u32>,
18798    #[prost(uint32, optional, tag = "3")]
18799    pub team_net_worth: ::core::option::Option<u32>,
18800    #[prost(uint32, optional, tag = "4")]
18801    pub enemy_team_net_worth: ::core::option::Option<u32>,
18802    #[prost(uint32, optional, tag = "5")]
18803    pub team_kills: ::core::option::Option<u32>,
18804    #[prost(uint32, optional, tag = "6")]
18805    pub enemy_team_kills: ::core::option::Option<u32>,
18806    #[prost(float, optional, tag = "7")]
18807    pub game_time: ::core::option::Option<f32>,
18808    #[prost(float, optional, tag = "8")]
18809    pub velocity_ratio_veryfast: ::core::option::Option<f32>,
18810    #[prost(float, optional, tag = "9")]
18811    pub velocity_ratio_fast: ::core::option::Option<f32>,
18812    #[prost(float, optional, tag = "10")]
18813    pub velocity_ratio_normal: ::core::option::Option<f32>,
18814    #[prost(float, optional, tag = "11")]
18815    pub velocity_ratio_slow: ::core::option::Option<f32>,
18816    #[prost(float, optional, tag = "12")]
18817    pub slide_ratio: ::core::option::Option<f32>,
18818    #[prost(float, optional, tag = "13")]
18819    pub item_cooldown_ratio: ::core::option::Option<f32>,
18820    #[prost(uint32, optional, tag = "14")]
18821    pub parries: ::core::option::Option<u32>,
18822    #[prost(float, optional, tag = "15")]
18823    pub time_in_shop_ratio: ::core::option::Option<f32>,
18824    #[prost(uint32, optional, tag = "16")]
18825    pub denies: ::core::option::Option<u32>,
18826    #[prost(uint32, optional, tag = "18")]
18827    pub mmr: ::core::option::Option<u32>,
18828    #[prost(uint32, optional, tag = "19")]
18829    pub total_games_played: ::core::option::Option<u32>,
18830    #[prost(float, optional, tag = "20")]
18831    pub build_effectiveness: ::core::option::Option<f32>,
18832    #[prost(float, optional, tag = "21")]
18833    pub net_worth_team_ratio: ::core::option::Option<f32>,
18834    #[prost(float, optional, tag = "22")]
18835    pub net_worth_game_ratio: ::core::option::Option<f32>,
18836    #[prost(float, optional, tag = "23")]
18837    pub time_spent_not_contributing_to_game_events_ratio: ::core::option::Option<f32>,
18838    #[prost(float, optional, tag = "24")]
18839    pub dash_jumps_per_minute: ::core::option::Option<f32>,
18840    #[prost(float, optional, tag = "25")]
18841    pub wall_jumps_per_minute: ::core::option::Option<f32>,
18842}
18843#[derive(serde::Serialize, serde::Deserialize)]
18844#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
18845#[repr(i32)]
18846pub enum EgcCitadelServerMessages {
18847    KEMsgServerToGcMatchSignoutPermission = 10012,
18848    KEMsgServerToGcMatchSignoutPermissionResponse = 10013,
18849    KEMsgServerToGcMatchSignout = 10014,
18850    KEMsgServerToGcMatchSignoutResponse = 10015,
18851    KEMsgGcToServerAddSpectator = 10016,
18852    KEMsgGcToServerAddSpectatorResponse = 10017,
18853    KEMsgServerToGcIdlePing = 10018,
18854    KEMsgGcToServerRequestPing = 10019,
18855    KEMsgGcToServerAllocateForMatch = 10021,
18856    KEMsgGcToServerAllocateForMatchResponse = 10022,
18857    KEMsgServerToGcEnterMatchmaking = 10023,
18858    KEMsgGcToServerCancelAllocateForMatch = 10024,
18859    KEMsgServerToGcUpdateLobbyServerState = 10025,
18860    KEMsgServerToGcAbandonMatch = 10026,
18861    KEMsgServerToGcAbandonMatchResponse = 10027,
18862    KEMsgServerToGcTestConnection = 10028,
18863    KEMsgServerToGcTestConnectionResponse = 10029,
18864    KEMsgGcToServerSetServerConVar = 10039,
18865    KEMsgGcToServerSetServerConVarResponse = 10040,
18866    KEMsgServerToGcUpdateMatchInfo = 10041,
18867    KEMsgServerToGcRequestPlayerHeroData = 10044,
18868    KEMsgServerToGcRequestPlayerHeroDataResponse = 10045,
18869    KEMsgGcToServerAllocateForHideout = 10046,
18870    KEMsgGcToServerAllocateForHideoutResponse = 10047,
18871}
18872impl EgcCitadelServerMessages {
18873    /// String value of the enum field names used in the ProtoBuf definition.
18874    ///
18875    /// The values are not transformed in any way and thus are considered stable
18876    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
18877    pub fn as_str_name(&self) -> &'static str {
18878        match self {
18879            Self::KEMsgServerToGcMatchSignoutPermission => {
18880                "k_EMsgServerToGCMatchSignoutPermission"
18881            }
18882            Self::KEMsgServerToGcMatchSignoutPermissionResponse => {
18883                "k_EMsgServerToGCMatchSignoutPermissionResponse"
18884            }
18885            Self::KEMsgServerToGcMatchSignout => "k_EMsgServerToGCMatchSignout",
18886            Self::KEMsgServerToGcMatchSignoutResponse => {
18887                "k_EMsgServerToGCMatchSignoutResponse"
18888            }
18889            Self::KEMsgGcToServerAddSpectator => "k_EMsgGCToServerAddSpectator",
18890            Self::KEMsgGcToServerAddSpectatorResponse => {
18891                "k_EMsgGCToServerAddSpectatorResponse"
18892            }
18893            Self::KEMsgServerToGcIdlePing => "k_EMsgServerToGCIdlePing",
18894            Self::KEMsgGcToServerRequestPing => "k_EMsgGCToServerRequestPing",
18895            Self::KEMsgGcToServerAllocateForMatch => "k_EMsgGCToServerAllocateForMatch",
18896            Self::KEMsgGcToServerAllocateForMatchResponse => {
18897                "k_EMsgGCToServerAllocateForMatchResponse"
18898            }
18899            Self::KEMsgServerToGcEnterMatchmaking => "k_EMsgServerToGCEnterMatchmaking",
18900            Self::KEMsgGcToServerCancelAllocateForMatch => {
18901                "k_EMsgGCToServerCancelAllocateForMatch"
18902            }
18903            Self::KEMsgServerToGcUpdateLobbyServerState => {
18904                "k_EMsgServerToGCUpdateLobbyServerState"
18905            }
18906            Self::KEMsgServerToGcAbandonMatch => "k_EMsgServerToGCAbandonMatch",
18907            Self::KEMsgServerToGcAbandonMatchResponse => {
18908                "k_EMsgServerToGCAbandonMatchResponse"
18909            }
18910            Self::KEMsgServerToGcTestConnection => "k_EMsgServerToGCTestConnection",
18911            Self::KEMsgServerToGcTestConnectionResponse => {
18912                "k_EMsgServerToGCTestConnectionResponse"
18913            }
18914            Self::KEMsgGcToServerSetServerConVar => "k_EMsgGCToServerSetServerConVar",
18915            Self::KEMsgGcToServerSetServerConVarResponse => {
18916                "k_EMsgGCToServerSetServerConVarResponse"
18917            }
18918            Self::KEMsgServerToGcUpdateMatchInfo => "k_EMsgServerToGCUpdateMatchInfo",
18919            Self::KEMsgServerToGcRequestPlayerHeroData => {
18920                "k_EMsgServerToGCRequestPlayerHeroData"
18921            }
18922            Self::KEMsgServerToGcRequestPlayerHeroDataResponse => {
18923                "k_EMsgServerToGCRequestPlayerHeroDataResponse"
18924            }
18925            Self::KEMsgGcToServerAllocateForHideout => {
18926                "k_EMsgGCToServerAllocateForHideout"
18927            }
18928            Self::KEMsgGcToServerAllocateForHideoutResponse => {
18929                "k_EMsgGCToServerAllocateForHideoutResponse"
18930            }
18931        }
18932    }
18933    /// Creates an enum from field names used in the ProtoBuf definition.
18934    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
18935        match value {
18936            "k_EMsgServerToGCMatchSignoutPermission" => {
18937                Some(Self::KEMsgServerToGcMatchSignoutPermission)
18938            }
18939            "k_EMsgServerToGCMatchSignoutPermissionResponse" => {
18940                Some(Self::KEMsgServerToGcMatchSignoutPermissionResponse)
18941            }
18942            "k_EMsgServerToGCMatchSignout" => Some(Self::KEMsgServerToGcMatchSignout),
18943            "k_EMsgServerToGCMatchSignoutResponse" => {
18944                Some(Self::KEMsgServerToGcMatchSignoutResponse)
18945            }
18946            "k_EMsgGCToServerAddSpectator" => Some(Self::KEMsgGcToServerAddSpectator),
18947            "k_EMsgGCToServerAddSpectatorResponse" => {
18948                Some(Self::KEMsgGcToServerAddSpectatorResponse)
18949            }
18950            "k_EMsgServerToGCIdlePing" => Some(Self::KEMsgServerToGcIdlePing),
18951            "k_EMsgGCToServerRequestPing" => Some(Self::KEMsgGcToServerRequestPing),
18952            "k_EMsgGCToServerAllocateForMatch" => {
18953                Some(Self::KEMsgGcToServerAllocateForMatch)
18954            }
18955            "k_EMsgGCToServerAllocateForMatchResponse" => {
18956                Some(Self::KEMsgGcToServerAllocateForMatchResponse)
18957            }
18958            "k_EMsgServerToGCEnterMatchmaking" => {
18959                Some(Self::KEMsgServerToGcEnterMatchmaking)
18960            }
18961            "k_EMsgGCToServerCancelAllocateForMatch" => {
18962                Some(Self::KEMsgGcToServerCancelAllocateForMatch)
18963            }
18964            "k_EMsgServerToGCUpdateLobbyServerState" => {
18965                Some(Self::KEMsgServerToGcUpdateLobbyServerState)
18966            }
18967            "k_EMsgServerToGCAbandonMatch" => Some(Self::KEMsgServerToGcAbandonMatch),
18968            "k_EMsgServerToGCAbandonMatchResponse" => {
18969                Some(Self::KEMsgServerToGcAbandonMatchResponse)
18970            }
18971            "k_EMsgServerToGCTestConnection" => Some(Self::KEMsgServerToGcTestConnection),
18972            "k_EMsgServerToGCTestConnectionResponse" => {
18973                Some(Self::KEMsgServerToGcTestConnectionResponse)
18974            }
18975            "k_EMsgGCToServerSetServerConVar" => {
18976                Some(Self::KEMsgGcToServerSetServerConVar)
18977            }
18978            "k_EMsgGCToServerSetServerConVarResponse" => {
18979                Some(Self::KEMsgGcToServerSetServerConVarResponse)
18980            }
18981            "k_EMsgServerToGCUpdateMatchInfo" => {
18982                Some(Self::KEMsgServerToGcUpdateMatchInfo)
18983            }
18984            "k_EMsgServerToGCRequestPlayerHeroData" => {
18985                Some(Self::KEMsgServerToGcRequestPlayerHeroData)
18986            }
18987            "k_EMsgServerToGCRequestPlayerHeroDataResponse" => {
18988                Some(Self::KEMsgServerToGcRequestPlayerHeroDataResponse)
18989            }
18990            "k_EMsgGCToServerAllocateForHideout" => {
18991                Some(Self::KEMsgGcToServerAllocateForHideout)
18992            }
18993            "k_EMsgGCToServerAllocateForHideoutResponse" => {
18994                Some(Self::KEMsgGcToServerAllocateForHideoutResponse)
18995            }
18996            _ => None,
18997        }
18998    }
18999}
19000#[derive(serde::Serialize, serde::Deserialize)]
19001#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19002#[repr(i32)]
19003pub enum ECitadelMatchAuxStat {
19004    KEMatchAuxStatDummy = 1,
19005}
19006impl ECitadelMatchAuxStat {
19007    /// String value of the enum field names used in the ProtoBuf definition.
19008    ///
19009    /// The values are not transformed in any way and thus are considered stable
19010    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19011    pub fn as_str_name(&self) -> &'static str {
19012        match self {
19013            Self::KEMatchAuxStatDummy => "k_eMatchAuxStat_Dummy",
19014        }
19015    }
19016    /// Creates an enum from field names used in the ProtoBuf definition.
19017    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19018        match value {
19019            "k_eMatchAuxStat_Dummy" => Some(Self::KEMatchAuxStatDummy),
19020            _ => None,
19021        }
19022    }
19023}
19024#[derive(serde::Serialize, serde::Deserialize)]
19025#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19026#[repr(i32)]
19027pub enum EgcServerLobbyData {
19028    KEServerLobbyDataPlayerMmr = 1,
19029    KEServerLobbyDataPlayerInfo = 2,
19030    KEServerLobbyDataPostMatchSurvey = 3,
19031    KEServerLobbyDataAutoTest = 4,
19032    KEServerLobbyDataPlayerStatValues = 5,
19033}
19034impl EgcServerLobbyData {
19035    /// String value of the enum field names used in the ProtoBuf definition.
19036    ///
19037    /// The values are not transformed in any way and thus are considered stable
19038    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19039    pub fn as_str_name(&self) -> &'static str {
19040        match self {
19041            Self::KEServerLobbyDataPlayerMmr => "k_EServerLobbyData_PlayerMMR",
19042            Self::KEServerLobbyDataPlayerInfo => "k_EServerLobbyData_PlayerInfo",
19043            Self::KEServerLobbyDataPostMatchSurvey => {
19044                "k_EServerLobbyData_PostMatchSurvey"
19045            }
19046            Self::KEServerLobbyDataAutoTest => "k_EServerLobbyData_AutoTest",
19047            Self::KEServerLobbyDataPlayerStatValues => {
19048                "k_EServerLobbyData_PlayerStatValues"
19049            }
19050        }
19051    }
19052    /// Creates an enum from field names used in the ProtoBuf definition.
19053    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19054        match value {
19055            "k_EServerLobbyData_PlayerMMR" => Some(Self::KEServerLobbyDataPlayerMmr),
19056            "k_EServerLobbyData_PlayerInfo" => Some(Self::KEServerLobbyDataPlayerInfo),
19057            "k_EServerLobbyData_PostMatchSurvey" => {
19058                Some(Self::KEServerLobbyDataPostMatchSurvey)
19059            }
19060            "k_EServerLobbyData_AutoTest" => Some(Self::KEServerLobbyDataAutoTest),
19061            "k_EServerLobbyData_PlayerStatValues" => {
19062                Some(Self::KEServerLobbyDataPlayerStatValues)
19063            }
19064            _ => None,
19065        }
19066    }
19067}
19068#[derive(serde::Serialize, serde::Deserialize)]
19069#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19070#[repr(i32)]
19071pub enum EgcServerSignoutData {
19072    KEServerSignoutDataDisconnections = 2,
19073    KEServerSignoutDataAccountStatChanges = 3,
19074    KEServerSignoutDataDetailedStats = 4,
19075    KEServerSignoutDataServerPerfStats = 5,
19076    KEServerSignoutDataPerfData = 6,
19077    KEServerSignoutDataPlayerChat = 7,
19078    KEServerSignoutDataBookRewards = 8,
19079    KEServerSignoutDataPenalizedPlayers = 9,
19080    KEServerSignoutDataMatchDevStats = 11,
19081    KEServerSignoutDataChallengeProgress = 12,
19082    KEServerSignoutDataHeroXpGrant = 13,
19083    KEServerSignoutDataMatchKills = 14,
19084    KEServerSignoutDataPlayerBehavior = 15,
19085    KEServerSignoutDataStreetBrawlData = 16,
19086}
19087impl EgcServerSignoutData {
19088    /// String value of the enum field names used in the ProtoBuf definition.
19089    ///
19090    /// The values are not transformed in any way and thus are considered stable
19091    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19092    pub fn as_str_name(&self) -> &'static str {
19093        match self {
19094            Self::KEServerSignoutDataDisconnections => {
19095                "k_EServerSignoutData_Disconnections"
19096            }
19097            Self::KEServerSignoutDataAccountStatChanges => {
19098                "k_EServerSignoutData_AccountStatChanges"
19099            }
19100            Self::KEServerSignoutDataDetailedStats => {
19101                "k_EServerSignoutData_DetailedStats"
19102            }
19103            Self::KEServerSignoutDataServerPerfStats => {
19104                "k_EServerSignoutData_ServerPerfStats"
19105            }
19106            Self::KEServerSignoutDataPerfData => "k_EServerSignoutData_PerfData",
19107            Self::KEServerSignoutDataPlayerChat => "k_EServerSignoutData_PlayerChat",
19108            Self::KEServerSignoutDataBookRewards => "k_EServerSignoutData_BookRewards",
19109            Self::KEServerSignoutDataPenalizedPlayers => {
19110                "k_EServerSignoutData_PenalizedPlayers"
19111            }
19112            Self::KEServerSignoutDataMatchDevStats => {
19113                "k_EServerSignoutData_MatchDevStats"
19114            }
19115            Self::KEServerSignoutDataChallengeProgress => {
19116                "k_EServerSignoutData_ChallengeProgress"
19117            }
19118            Self::KEServerSignoutDataHeroXpGrant => "k_EServerSignoutData_HeroXPGrant",
19119            Self::KEServerSignoutDataMatchKills => "k_EServerSignoutData_MatchKills",
19120            Self::KEServerSignoutDataPlayerBehavior => {
19121                "k_EServerSignoutData_PlayerBehavior"
19122            }
19123            Self::KEServerSignoutDataStreetBrawlData => {
19124                "k_EServerSignoutData_StreetBrawlData"
19125            }
19126        }
19127    }
19128    /// Creates an enum from field names used in the ProtoBuf definition.
19129    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19130        match value {
19131            "k_EServerSignoutData_Disconnections" => {
19132                Some(Self::KEServerSignoutDataDisconnections)
19133            }
19134            "k_EServerSignoutData_AccountStatChanges" => {
19135                Some(Self::KEServerSignoutDataAccountStatChanges)
19136            }
19137            "k_EServerSignoutData_DetailedStats" => {
19138                Some(Self::KEServerSignoutDataDetailedStats)
19139            }
19140            "k_EServerSignoutData_ServerPerfStats" => {
19141                Some(Self::KEServerSignoutDataServerPerfStats)
19142            }
19143            "k_EServerSignoutData_PerfData" => Some(Self::KEServerSignoutDataPerfData),
19144            "k_EServerSignoutData_PlayerChat" => {
19145                Some(Self::KEServerSignoutDataPlayerChat)
19146            }
19147            "k_EServerSignoutData_BookRewards" => {
19148                Some(Self::KEServerSignoutDataBookRewards)
19149            }
19150            "k_EServerSignoutData_PenalizedPlayers" => {
19151                Some(Self::KEServerSignoutDataPenalizedPlayers)
19152            }
19153            "k_EServerSignoutData_MatchDevStats" => {
19154                Some(Self::KEServerSignoutDataMatchDevStats)
19155            }
19156            "k_EServerSignoutData_ChallengeProgress" => {
19157                Some(Self::KEServerSignoutDataChallengeProgress)
19158            }
19159            "k_EServerSignoutData_HeroXPGrant" => {
19160                Some(Self::KEServerSignoutDataHeroXpGrant)
19161            }
19162            "k_EServerSignoutData_MatchKills" => {
19163                Some(Self::KEServerSignoutDataMatchKills)
19164            }
19165            "k_EServerSignoutData_PlayerBehavior" => {
19166                Some(Self::KEServerSignoutDataPlayerBehavior)
19167            }
19168            "k_EServerSignoutData_StreetBrawlData" => {
19169                Some(Self::KEServerSignoutDataStreetBrawlData)
19170            }
19171            _ => None,
19172        }
19173    }
19174}
19175#[derive(serde::Serialize, serde::Deserialize)]
19176#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19177pub struct CInButtonStatePb {
19178    #[prost(uint64, optional, tag = "1")]
19179    pub buttonstate1: ::core::option::Option<u64>,
19180    #[prost(uint64, optional, tag = "2")]
19181    pub buttonstate2: ::core::option::Option<u64>,
19182    #[prost(uint64, optional, tag = "3")]
19183    pub buttonstate3: ::core::option::Option<u64>,
19184}
19185#[derive(serde::Serialize, serde::Deserialize)]
19186#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19187pub struct CSubtickMoveStep {
19188    #[prost(uint64, optional, tag = "1")]
19189    pub button: ::core::option::Option<u64>,
19190    #[prost(bool, optional, tag = "2")]
19191    pub pressed: ::core::option::Option<bool>,
19192    #[prost(float, optional, tag = "3")]
19193    pub when: ::core::option::Option<f32>,
19194    #[prost(float, optional, tag = "4")]
19195    pub analog_forward_delta: ::core::option::Option<f32>,
19196    #[prost(float, optional, tag = "5")]
19197    pub analog_left_delta: ::core::option::Option<f32>,
19198    #[prost(float, optional, tag = "8")]
19199    pub pitch_delta: ::core::option::Option<f32>,
19200    #[prost(float, optional, tag = "9")]
19201    pub yaw_delta: ::core::option::Option<f32>,
19202}
19203#[derive(serde::Serialize, serde::Deserialize)]
19204#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19205pub struct CBaseUserCmdExecutionNotes {
19206    #[prost(string, optional, tag = "1")]
19207    pub ignored_reason: ::core::option::Option<::prost::alloc::string::String>,
19208}
19209#[derive(serde::Serialize, serde::Deserialize)]
19210#[derive(Clone, PartialEq, ::prost::Message)]
19211pub struct CBaseUserCmdPb {
19212    #[prost(int32, optional, tag = "1")]
19213    pub legacy_command_number: ::core::option::Option<i32>,
19214    #[prost(int32, optional, tag = "2")]
19215    pub client_tick: ::core::option::Option<i32>,
19216    #[prost(uint32, optional, tag = "17")]
19217    pub prediction_offset_ticks_x256: ::core::option::Option<u32>,
19218    #[prost(message, optional, tag = "3")]
19219    pub buttons_pb: ::core::option::Option<CInButtonStatePb>,
19220    #[prost(message, optional, tag = "4")]
19221    pub viewangles: ::core::option::Option<CMsgQAngle>,
19222    #[prost(float, optional, tag = "5")]
19223    pub forwardmove: ::core::option::Option<f32>,
19224    #[prost(float, optional, tag = "6")]
19225    pub leftmove: ::core::option::Option<f32>,
19226    #[prost(float, optional, tag = "7")]
19227    pub upmove: ::core::option::Option<f32>,
19228    #[prost(int32, optional, tag = "8")]
19229    pub impulse: ::core::option::Option<i32>,
19230    #[prost(int32, optional, tag = "9")]
19231    pub weaponselect: ::core::option::Option<i32>,
19232    #[prost(int32, optional, tag = "10")]
19233    pub random_seed: ::core::option::Option<i32>,
19234    #[prost(int32, optional, tag = "11")]
19235    pub mousedx: ::core::option::Option<i32>,
19236    #[prost(int32, optional, tag = "12")]
19237    pub mousedy: ::core::option::Option<i32>,
19238    #[prost(uint32, optional, tag = "14", default = "16777215")]
19239    pub pawn_entity_handle: ::core::option::Option<u32>,
19240    #[prost(message, repeated, tag = "18")]
19241    pub subtick_moves: ::prost::alloc::vec::Vec<CSubtickMoveStep>,
19242    #[prost(bytes = "vec", optional, tag = "19")]
19243    pub move_crc: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19244    #[prost(uint32, optional, tag = "20")]
19245    pub consumed_server_angle_changes: ::core::option::Option<u32>,
19246    #[prost(int32, optional, tag = "21")]
19247    pub cmd_flags: ::core::option::Option<i32>,
19248    #[prost(message, optional, tag = "22")]
19249    pub execution_notes: ::core::option::Option<CBaseUserCmdExecutionNotes>,
19250}
19251#[derive(serde::Serialize, serde::Deserialize)]
19252#[derive(Clone, PartialEq, ::prost::Message)]
19253pub struct CUserCmdBasePb {
19254    #[prost(message, optional, tag = "1")]
19255    pub base: ::core::option::Option<CBaseUserCmdPb>,
19256}
19257#[derive(serde::Serialize, serde::Deserialize)]
19258#[derive(Clone, PartialEq, ::prost::Message)]
19259pub struct CCitadelUserCmdPb {
19260    #[prost(message, optional, tag = "1")]
19261    pub base: ::core::option::Option<CBaseUserCmdPb>,
19262    #[prost(message, optional, tag = "2")]
19263    pub vec_camera_position: ::core::option::Option<CMsgVector>,
19264    #[prost(message, optional, tag = "3")]
19265    pub ang_camera_angles: ::core::option::Option<CMsgQAngle>,
19266    #[prost(int32, optional, tag = "4")]
19267    pub execute_ability_indices: ::core::option::Option<i32>,
19268    #[prost(bool, optional, tag = "5")]
19269    pub in_shop: ::core::option::Option<bool>,
19270    #[prost(float, optional, tag = "6")]
19271    pub camera_roaming_speed: ::core::option::Option<f32>,
19272    #[prost(bool, optional, tag = "8")]
19273    pub using_free_cursor: ::core::option::Option<bool>,
19274    #[prost(int32, optional, tag = "10", default = "-1")]
19275    pub enemy_hero_aimed_at: ::core::option::Option<i32>,
19276    #[prost(int32, repeated, packed = "false", tag = "11")]
19277    pub view_delta_x: ::prost::alloc::vec::Vec<i32>,
19278    #[prost(int32, repeated, packed = "false", tag = "12")]
19279    pub view_delta_y: ::prost::alloc::vec::Vec<i32>,
19280    #[prost(bool, optional, tag = "13")]
19281    pub is_in_third_person_view: ::core::option::Option<bool>,
19282}
19283#[derive(serde::Serialize, serde::Deserialize)]
19284#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19285pub struct CMsgVDebugGameSessionIdEvent {
19286    #[prost(int32, optional, tag = "1")]
19287    pub clientid: ::core::option::Option<i32>,
19288    #[prost(string, optional, tag = "2")]
19289    pub gamesessionid: ::core::option::Option<::prost::alloc::string::String>,
19290}
19291#[derive(serde::Serialize, serde::Deserialize)]
19292#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19293pub struct CMsgPlaceDecalEvent {
19294    #[prost(message, optional, tag = "1")]
19295    pub position: ::core::option::Option<CMsgVector>,
19296    #[prost(message, optional, tag = "2")]
19297    pub normal: ::core::option::Option<CMsgVector>,
19298    #[prost(message, optional, tag = "3")]
19299    pub saxis: ::core::option::Option<CMsgVector>,
19300    #[prost(int32, optional, tag = "4")]
19301    pub boneindex: ::core::option::Option<i32>,
19302    #[prost(int32, optional, tag = "13")]
19303    pub triangleindex: ::core::option::Option<i32>,
19304    #[prost(uint32, optional, tag = "5")]
19305    pub flags: ::core::option::Option<u32>,
19306    #[prost(fixed32, optional, tag = "6")]
19307    pub color: ::core::option::Option<u32>,
19308    #[prost(int32, optional, tag = "7")]
19309    pub random_seed: ::core::option::Option<i32>,
19310    #[prost(uint32, optional, tag = "8")]
19311    pub decal_group_name: ::core::option::Option<u32>,
19312    #[prost(float, optional, tag = "9")]
19313    pub size_override: ::core::option::Option<f32>,
19314    #[prost(uint32, optional, tag = "10", default = "16777215")]
19315    pub entityhandle: ::core::option::Option<u32>,
19316    #[prost(uint64, optional, tag = "11")]
19317    pub material_id: ::core::option::Option<u64>,
19318    #[prost(uint32, optional, tag = "12")]
19319    pub sequence_name: ::core::option::Option<u32>,
19320}
19321#[derive(serde::Serialize, serde::Deserialize)]
19322#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19323pub struct CMsgClearWorldDecalsEvent {
19324    #[prost(uint32, optional, tag = "1")]
19325    pub flagstoclear: ::core::option::Option<u32>,
19326}
19327#[derive(serde::Serialize, serde::Deserialize)]
19328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19329pub struct CMsgClearEntityDecalsEvent {
19330    #[prost(uint32, optional, tag = "1")]
19331    pub flagstoclear: ::core::option::Option<u32>,
19332}
19333#[derive(serde::Serialize, serde::Deserialize)]
19334#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19335pub struct CMsgClearDecalsForEntityEvent {
19336    #[prost(uint32, optional, tag = "1")]
19337    pub flagstoclear: ::core::option::Option<u32>,
19338    #[prost(uint32, optional, tag = "2", default = "16777215")]
19339    pub entityhandle: ::core::option::Option<u32>,
19340}
19341#[derive(serde::Serialize, serde::Deserialize)]
19342#[derive(Clone, PartialEq, ::prost::Message)]
19343pub struct CMsgSource1LegacyGameEventList {
19344    #[prost(message, repeated, tag = "1")]
19345    pub descriptors: ::prost::alloc::vec::Vec<
19346        c_msg_source1_legacy_game_event_list::DescriptorT,
19347    >,
19348}
19349/// Nested message and enum types in `CMsgSource1LegacyGameEventList`.
19350pub mod c_msg_source1_legacy_game_event_list {
19351    #[derive(serde::Serialize, serde::Deserialize)]
19352    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19353    pub struct KeyT {
19354        #[prost(int32, optional, tag = "1")]
19355        pub r#type: ::core::option::Option<i32>,
19356        #[prost(string, optional, tag = "2")]
19357        pub name: ::core::option::Option<::prost::alloc::string::String>,
19358    }
19359    #[derive(serde::Serialize, serde::Deserialize)]
19360    #[derive(Clone, PartialEq, ::prost::Message)]
19361    pub struct DescriptorT {
19362        #[prost(int32, optional, tag = "1")]
19363        pub eventid: ::core::option::Option<i32>,
19364        #[prost(string, optional, tag = "2")]
19365        pub name: ::core::option::Option<::prost::alloc::string::String>,
19366        #[prost(message, repeated, tag = "3")]
19367        pub keys: ::prost::alloc::vec::Vec<KeyT>,
19368    }
19369}
19370#[derive(serde::Serialize, serde::Deserialize)]
19371#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19372pub struct CMsgSource1LegacyListenEvents {
19373    #[prost(int32, optional, tag = "1")]
19374    pub playerslot: ::core::option::Option<i32>,
19375    #[prost(uint32, repeated, packed = "false", tag = "2")]
19376    pub eventarraybits: ::prost::alloc::vec::Vec<u32>,
19377}
19378#[derive(serde::Serialize, serde::Deserialize)]
19379#[derive(Clone, PartialEq, ::prost::Message)]
19380pub struct CMsgSource1LegacyGameEvent {
19381    #[prost(string, optional, tag = "1")]
19382    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
19383    #[prost(int32, optional, tag = "2")]
19384    pub eventid: ::core::option::Option<i32>,
19385    #[prost(message, repeated, tag = "3")]
19386    pub keys: ::prost::alloc::vec::Vec<c_msg_source1_legacy_game_event::KeyT>,
19387    #[prost(int32, optional, tag = "4")]
19388    pub server_tick: ::core::option::Option<i32>,
19389    #[prost(int32, optional, tag = "5")]
19390    pub passthrough: ::core::option::Option<i32>,
19391}
19392/// Nested message and enum types in `CMsgSource1LegacyGameEvent`.
19393pub mod c_msg_source1_legacy_game_event {
19394    #[derive(serde::Serialize, serde::Deserialize)]
19395    #[derive(Clone, PartialEq, ::prost::Message)]
19396    pub struct KeyT {
19397        #[prost(int32, optional, tag = "1")]
19398        pub r#type: ::core::option::Option<i32>,
19399        #[prost(string, optional, tag = "2")]
19400        pub val_string: ::core::option::Option<::prost::alloc::string::String>,
19401        #[prost(float, optional, tag = "3")]
19402        pub val_float: ::core::option::Option<f32>,
19403        #[prost(int32, optional, tag = "4")]
19404        pub val_long: ::core::option::Option<i32>,
19405        #[prost(int32, optional, tag = "5")]
19406        pub val_short: ::core::option::Option<i32>,
19407        #[prost(int32, optional, tag = "6")]
19408        pub val_byte: ::core::option::Option<i32>,
19409        #[prost(bool, optional, tag = "7")]
19410        pub val_bool: ::core::option::Option<bool>,
19411        #[prost(uint64, optional, tag = "8")]
19412        pub val_uint64: ::core::option::Option<u64>,
19413    }
19414}
19415#[derive(serde::Serialize, serde::Deserialize)]
19416#[derive(Clone, PartialEq, ::prost::Message)]
19417pub struct CMsgSosStartSoundEvent {
19418    #[prost(int32, optional, tag = "1")]
19419    pub soundevent_guid: ::core::option::Option<i32>,
19420    #[prost(fixed32, optional, tag = "2")]
19421    pub soundevent_hash: ::core::option::Option<u32>,
19422    #[prost(int32, optional, tag = "3", default = "-1")]
19423    pub source_entity_index: ::core::option::Option<i32>,
19424    #[prost(int32, optional, tag = "4")]
19425    pub seed: ::core::option::Option<i32>,
19426    #[prost(bytes = "vec", optional, tag = "5")]
19427    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19428    #[prost(float, optional, tag = "6")]
19429    pub start_time: ::core::option::Option<f32>,
19430}
19431#[derive(serde::Serialize, serde::Deserialize)]
19432#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19433pub struct CMsgSosStopSoundEvent {
19434    #[prost(int32, optional, tag = "1")]
19435    pub soundevent_guid: ::core::option::Option<i32>,
19436}
19437#[derive(serde::Serialize, serde::Deserialize)]
19438#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19439pub struct CMsgSosStopSoundEventHash {
19440    #[prost(fixed32, optional, tag = "1")]
19441    pub soundevent_hash: ::core::option::Option<u32>,
19442    #[prost(int32, optional, tag = "2", default = "-1")]
19443    pub source_entity_index: ::core::option::Option<i32>,
19444}
19445#[derive(serde::Serialize, serde::Deserialize)]
19446#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19447pub struct CMsgSosSetSoundEventParams {
19448    #[prost(int32, optional, tag = "1")]
19449    pub soundevent_guid: ::core::option::Option<i32>,
19450    #[prost(bytes = "vec", optional, tag = "5")]
19451    pub packed_params: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19452}
19453#[derive(serde::Serialize, serde::Deserialize)]
19454#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19455pub struct CMsgSosSetLibraryStackFields {
19456    #[prost(fixed32, optional, tag = "1")]
19457    pub stack_hash: ::core::option::Option<u32>,
19458    #[prost(bytes = "vec", optional, tag = "5")]
19459    pub packed_fields: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
19460}
19461#[derive(serde::Serialize, serde::Deserialize)]
19462#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
19463#[repr(i32)]
19464pub enum EBaseGameEvents {
19465    GeVDebugGameSessionIdEvent = 200,
19466    GePlaceDecalEvent = 201,
19467    GeClearWorldDecalsEvent = 202,
19468    GeClearEntityDecalsEvent = 203,
19469    GeClearDecalsForEntityEvent = 204,
19470    GeSource1LegacyGameEventList = 205,
19471    GeSource1LegacyListenEvents = 206,
19472    GeSource1LegacyGameEvent = 207,
19473    GeSosStartSoundEvent = 208,
19474    GeSosStopSoundEvent = 209,
19475    GeSosSetSoundEventParams = 210,
19476    GeSosSetLibraryStackFields = 211,
19477    GeSosStopSoundEventHash = 212,
19478}
19479impl EBaseGameEvents {
19480    /// String value of the enum field names used in the ProtoBuf definition.
19481    ///
19482    /// The values are not transformed in any way and thus are considered stable
19483    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19484    pub fn as_str_name(&self) -> &'static str {
19485        match self {
19486            Self::GeVDebugGameSessionIdEvent => "GE_VDebugGameSessionIDEvent",
19487            Self::GePlaceDecalEvent => "GE_PlaceDecalEvent",
19488            Self::GeClearWorldDecalsEvent => "GE_ClearWorldDecalsEvent",
19489            Self::GeClearEntityDecalsEvent => "GE_ClearEntityDecalsEvent",
19490            Self::GeClearDecalsForEntityEvent => "GE_ClearDecalsForEntityEvent",
19491            Self::GeSource1LegacyGameEventList => "GE_Source1LegacyGameEventList",
19492            Self::GeSource1LegacyListenEvents => "GE_Source1LegacyListenEvents",
19493            Self::GeSource1LegacyGameEvent => "GE_Source1LegacyGameEvent",
19494            Self::GeSosStartSoundEvent => "GE_SosStartSoundEvent",
19495            Self::GeSosStopSoundEvent => "GE_SosStopSoundEvent",
19496            Self::GeSosSetSoundEventParams => "GE_SosSetSoundEventParams",
19497            Self::GeSosSetLibraryStackFields => "GE_SosSetLibraryStackFields",
19498            Self::GeSosStopSoundEventHash => "GE_SosStopSoundEventHash",
19499        }
19500    }
19501    /// Creates an enum from field names used in the ProtoBuf definition.
19502    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19503        match value {
19504            "GE_VDebugGameSessionIDEvent" => Some(Self::GeVDebugGameSessionIdEvent),
19505            "GE_PlaceDecalEvent" => Some(Self::GePlaceDecalEvent),
19506            "GE_ClearWorldDecalsEvent" => Some(Self::GeClearWorldDecalsEvent),
19507            "GE_ClearEntityDecalsEvent" => Some(Self::GeClearEntityDecalsEvent),
19508            "GE_ClearDecalsForEntityEvent" => Some(Self::GeClearDecalsForEntityEvent),
19509            "GE_Source1LegacyGameEventList" => Some(Self::GeSource1LegacyGameEventList),
19510            "GE_Source1LegacyListenEvents" => Some(Self::GeSource1LegacyListenEvents),
19511            "GE_Source1LegacyGameEvent" => Some(Self::GeSource1LegacyGameEvent),
19512            "GE_SosStartSoundEvent" => Some(Self::GeSosStartSoundEvent),
19513            "GE_SosStopSoundEvent" => Some(Self::GeSosStopSoundEvent),
19514            "GE_SosSetSoundEventParams" => Some(Self::GeSosSetSoundEventParams),
19515            "GE_SosSetLibraryStackFields" => Some(Self::GeSosSetLibraryStackFields),
19516            "GE_SosStopSoundEventHash" => Some(Self::GeSosStopSoundEventHash),
19517            _ => None,
19518        }
19519    }
19520}
19521#[derive(serde::Serialize, serde::Deserialize)]
19522#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19523pub struct CUserMessageEmpty {
19524    #[prost(uint32, optional, tag = "1")]
19525    pub empty: ::core::option::Option<u32>,
19526}
19527#[derive(serde::Serialize, serde::Deserialize)]
19528#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19529pub struct CCitadelUserMessageDamage {
19530    #[prost(int32, optional, tag = "1")]
19531    pub damage: ::core::option::Option<i32>,
19532    #[prost(int32, optional, tag = "2")]
19533    pub pre_damage_deprecated: ::core::option::Option<i32>,
19534    #[prost(float, optional, tag = "27")]
19535    pub pre_damage: ::core::option::Option<f32>,
19536    #[prost(int32, optional, tag = "3")]
19537    pub r#type: ::core::option::Option<i32>,
19538    #[prost(int32, optional, tag = "4")]
19539    pub citadel_type: ::core::option::Option<i32>,
19540    #[prost(message, optional, tag = "5")]
19541    pub origin: ::core::option::Option<CMsgVector>,
19542    #[prost(int32, optional, tag = "6", default = "-1")]
19543    pub entindex_victim: ::core::option::Option<i32>,
19544    #[prost(int32, optional, tag = "7", default = "-1")]
19545    pub entindex_inflictor: ::core::option::Option<i32>,
19546    #[prost(int32, optional, tag = "8", default = "-1")]
19547    pub entindex_attacker: ::core::option::Option<i32>,
19548    #[prost(int32, optional, tag = "9", default = "-1")]
19549    pub entindex_ability: ::core::option::Option<i32>,
19550    #[prost(int32, optional, tag = "10")]
19551    pub damage_absorbed_deprecated: ::core::option::Option<i32>,
19552    #[prost(float, optional, tag = "28")]
19553    pub damage_absorbed: ::core::option::Option<f32>,
19554    #[prost(int32, optional, tag = "11")]
19555    pub victim_health_max: ::core::option::Option<i32>,
19556    #[prost(int32, optional, tag = "12")]
19557    pub victim_health_new: ::core::option::Option<i32>,
19558    #[prost(uint64, optional, tag = "13")]
19559    pub flags: ::core::option::Option<u64>,
19560    #[prost(uint32, optional, tag = "14")]
19561    pub ability_id: ::core::option::Option<u32>,
19562    #[prost(uint32, optional, tag = "15")]
19563    pub attacker_class: ::core::option::Option<u32>,
19564    #[prost(uint32, optional, tag = "16")]
19565    pub victim_class: ::core::option::Option<u32>,
19566    #[prost(int32, optional, tag = "17")]
19567    pub victim_shield_max: ::core::option::Option<i32>,
19568    #[prost(int32, optional, tag = "18")]
19569    pub victim_shield_new: ::core::option::Option<i32>,
19570    #[prost(int32, optional, tag = "19")]
19571    pub hits: ::core::option::Option<i32>,
19572    #[prost(int32, optional, tag = "20")]
19573    pub health_lost: ::core::option::Option<i32>,
19574    #[prost(int32, optional, tag = "21")]
19575    pub hitgroup_id: ::core::option::Option<i32>,
19576    #[prost(int32, optional, tag = "22", default = "-1")]
19577    pub entindex_attacking_object: ::core::option::Option<i32>,
19578    #[prost(message, optional, tag = "23")]
19579    pub damage_direction: ::core::option::Option<CMsgVector>,
19580    #[prost(bool, optional, tag = "24")]
19581    pub is_secondary_stat: ::core::option::Option<bool>,
19582    #[prost(float, optional, tag = "25")]
19583    pub effectiveness: ::core::option::Option<f32>,
19584    #[prost(float, optional, tag = "26")]
19585    pub crit_damage: ::core::option::Option<f32>,
19586    #[prost(int32, optional, tag = "29")]
19587    pub server_tick: ::core::option::Option<i32>,
19588}
19589#[derive(serde::Serialize, serde::Deserialize)]
19590#[derive(Clone, PartialEq, ::prost::Message)]
19591pub struct PingCommonData {
19592    #[prost(uint32, optional, tag = "1")]
19593    pub ping_message_id: ::core::option::Option<u32>,
19594    #[prost(message, optional, tag = "2")]
19595    pub ping_location: ::core::option::Option<CMsgVector>,
19596    #[prost(uint32, optional, tag = "3", default = "16777215")]
19597    pub entity_index: ::core::option::Option<u32>,
19598    #[prost(int32, optional, tag = "4", default = "-1")]
19599    pub sender_player_slot: ::core::option::Option<i32>,
19600    #[prost(int32, optional, tag = "5")]
19601    pub speech_concept: ::core::option::Option<i32>,
19602    #[prost(string, optional, tag = "6")]
19603    pub response_chosen: ::core::option::Option<::prost::alloc::string::String>,
19604    #[prost(float, optional, tag = "7")]
19605    pub cooldown_time: ::core::option::Option<f32>,
19606}
19607#[derive(serde::Serialize, serde::Deserialize)]
19608#[derive(Clone, PartialEq, ::prost::Message)]
19609pub struct CCitadelUserMsgMapPing {
19610    #[prost(message, optional, tag = "1")]
19611    pub ping_data: ::core::option::Option<PingCommonData>,
19612    #[prost(uint32, optional, tag = "2")]
19613    pub event_type: ::core::option::Option<u32>,
19614    #[prost(
19615        enumeration = "ChatMsgPingMarkerInfo",
19616        optional,
19617        tag = "3",
19618        default = "KEPingMarkerInfoShowMarkerAndSound"
19619    )]
19620    pub ping_marker_and_sound_info: ::core::option::Option<i32>,
19621    #[prost(bool, optional, tag = "4")]
19622    pub pinged_enemy_entity: ::core::option::Option<bool>,
19623    #[prost(uint32, optional, tag = "5")]
19624    pub pinged_entity_class: ::core::option::Option<u32>,
19625    #[prost(bool, optional, tag = "6")]
19626    pub is_minimap_ping: ::core::option::Option<bool>,
19627    #[prost(string, optional, tag = "7")]
19628    pub pinged_hero_name: ::core::option::Option<::prost::alloc::string::String>,
19629    #[prost(bool, optional, tag = "8")]
19630    pub is_blind_ping: ::core::option::Option<bool>,
19631}
19632#[derive(serde::Serialize, serde::Deserialize)]
19633#[derive(Clone, PartialEq, ::prost::Message)]
19634pub struct CCitadelUserMsgPingWheel {
19635    #[prost(message, optional, tag = "1")]
19636    pub ping_data: ::core::option::Option<PingCommonData>,
19637    #[prost(uint32, optional, tag = "2")]
19638    pub ping_wheel_option_id: ::core::option::Option<u32>,
19639}
19640#[derive(serde::Serialize, serde::Deserialize)]
19641#[derive(Clone, PartialEq, ::prost::Message)]
19642pub struct CCitadelUserMsgAbilityPing {
19643    #[prost(message, optional, tag = "1")]
19644    pub ping_data: ::core::option::Option<PingCommonData>,
19645    #[prost(uint32, optional, tag = "2")]
19646    pub ability_id: ::core::option::Option<u32>,
19647    #[prost(float, optional, tag = "3")]
19648    pub ability_cooldown: ::core::option::Option<f32>,
19649    #[prost(
19650        enumeration = "ChatMsgPingMarkerInfo",
19651        optional,
19652        tag = "4",
19653        default = "KEPingMarkerInfoShowMarkerAndSound"
19654    )]
19655    pub ping_marker_and_sound_info: ::core::option::Option<i32>,
19656}
19657#[derive(serde::Serialize, serde::Deserialize)]
19658#[derive(Clone, PartialEq, ::prost::Message)]
19659pub struct CCitadelUserMsgQuickResponse {
19660    #[prost(message, optional, tag = "1")]
19661    pub ping_data: ::core::option::Option<PingCommonData>,
19662    #[prost(uint32, optional, tag = "2")]
19663    pub responding_to_ping_message_id: ::core::option::Option<u32>,
19664    #[prost(int32, optional, tag = "3", default = "-1")]
19665    pub responding_to_player_slot: ::core::option::Option<i32>,
19666    #[prost(
19667        enumeration = "CMsgLaneColor",
19668        optional,
19669        tag = "4",
19670        default = "KELaneColorInvalid"
19671    )]
19672    pub lane_color: ::core::option::Option<i32>,
19673}
19674#[derive(serde::Serialize, serde::Deserialize)]
19675#[derive(Clone, PartialEq, ::prost::Message)]
19676pub struct CCitadelUserMsgItemDraftReaction {
19677    #[prost(message, optional, tag = "1")]
19678    pub ping_data: ::core::option::Option<PingCommonData>,
19679    #[prost(bool, optional, tag = "2")]
19680    pub rare: ::core::option::Option<bool>,
19681    #[prost(bool, optional, tag = "3")]
19682    pub legendary: ::core::option::Option<bool>,
19683}
19684#[derive(serde::Serialize, serde::Deserialize)]
19685#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19686pub struct CCitadelUserMsgMapLine {
19687    #[prost(int32, optional, tag = "1", default = "-1")]
19688    pub sender_player_slot: ::core::option::Option<i32>,
19689    #[prost(message, optional, tag = "2")]
19690    pub mapline: ::core::option::Option<CMsgMapLine>,
19691}
19692#[derive(serde::Serialize, serde::Deserialize)]
19693#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19694pub struct CCitadelUserMsgTeamRewards {
19695    #[prost(uint32, optional, tag = "1")]
19696    pub xp: ::core::option::Option<u32>,
19697    #[prost(uint32, optional, tag = "2")]
19698    pub gold: ::core::option::Option<u32>,
19699    #[prost(bool, optional, tag = "3")]
19700    pub winner: ::core::option::Option<bool>,
19701}
19702#[derive(serde::Serialize, serde::Deserialize)]
19703#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19704pub struct CCitadelUserMsgTriggerDamageFlash {
19705    #[prost(int32, optional, tag = "1", default = "-1")]
19706    pub entindex_flash_victim: ::core::option::Option<i32>,
19707    #[prost(int32, optional, tag = "2", default = "-1")]
19708    pub entindex_flash_attacker: ::core::option::Option<i32>,
19709    #[prost(int32, optional, tag = "3")]
19710    pub entindex_flash_hitgroup: ::core::option::Option<i32>,
19711    #[prost(uint32, optional, tag = "4")]
19712    pub flash_value: ::core::option::Option<u32>,
19713    #[prost(uint32, optional, tag = "5")]
19714    pub flash_type: ::core::option::Option<u32>,
19715    #[prost(uint32, optional, tag = "6")]
19716    pub flash_flags: ::core::option::Option<u32>,
19717    #[prost(message, optional, tag = "7")]
19718    pub flash_position: ::core::option::Option<CMsgVector>,
19719}
19720#[derive(serde::Serialize, serde::Deserialize)]
19721#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19722pub struct CCitadelUserMsgAbilitiesChanged {
19723    #[prost(int32, optional, tag = "1", default = "-1")]
19724    pub purchaser_player_slot: ::core::option::Option<i32>,
19725    #[prost(uint32, optional, tag = "2")]
19726    pub ability_id: ::core::option::Option<u32>,
19727    #[prost(
19728        enumeration = "c_citadel_user_msg_abilities_changed::Change",
19729        optional,
19730        tag = "3",
19731        default = "EInvalid"
19732    )]
19733    pub change: ::core::option::Option<i32>,
19734}
19735/// Nested message and enum types in `CCitadelUserMsg_AbilitiesChanged`.
19736pub mod c_citadel_user_msg_abilities_changed {
19737    #[derive(serde::Serialize, serde::Deserialize)]
19738    #[derive(
19739        Clone,
19740        Copy,
19741        Debug,
19742        PartialEq,
19743        Eq,
19744        Hash,
19745        PartialOrd,
19746        Ord,
19747        ::prost::Enumeration
19748    )]
19749    #[repr(i32)]
19750    pub enum Change {
19751        EInvalid = -1,
19752        EPurchased = 0,
19753        EUpgraded = 1,
19754        ESold = 2,
19755        ESwappedActivatedAbility = 3,
19756        EFailure = 4,
19757    }
19758    impl Change {
19759        /// String value of the enum field names used in the ProtoBuf definition.
19760        ///
19761        /// The values are not transformed in any way and thus are considered stable
19762        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
19763        pub fn as_str_name(&self) -> &'static str {
19764            match self {
19765                Self::EInvalid => "EInvalid",
19766                Self::EPurchased => "EPurchased",
19767                Self::EUpgraded => "EUpgraded",
19768                Self::ESold => "ESold",
19769                Self::ESwappedActivatedAbility => "ESwappedActivatedAbility",
19770                Self::EFailure => "EFailure",
19771            }
19772        }
19773        /// Creates an enum from field names used in the ProtoBuf definition.
19774        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
19775            match value {
19776                "EInvalid" => Some(Self::EInvalid),
19777                "EPurchased" => Some(Self::EPurchased),
19778                "EUpgraded" => Some(Self::EUpgraded),
19779                "ESold" => Some(Self::ESold),
19780                "ESwappedActivatedAbility" => Some(Self::ESwappedActivatedAbility),
19781                "EFailure" => Some(Self::EFailure),
19782                _ => None,
19783            }
19784        }
19785    }
19786}
19787#[derive(serde::Serialize, serde::Deserialize)]
19788#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19789pub struct CCitadelUserMsgAbilityInterrupted {
19790    #[prost(int32, optional, tag = "1", default = "-1")]
19791    pub entindex_victim: ::core::option::Option<i32>,
19792    #[prost(int32, optional, tag = "2", default = "-1")]
19793    pub entindex_interrupter: ::core::option::Option<i32>,
19794    #[prost(uint32, optional, tag = "3")]
19795    pub ability_id_interrupted: ::core::option::Option<u32>,
19796    #[prost(uint32, optional, tag = "4")]
19797    pub ability_id_interrupter: ::core::option::Option<u32>,
19798    #[prost(uint32, optional, tag = "5")]
19799    pub hero_id_interrupter: ::core::option::Option<u32>,
19800}
19801#[derive(serde::Serialize, serde::Deserialize)]
19802#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19803pub struct CCitadelUserMsgAbilityLateFailure {
19804    #[prost(int32, optional, tag = "1", default = "-1")]
19805    pub entindex_caster: ::core::option::Option<i32>,
19806    #[prost(int32, optional, tag = "2", default = "-1")]
19807    pub entindex_ability: ::core::option::Option<i32>,
19808    #[prost(uint32, optional, tag = "3")]
19809    pub failure_type: ::core::option::Option<u32>,
19810}
19811#[derive(serde::Serialize, serde::Deserialize)]
19812#[derive(Clone, PartialEq, ::prost::Message)]
19813pub struct CCitadelUserMsgRecentDamageSummary {
19814    #[prost(int32, optional, tag = "1", default = "-1")]
19815    pub player_slot: ::core::option::Option<i32>,
19816    #[prost(message, repeated, tag = "2")]
19817    pub damage_records: ::prost::alloc::vec::Vec<
19818        c_citadel_user_msg_recent_damage_summary::DamageRecord,
19819    >,
19820    #[prost(float, optional, tag = "3")]
19821    pub start_time: ::core::option::Option<f32>,
19822    #[prost(float, optional, tag = "4")]
19823    pub end_time: ::core::option::Option<f32>,
19824    #[prost(int32, optional, tag = "5")]
19825    pub total_damage: ::core::option::Option<i32>,
19826    #[prost(int32, optional, tag = "6")]
19827    pub lost_gold: ::core::option::Option<i32>,
19828    #[prost(message, repeated, tag = "7")]
19829    pub modifier_records: ::prost::alloc::vec::Vec<
19830        c_citadel_user_msg_recent_damage_summary::ModifierRecord,
19831    >,
19832}
19833/// Nested message and enum types in `CCitadelUserMsg_RecentDamageSummary`.
19834pub mod c_citadel_user_msg_recent_damage_summary {
19835    #[derive(serde::Serialize, serde::Deserialize)]
19836    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
19837    pub struct DamageRecord {
19838        #[prost(int32, optional, tag = "1")]
19839        pub damage: ::core::option::Option<i32>,
19840        #[prost(int32, optional, tag = "2")]
19841        pub hits: ::core::option::Option<i32>,
19842        #[prost(uint32, optional, tag = "3")]
19843        pub damage_type: ::core::option::Option<u32>,
19844        #[prost(uint32, optional, tag = "4")]
19845        pub hero_id: ::core::option::Option<u32>,
19846        #[prost(uint32, optional, tag = "5")]
19847        pub ability_id: ::core::option::Option<u32>,
19848        #[prost(uint32, optional, tag = "6")]
19849        pub attacker_class: ::core::option::Option<u32>,
19850        #[prost(float, optional, tag = "7")]
19851        pub damage_absorbed: ::core::option::Option<f32>,
19852        #[prost(bool, optional, tag = "8")]
19853        pub is_killing_blow: ::core::option::Option<bool>,
19854        #[prost(uint32, optional, tag = "9")]
19855        pub victim_hero_id: ::core::option::Option<u32>,
19856        #[prost(bool, optional, tag = "10")]
19857        pub is_secondary_stat: ::core::option::Option<bool>,
19858        #[prost(float, optional, tag = "11")]
19859        pub pre_damage: ::core::option::Option<f32>,
19860        #[prost(float, optional, tag = "12")]
19861        pub crit_damage: ::core::option::Option<f32>,
19862    }
19863    #[derive(serde::Serialize, serde::Deserialize)]
19864    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
19865    pub struct ModifierRecord {
19866        #[prost(uint32, optional, tag = "1")]
19867        pub ability_id: ::core::option::Option<u32>,
19868        #[prost(uint32, optional, tag = "2")]
19869        pub modifier_type_id: ::core::option::Option<u32>,
19870        #[prost(int32, optional, tag = "3", default = "-1")]
19871        pub entindex_caster: ::core::option::Option<i32>,
19872        #[prost(float, optional, tag = "4")]
19873        pub start_time: ::core::option::Option<f32>,
19874        #[prost(float, optional, tag = "5")]
19875        pub end_time: ::core::option::Option<f32>,
19876        #[prost(bool, optional, tag = "6")]
19877        pub debuff: ::core::option::Option<bool>,
19878    }
19879}
19880#[derive(serde::Serialize, serde::Deserialize)]
19881#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19882pub struct CCitadelUserMsgSpectatorTeamChanged {
19883    #[prost(int32, optional, tag = "1")]
19884    pub teamnumber: ::core::option::Option<i32>,
19885}
19886#[derive(serde::Serialize, serde::Deserialize)]
19887#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19888pub struct CCitadelUserMsgChatWheel {
19889    #[prost(uint32, optional, tag = "1")]
19890    pub chat_message_id: ::core::option::Option<u32>,
19891    #[prost(int32, optional, tag = "2", default = "-1")]
19892    pub player_slot: ::core::option::Option<i32>,
19893    #[prost(int32, optional, tag = "3", default = "-1")]
19894    pub pawn_entindex: ::core::option::Option<i32>,
19895    #[prost(uint32, optional, tag = "4")]
19896    pub account_id: ::core::option::Option<u32>,
19897    #[prost(uint32, optional, tag = "5")]
19898    pub hero_id: ::core::option::Option<u32>,
19899    #[prost(string, optional, tag = "6")]
19900    pub param_1: ::core::option::Option<::prost::alloc::string::String>,
19901    #[prost(
19902        enumeration = "CMsgLaneColor",
19903        optional,
19904        tag = "7",
19905        default = "KELaneColorInvalid"
19906    )]
19907    pub lane_color: ::core::option::Option<i32>,
19908}
19909#[derive(serde::Serialize, serde::Deserialize)]
19910#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
19911pub struct CCitadelUserMsgChatMsg {
19912    #[prost(int32, optional, tag = "1", default = "-1")]
19913    pub player_slot: ::core::option::Option<i32>,
19914    #[prost(string, optional, tag = "2")]
19915    pub text: ::core::option::Option<::prost::alloc::string::String>,
19916    #[prost(bool, optional, tag = "3")]
19917    pub all_chat: ::core::option::Option<bool>,
19918    #[prost(
19919        enumeration = "CMsgLaneColor",
19920        optional,
19921        tag = "4",
19922        default = "KELaneColorInvalid"
19923    )]
19924    pub lane_color: ::core::option::Option<i32>,
19925}
19926#[derive(serde::Serialize, serde::Deserialize)]
19927#[derive(Clone, PartialEq, ::prost::Message)]
19928pub struct CCitadelUserMsgGoldHistory {
19929    #[prost(int32, optional, tag = "1", default = "-1")]
19930    pub entindex_player: ::core::option::Option<i32>,
19931    #[prost(message, repeated, tag = "2")]
19932    pub minute_records: ::prost::alloc::vec::Vec<
19933        c_citadel_user_msg_gold_history::MinuteRecord,
19934    >,
19935}
19936/// Nested message and enum types in `CCitadelUserMsg_GoldHistory`.
19937pub mod c_citadel_user_msg_gold_history {
19938    #[derive(serde::Serialize, serde::Deserialize)]
19939    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
19940    pub struct GoldRecord {
19941        #[prost(int32, optional, tag = "1")]
19942        pub currency_source: ::core::option::Option<i32>,
19943        #[prost(int32, optional, tag = "2")]
19944        pub gold: ::core::option::Option<i32>,
19945        #[prost(int32, optional, tag = "3")]
19946        pub events: ::core::option::Option<i32>,
19947    }
19948    #[derive(serde::Serialize, serde::Deserialize)]
19949    #[derive(Clone, PartialEq, ::prost::Message)]
19950    pub struct MinuteRecord {
19951        #[prost(int32, optional, tag = "1")]
19952        pub match_minute: ::core::option::Option<i32>,
19953        #[prost(message, repeated, tag = "2")]
19954        pub gold_records: ::prost::alloc::vec::Vec<GoldRecord>,
19955    }
19956}
19957#[derive(serde::Serialize, serde::Deserialize)]
19958#[derive(Clone, Copy, PartialEq, ::prost::Message)]
19959pub struct CCitadelUserMsgCameraController {
19960    #[prost(
19961        enumeration = "CameraAction",
19962        optional,
19963        tag = "1",
19964        default = "KEActionAddOp"
19965    )]
19966    pub action: ::core::option::Option<i32>,
19967    #[prost(
19968        enumeration = "CameraOperation",
19969        optional,
19970        tag = "2",
19971        default = "KECameraOpMaintain"
19972    )]
19973    pub operation: ::core::option::Option<i32>,
19974    #[prost(
19975        enumeration = "CameraParam",
19976        optional,
19977        tag = "3",
19978        default = "KEParamClearAllOps"
19979    )]
19980    pub param: ::core::option::Option<i32>,
19981    #[prost(
19982        enumeration = "CameraParamMode",
19983        optional,
19984        tag = "12",
19985        default = "KEParamModeAllowInOneContext"
19986    )]
19987    pub param_mode: ::core::option::Option<i32>,
19988    #[prost(float, optional, tag = "4")]
19989    pub delay: ::core::option::Option<f32>,
19990    #[prost(bool, optional, tag = "11")]
19991    pub relative_values: ::core::option::Option<bool>,
19992    #[prost(uint32, optional, tag = "5")]
19993    pub context_symbol_id: ::core::option::Option<u32>,
19994    #[prost(uint32, optional, tag = "13", default = "1")]
19995    pub priority: ::core::option::Option<u32>,
19996    #[prost(message, optional, tag = "6")]
19997    pub maintain: ::core::option::Option<c_citadel_user_msg_camera_controller::Maintain>,
19998    #[prost(message, optional, tag = "7")]
19999    pub approach: ::core::option::Option<c_citadel_user_msg_camera_controller::Approach>,
20000    #[prost(message, optional, tag = "8")]
20001    pub spring: ::core::option::Option<c_citadel_user_msg_camera_controller::Spring>,
20002    #[prost(message, optional, tag = "9")]
20003    pub lerp: ::core::option::Option<c_citadel_user_msg_camera_controller::Lerp>,
20004    #[prost(message, optional, tag = "10")]
20005    pub lag: ::core::option::Option<c_citadel_user_msg_camera_controller::Lag>,
20006}
20007/// Nested message and enum types in `CCitadelUserMsg_CameraController`.
20008pub mod c_citadel_user_msg_camera_controller {
20009    #[derive(serde::Serialize, serde::Deserialize)]
20010    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20011    pub struct Maintain {
20012        #[prost(float, optional, tag = "1", default = "0")]
20013        pub duration: ::core::option::Option<f32>,
20014    }
20015    #[derive(serde::Serialize, serde::Deserialize)]
20016    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20017    pub struct Approach {
20018        #[prost(float, optional, tag = "1", default = "600")]
20019        pub speed: ::core::option::Option<f32>,
20020        #[prost(float, optional, tag = "2", default = "600")]
20021        pub default_speed: ::core::option::Option<f32>,
20022        #[prost(float, optional, tag = "3", default = "1000")]
20023        pub acceleration: ::core::option::Option<f32>,
20024        #[prost(float, optional, tag = "4", default = "0")]
20025        pub min_duration: ::core::option::Option<f32>,
20026        #[prost(float, optional, tag = "5")]
20027        pub approach_float: ::core::option::Option<f32>,
20028        #[prost(message, optional, tag = "6")]
20029        pub approach_vector: ::core::option::Option<super::CMsgVector>,
20030        #[prost(bool, optional, tag = "7")]
20031        pub chase_default: ::core::option::Option<bool>,
20032    }
20033    #[derive(serde::Serialize, serde::Deserialize)]
20034    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20035    pub struct Spring {
20036        #[prost(float, optional, tag = "1", default = "10")]
20037        pub spring_strength: ::core::option::Option<f32>,
20038        #[prost(float, optional, tag = "4", default = "0")]
20039        pub min_speed: ::core::option::Option<f32>,
20040        #[prost(float, optional, tag = "5", default = "0")]
20041        pub max_duration: ::core::option::Option<f32>,
20042        #[prost(float, optional, tag = "6")]
20043        pub target_float: ::core::option::Option<f32>,
20044        #[prost(message, optional, tag = "7")]
20045        pub target_vector: ::core::option::Option<super::CMsgVector>,
20046    }
20047    #[derive(serde::Serialize, serde::Deserialize)]
20048    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20049    pub struct Lerp {
20050        #[prost(float, optional, tag = "1")]
20051        pub start_float: ::core::option::Option<f32>,
20052        #[prost(message, optional, tag = "2")]
20053        pub start_vector: ::core::option::Option<super::CMsgVector>,
20054        #[prost(float, optional, tag = "3")]
20055        pub end_float: ::core::option::Option<f32>,
20056        #[prost(message, optional, tag = "4")]
20057        pub end_vector: ::core::option::Option<super::CMsgVector>,
20058        #[prost(float, optional, tag = "5")]
20059        pub bias: ::core::option::Option<f32>,
20060        #[prost(float, optional, tag = "6")]
20061        pub gain: ::core::option::Option<f32>,
20062        #[prost(float, optional, tag = "7", default = "1")]
20063        pub duration: ::core::option::Option<f32>,
20064    }
20065    #[derive(serde::Serialize, serde::Deserialize)]
20066    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
20067    pub struct Lag {
20068        #[prost(float, optional, tag = "1")]
20069        pub min_duration: ::core::option::Option<f32>,
20070        #[prost(float, optional, tag = "2")]
20071        pub lag_time: ::core::option::Option<f32>,
20072        #[prost(float, optional, tag = "3")]
20073        pub max_speed: ::core::option::Option<f32>,
20074        #[prost(float, optional, tag = "4")]
20075        pub spring_strength: ::core::option::Option<f32>,
20076        #[prost(bool, optional, tag = "5", default = "true")]
20077        pub increase_spring_strength_to_keep_target_on_screen: ::core::option::Option<
20078            bool,
20079        >,
20080    }
20081}
20082#[derive(serde::Serialize, serde::Deserialize)]
20083#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20084pub struct CCitadelUserMsgPostMatchDetails {
20085    #[prost(bytes = "vec", optional, tag = "1")]
20086    pub match_details: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
20087}
20088#[derive(serde::Serialize, serde::Deserialize)]
20089#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20090pub struct CCitadelUserMsgChatEvent {
20091    #[prost(
20092        enumeration = "ECitadelChatMessage",
20093        optional,
20094        tag = "1",
20095        default = "CitadelChatMessageUnpauseCountdown"
20096    )]
20097    pub r#type: ::core::option::Option<i32>,
20098    #[prost(uint32, repeated, packed = "false", tag = "2")]
20099    pub values: ::prost::alloc::vec::Vec<u32>,
20100    #[prost(int32, repeated, packed = "false", tag = "3")]
20101    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20102}
20103#[derive(serde::Serialize, serde::Deserialize)]
20104#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20105pub struct CCitadelUserMsgHeroKilled {
20106    #[prost(int32, optional, tag = "1", default = "-1")]
20107    pub entindex_victim: ::core::option::Option<i32>,
20108    #[prost(int32, optional, tag = "2", default = "-1")]
20109    pub entindex_inflictor: ::core::option::Option<i32>,
20110    #[prost(int32, optional, tag = "3", default = "-1")]
20111    pub entindex_attacker: ::core::option::Option<i32>,
20112    #[prost(int32, repeated, packed = "false", tag = "4")]
20113    pub entindex_assisters: ::prost::alloc::vec::Vec<i32>,
20114    #[prost(int32, optional, tag = "5", default = "-1")]
20115    pub entindex_scorer: ::core::option::Option<i32>,
20116    #[prost(int32, optional, tag = "6")]
20117    pub respawn_reason: ::core::option::Option<i32>,
20118    #[prost(int32, optional, tag = "7")]
20119    pub victim_team_number: ::core::option::Option<i32>,
20120}
20121#[derive(serde::Serialize, serde::Deserialize)]
20122#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20123pub struct CCitadelEntityMsgBreakablePropSpawnDebris {
20124    #[prost(message, optional, tag = "1")]
20125    pub entity_msg: ::core::option::Option<CEntityMsg>,
20126    #[prost(message, optional, tag = "2")]
20127    pub damage_pos: ::core::option::Option<CMsgVector>,
20128    #[prost(float, optional, tag = "3")]
20129    pub damage: ::core::option::Option<f32>,
20130    #[prost(message, optional, tag = "4")]
20131    pub damage_force: ::core::option::Option<CMsgVector>,
20132}
20133#[derive(serde::Serialize, serde::Deserialize)]
20134#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20135pub struct CCitadelUserMsgReturnIdol {
20136    #[prost(int32, optional, tag = "1")]
20137    pub location_index: ::core::option::Option<i32>,
20138    #[prost(message, optional, tag = "2")]
20139    pub return_location: ::core::option::Option<CMsgVector>,
20140    #[prost(bool, optional, tag = "3")]
20141    pub location_enabled: ::core::option::Option<bool>,
20142}
20143#[derive(serde::Serialize, serde::Deserialize)]
20144#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20145pub struct CCitadelUserMsgSetClientCameraAngles {
20146    #[prost(int32, optional, tag = "1", default = "-1")]
20147    pub player_slot: ::core::option::Option<i32>,
20148    #[prost(message, optional, tag = "2")]
20149    pub camera_angles: ::core::option::Option<CMsgQAngle>,
20150}
20151#[derive(serde::Serialize, serde::Deserialize)]
20152#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20153pub struct CCitadelUserMessageBulletHit {
20154    #[prost(int32, optional, tag = "1")]
20155    pub shotid: ::core::option::Option<i32>,
20156    #[prost(int32, optional, tag = "2")]
20157    pub pellet: ::core::option::Option<i32>,
20158    #[prost(int32, optional, tag = "3", default = "-1")]
20159    pub hit_entindex: ::core::option::Option<i32>,
20160    #[prost(int32, optional, tag = "4", default = "-1")]
20161    pub weapon_entindex: ::core::option::Option<i32>,
20162    #[prost(bool, optional, tag = "5")]
20163    pub is_predicted: ::core::option::Option<bool>,
20164}
20165#[derive(serde::Serialize, serde::Deserialize)]
20166#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20167pub struct CCitadelUserMessageObjectiveMask {
20168    #[prost(uint64, optional, tag = "2")]
20169    pub objective_mask_team0: ::core::option::Option<u64>,
20170    #[prost(uint64, optional, tag = "3")]
20171    pub objective_mask_team1: ::core::option::Option<u64>,
20172}
20173#[derive(serde::Serialize, serde::Deserialize)]
20174#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20175pub struct CCitadelUserMessageModifierApplied {
20176    #[prost(int32, optional, tag = "1", default = "-1")]
20177    pub entindex_caster: ::core::option::Option<i32>,
20178    #[prost(int32, optional, tag = "2", default = "-1")]
20179    pub entindex_parent: ::core::option::Option<i32>,
20180    #[prost(int32, optional, tag = "3")]
20181    pub serial_number: ::core::option::Option<i32>,
20182}
20183#[derive(serde::Serialize, serde::Deserialize)]
20184#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20185pub struct CCitadelUserMessageAuraModifierApplied {
20186    #[prost(int32, optional, tag = "1", default = "-1")]
20187    pub entindex_caster: ::core::option::Option<i32>,
20188    #[prost(int32, optional, tag = "2", default = "-1")]
20189    pub entindex_target: ::core::option::Option<i32>,
20190    #[prost(uint32, optional, tag = "3")]
20191    pub modifier_type_id: ::core::option::Option<u32>,
20192    #[prost(int32, optional, tag = "4")]
20193    pub modifier_serial_number: ::core::option::Option<i32>,
20194    #[prost(float, optional, tag = "5")]
20195    pub aura_start_time: ::core::option::Option<f32>,
20196    #[prost(float, optional, tag = "6")]
20197    pub aura_end_time: ::core::option::Option<f32>,
20198}
20199#[derive(serde::Serialize, serde::Deserialize)]
20200#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20201pub struct CCitadelUserMsgObstructedShotFired {}
20202#[derive(serde::Serialize, serde::Deserialize)]
20203#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20204pub struct CCitadelUserMsgPostProcessingAnim {
20205    #[prost(int32, optional, tag = "1", default = "-1")]
20206    pub entindex_owner: ::core::option::Option<i32>,
20207    #[prost(bool, optional, tag = "2")]
20208    pub clear_all_states: ::core::option::Option<bool>,
20209    #[prost(
20210        enumeration = "PostProcessingGameStates",
20211        optional,
20212        tag = "3",
20213        default = "PostProcStateKilled"
20214    )]
20215    pub state: ::core::option::Option<i32>,
20216    #[prost(float, optional, tag = "4")]
20217    pub delay: ::core::option::Option<f32>,
20218    #[prost(float, optional, tag = "5")]
20219    pub fade_in_time: ::core::option::Option<f32>,
20220    #[prost(float, optional, tag = "6")]
20221    pub hold_time: ::core::option::Option<f32>,
20222    #[prost(float, optional, tag = "7")]
20223    pub fade_out_time: ::core::option::Option<f32>,
20224    #[prost(float, optional, tag = "8")]
20225    pub scale: ::core::option::Option<f32>,
20226}
20227#[derive(serde::Serialize, serde::Deserialize)]
20228#[derive(Clone, PartialEq, ::prost::Message)]
20229pub struct CCitadelUserMsgDeathReplayData {
20230    #[prost(int32, optional, tag = "1", default = "-1")]
20231    pub killer_scorer: ::core::option::Option<i32>,
20232    #[prost(int32, optional, tag = "2", default = "-1")]
20233    pub killer_inflictor: ::core::option::Option<i32>,
20234    #[prost(message, optional, tag = "3")]
20235    pub damage_summary: ::core::option::Option<CCitadelUserMsgRecentDamageSummary>,
20236}
20237#[derive(serde::Serialize, serde::Deserialize)]
20238#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20239pub struct CCitadelUserMsgForceShopClosed {}
20240#[derive(serde::Serialize, serde::Deserialize)]
20241#[derive(Clone, PartialEq, ::prost::Message)]
20242pub struct CCitadelUserMsgPlayerLifetimeStatInfo {
20243    #[prost(message, repeated, tag = "1")]
20244    pub stats: ::prost::alloc::vec::Vec<
20245        c_citadel_user_msg_player_lifetime_stat_info::Stat,
20246    >,
20247    #[prost(uint64, optional, tag = "2")]
20248    pub match_id: ::core::option::Option<u64>,
20249    #[prost(bool, optional, tag = "3")]
20250    pub end_of_match: ::core::option::Option<bool>,
20251    #[prost(bool, optional, tag = "4")]
20252    pub is_official_match: ::core::option::Option<bool>,
20253}
20254/// Nested message and enum types in `CCitadelUserMsg_PlayerLifetimeStatInfo`.
20255pub mod c_citadel_user_msg_player_lifetime_stat_info {
20256    #[derive(serde::Serialize, serde::Deserialize)]
20257    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20258    pub struct Stat {
20259        #[prost(string, optional, tag = "1")]
20260        pub stat_name: ::core::option::Option<::prost::alloc::string::String>,
20261        #[prost(uint32, optional, tag = "2")]
20262        pub match_total: ::core::option::Option<u32>,
20263        #[prost(uint32, optional, tag = "3")]
20264        pub lifetime_value: ::core::option::Option<u32>,
20265        #[prost(uint32, optional, tag = "4")]
20266        pub priority: ::core::option::Option<u32>,
20267        #[prost(uint32, optional, tag = "5")]
20268        pub prev_lifetime_max: ::core::option::Option<u32>,
20269        #[prost(uint32, optional, tag = "6")]
20270        pub stat_type: ::core::option::Option<u32>,
20271        #[prost(uint32, optional, tag = "7")]
20272        pub stat_type_id: ::core::option::Option<u32>,
20273    }
20274}
20275#[derive(serde::Serialize, serde::Deserialize)]
20276#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20277pub struct CCitadelUserMsgStaminaConsumed {
20278    #[prost(int32, optional, tag = "1", default = "-1")]
20279    pub entindex_target: ::core::option::Option<i32>,
20280    #[prost(float, optional, tag = "3")]
20281    pub stamina_before: ::core::option::Option<f32>,
20282    #[prost(float, optional, tag = "4")]
20283    pub stamina_after: ::core::option::Option<f32>,
20284    #[prost(bool, optional, tag = "5")]
20285    pub drained: ::core::option::Option<bool>,
20286    #[prost(float, optional, tag = "6")]
20287    pub stamina_max: ::core::option::Option<f32>,
20288    #[prost(float, optional, tag = "7")]
20289    pub gametime: ::core::option::Option<f32>,
20290}
20291#[derive(serde::Serialize, serde::Deserialize)]
20292#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20293pub struct CCitadelUserMessageAbilityNotify {
20294    #[prost(int32, optional, tag = "1", default = "-1")]
20295    pub entindex_victim: ::core::option::Option<i32>,
20296    #[prost(int32, optional, tag = "2", default = "-1")]
20297    pub entindex_attacker: ::core::option::Option<i32>,
20298    #[prost(uint32, optional, tag = "3")]
20299    pub ability_id: ::core::option::Option<u32>,
20300    #[prost(uint32, optional, tag = "4")]
20301    pub status_impact: ::core::option::Option<u32>,
20302}
20303#[derive(serde::Serialize, serde::Deserialize)]
20304#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20305pub struct CCitadelUserMessageCurrencyChanged {
20306    #[prost(int32, optional, tag = "1", default = "-1")]
20307    pub userid: ::core::option::Option<i32>,
20308    #[prost(int32, optional, tag = "2")]
20309    pub currency_type: ::core::option::Option<i32>,
20310    #[prost(int32, optional, tag = "3")]
20311    pub currency_source: ::core::option::Option<i32>,
20312    #[prost(int32, optional, tag = "4")]
20313    pub delta: ::core::option::Option<i32>,
20314    #[prost(bool, optional, tag = "5")]
20315    pub notification: ::core::option::Option<bool>,
20316    #[prost(int32, optional, tag = "6", default = "-1")]
20317    pub entindex_victim: ::core::option::Option<i32>,
20318    #[prost(message, optional, tag = "7")]
20319    pub victim_pos: ::core::option::Option<CMsgVector>,
20320    #[prost(int32, optional, tag = "8")]
20321    pub playsound: ::core::option::Option<i32>,
20322    #[prost(uint32, optional, tag = "9")]
20323    pub ability_id: ::core::option::Option<u32>,
20324    #[prost(uint32, optional, tag = "10")]
20325    pub new_value: ::core::option::Option<u32>,
20326}
20327#[derive(serde::Serialize, serde::Deserialize)]
20328#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20329pub struct CCitadelUserMessageGameOver {
20330    #[prost(int32, optional, tag = "1")]
20331    pub winning_team: ::core::option::Option<i32>,
20332    #[prost(bool, optional, tag = "2")]
20333    pub just_a_test: ::core::option::Option<bool>,
20334}
20335#[derive(serde::Serialize, serde::Deserialize)]
20336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20337pub struct CCitadelUserMsgGetDamageStatsResponse {
20338    #[prost(uint32, optional, tag = "1")]
20339    pub player_slot: ::core::option::Option<u32>,
20340    #[prost(string, optional, tag = "2")]
20341    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
20342    #[prost(message, optional, tag = "3")]
20343    pub damage: ::core::option::Option<
20344        c_citadel_user_msg_get_damage_stats_response::StatType,
20345    >,
20346    #[prost(message, optional, tag = "4")]
20347    pub healing: ::core::option::Option<
20348        c_citadel_user_msg_get_damage_stats_response::StatType,
20349    >,
20350}
20351/// Nested message and enum types in `CCitadelUserMsg_GetDamageStatsResponse`.
20352pub mod c_citadel_user_msg_get_damage_stats_response {
20353    #[derive(serde::Serialize, serde::Deserialize)]
20354    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20355    pub struct StatType {
20356        #[prost(uint32, repeated, tag = "1")]
20357        pub target_player_slot: ::prost::alloc::vec::Vec<u32>,
20358        #[prost(uint32, repeated, tag = "2")]
20359        pub value: ::prost::alloc::vec::Vec<u32>,
20360    }
20361}
20362#[derive(serde::Serialize, serde::Deserialize)]
20363#[derive(Clone, PartialEq, ::prost::Message)]
20364pub struct CCitadelUserMsgParticipantStartSoundEvent {
20365    #[prost(message, optional, tag = "1")]
20366    pub event: ::core::option::Option<CMsgSosStartSoundEvent>,
20367    #[prost(int32, repeated, packed = "false", tag = "2")]
20368    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20369}
20370#[derive(serde::Serialize, serde::Deserialize)]
20371#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20372pub struct CCitadelUserMsgParticipantStopSoundEvent {
20373    #[prost(message, optional, tag = "1")]
20374    pub event: ::core::option::Option<CMsgSosStopSoundEvent>,
20375    #[prost(int32, repeated, packed = "false", tag = "2")]
20376    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20377}
20378#[derive(serde::Serialize, serde::Deserialize)]
20379#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20380pub struct CCitadelUserMsgParticipantStopSoundEventHash {
20381    #[prost(message, optional, tag = "1")]
20382    pub event: ::core::option::Option<CMsgSosStopSoundEventHash>,
20383    #[prost(int32, repeated, packed = "false", tag = "2")]
20384    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20385}
20386#[derive(serde::Serialize, serde::Deserialize)]
20387#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20388pub struct CCitadelUserMsgParticipantSetSoundEventParams {
20389    #[prost(message, optional, tag = "1")]
20390    pub event: ::core::option::Option<CMsgSosSetSoundEventParams>,
20391    #[prost(int32, repeated, packed = "false", tag = "2")]
20392    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20393}
20394#[derive(serde::Serialize, serde::Deserialize)]
20395#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20396pub struct CCitadelUserMsgParticipantSetLibraryStackFields {
20397    #[prost(message, optional, tag = "1")]
20398    pub event: ::core::option::Option<CMsgSosSetLibraryStackFields>,
20399    #[prost(int32, repeated, packed = "false", tag = "2")]
20400    pub player_slots: ::prost::alloc::vec::Vec<i32>,
20401}
20402#[derive(serde::Serialize, serde::Deserialize)]
20403#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20404pub struct CCitadelUserMsgBossKilled {
20405    #[prost(int32, optional, tag = "1")]
20406    pub objective_team: ::core::option::Option<i32>,
20407    #[prost(int32, optional, tag = "2")]
20408    pub objective_mask_change: ::core::option::Option<i32>,
20409    #[prost(uint32, optional, tag = "3", default = "16777215")]
20410    pub entity_killed: ::core::option::Option<u32>,
20411    #[prost(int32, optional, tag = "4")]
20412    pub entity_killed_class: ::core::option::Option<i32>,
20413    #[prost(uint32, optional, tag = "5", default = "16777215")]
20414    pub entity_killer: ::core::option::Option<u32>,
20415    #[prost(float, optional, tag = "6")]
20416    pub gametime: ::core::option::Option<f32>,
20417    #[prost(int32, optional, tag = "7")]
20418    pub bosses_remaining: ::core::option::Option<i32>,
20419    #[prost(message, optional, tag = "8")]
20420    pub entity_position: ::core::option::Option<CMsgVector>,
20421}
20422#[derive(serde::Serialize, serde::Deserialize)]
20423#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20424pub struct CCitadelUserMsgBossDamaged {
20425    #[prost(int32, optional, tag = "1")]
20426    pub objective_team: ::core::option::Option<i32>,
20427    #[prost(int32, optional, tag = "2")]
20428    pub objective_id: ::core::option::Option<i32>,
20429    #[prost(uint32, optional, tag = "3", default = "16777215")]
20430    pub entity_damaged: ::core::option::Option<u32>,
20431}
20432#[derive(serde::Serialize, serde::Deserialize)]
20433#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20434pub struct CCitadelUserMsgMidBossSpawned {}
20435#[derive(serde::Serialize, serde::Deserialize)]
20436#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20437pub struct CCitadelUserMsgRejuvStatus {
20438    #[prost(int32, optional, tag = "1")]
20439    pub killing_team: ::core::option::Option<i32>,
20440    #[prost(uint32, optional, tag = "2", default = "16777215")]
20441    pub player_pawn: ::core::option::Option<u32>,
20442    #[prost(int32, optional, tag = "3")]
20443    pub user_team: ::core::option::Option<i32>,
20444    #[prost(int32, optional, tag = "4")]
20445    pub event_type: ::core::option::Option<i32>,
20446}
20447#[derive(serde::Serialize, serde::Deserialize)]
20448#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20449pub struct CCitadelUserMsgKillStreak {
20450    #[prost(uint32, optional, tag = "1", default = "16777215")]
20451    pub player_pawn: ::core::option::Option<u32>,
20452    #[prost(int32, optional, tag = "2")]
20453    pub num_kills: ::core::option::Option<i32>,
20454    #[prost(bool, optional, tag = "3")]
20455    pub is_first_blood: ::core::option::Option<bool>,
20456    #[prost(bool, optional, tag = "4")]
20457    pub streak_ended: ::core::option::Option<bool>,
20458    #[prost(float, optional, tag = "5", default = "5")]
20459    pub duration: ::core::option::Option<f32>,
20460}
20461#[derive(serde::Serialize, serde::Deserialize)]
20462#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20463pub struct CCitadelUserMsgTeamMsg {
20464    #[prost(int32, optional, tag = "1")]
20465    pub event_type: ::core::option::Option<i32>,
20466    #[prost(int32, optional, tag = "2")]
20467    pub team_number: ::core::option::Option<i32>,
20468    #[prost(int32, optional, tag = "3")]
20469    pub lane_color: ::core::option::Option<i32>,
20470    #[prost(uint32, optional, tag = "4", default = "16777215")]
20471    pub player_controller: ::core::option::Option<u32>,
20472}
20473#[derive(serde::Serialize, serde::Deserialize)]
20474#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20475pub struct CCitadelUserMsgPlayerRespawned {
20476    #[prost(uint32, optional, tag = "1", default = "16777215")]
20477    pub player_pawn: ::core::option::Option<u32>,
20478    #[prost(float, optional, tag = "2")]
20479    pub facing_yaw: ::core::option::Option<f32>,
20480}
20481#[derive(serde::Serialize, serde::Deserialize)]
20482#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20483pub struct CCitadelUserMsgCallCheaterVote {
20484    #[prost(int32, optional, tag = "1", default = "-1")]
20485    pub player_slot: ::core::option::Option<i32>,
20486}
20487#[derive(serde::Serialize, serde::Deserialize)]
20488#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20489pub struct CCitadelUserMessageMeleeHit {
20490    #[prost(int32, optional, tag = "1", default = "-1")]
20491    pub hit_entindex: ::core::option::Option<i32>,
20492    #[prost(bool, optional, tag = "2")]
20493    pub heavy: ::core::option::Option<bool>,
20494}
20495#[derive(serde::Serialize, serde::Deserialize)]
20496#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20497pub struct CCitadelUserMsgFlexSlotUnlocked {
20498    #[prost(int32, optional, tag = "1")]
20499    pub team_number: ::core::option::Option<i32>,
20500    #[prost(int32, optional, tag = "2")]
20501    pub flexslot_unlocked: ::core::option::Option<i32>,
20502}
20503#[derive(serde::Serialize, serde::Deserialize)]
20504#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20505pub struct CCitadelUserMessageItemPurchaseNotification {
20506    #[prost(int32, optional, tag = "1", default = "-1")]
20507    pub userid: ::core::option::Option<i32>,
20508    #[prost(uint32, optional, tag = "2")]
20509    pub ability_id: ::core::option::Option<u32>,
20510    #[prost(bool, optional, tag = "3")]
20511    pub sell: ::core::option::Option<bool>,
20512    #[prost(bool, optional, tag = "4")]
20513    pub quickbuy: ::core::option::Option<bool>,
20514}
20515#[derive(serde::Serialize, serde::Deserialize)]
20516#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20517pub struct CCitadelUserMsgSeasonalKill {
20518    #[prost(uint32, optional, tag = "1", default = "16777215")]
20519    pub killer: ::core::option::Option<u32>,
20520    #[prost(uint32, optional, tag = "2", default = "16777215")]
20521    pub victim: ::core::option::Option<u32>,
20522}
20523#[derive(serde::Serialize, serde::Deserialize)]
20524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20525pub struct CCitadelUserMsgMusicQueue {
20526    #[prost(int32, optional, tag = "1")]
20527    pub music_state: ::core::option::Option<i32>,
20528    #[prost(bool, optional, tag = "2")]
20529    pub r#override: ::core::option::Option<bool>,
20530}
20531#[derive(serde::Serialize, serde::Deserialize)]
20532#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20533pub struct CCitadelUserMsgAg2ParamTrigger {
20534    #[prost(string, optional, tag = "1")]
20535    pub param_id: ::core::option::Option<::prost::alloc::string::String>,
20536    #[prost(string, optional, tag = "2")]
20537    pub param_value: ::core::option::Option<::prost::alloc::string::String>,
20538}
20539#[derive(serde::Serialize, serde::Deserialize)]
20540#[derive(Clone, Copy, PartialEq, ::prost::Message)]
20541pub struct CCitadelUserMsgEntityPortalled {
20542    #[prost(uint32, optional, tag = "1", default = "16777215")]
20543    pub entity_portalled: ::core::option::Option<u32>,
20544    #[prost(message, optional, tag = "2")]
20545    pub portal_transform: ::core::option::Option<CMsgTransform>,
20546}
20547#[derive(serde::Serialize, serde::Deserialize)]
20548#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
20549pub struct CCitadelUserMsgStreetBrawlScoring {
20550    #[prost(int32, optional, tag = "1")]
20551    pub scoring_team: ::core::option::Option<i32>,
20552    #[prost(bool, optional, tag = "2")]
20553    pub just_a_test: ::core::option::Option<bool>,
20554    #[prost(int32, optional, tag = "3")]
20555    pub sapphire_score: ::core::option::Option<i32>,
20556    #[prost(int32, optional, tag = "4")]
20557    pub amber_score: ::core::option::Option<i32>,
20558}
20559#[derive(serde::Serialize, serde::Deserialize)]
20560#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20561pub struct CCitadelUserMsgHudGameAnnouncement {
20562    #[prost(string, optional, tag = "1")]
20563    pub title_locstring: ::core::option::Option<::prost::alloc::string::String>,
20564    #[prost(string, optional, tag = "2")]
20565    pub description_locstring: ::core::option::Option<::prost::alloc::string::String>,
20566    #[prost(string, repeated, tag = "3")]
20567    pub classname: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20568    #[prost(string, repeated, tag = "4")]
20569    pub dialog_variable_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
20570    #[prost(string, repeated, tag = "5")]
20571    pub dialog_variable_locstring: ::prost::alloc::vec::Vec<
20572        ::prost::alloc::string::String,
20573    >,
20574}
20575#[derive(serde::Serialize, serde::Deserialize)]
20576#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20577pub struct CCitadelUserMessageImportantAbilityUsed {
20578    #[prost(uint32, optional, tag = "1", default = "16777215")]
20579    pub player: ::core::option::Option<u32>,
20580    #[prost(uint32, optional, tag = "2", default = "16777215")]
20581    pub caster: ::core::option::Option<u32>,
20582    #[prost(string, optional, tag = "3")]
20583    pub ability_name: ::core::option::Option<::prost::alloc::string::String>,
20584}
20585#[derive(serde::Serialize, serde::Deserialize)]
20586#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
20587pub struct CCitadelUserMsgBannedHeroes {
20588    #[prost(uint32, repeated, packed = "false", tag = "1")]
20589    pub banned_hero_ids: ::prost::alloc::vec::Vec<u32>,
20590}
20591#[derive(serde::Serialize, serde::Deserialize)]
20592#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20593#[repr(i32)]
20594pub enum CitadelUserMessageIds {
20595    KEUserMsgDamage = 300,
20596    KEUserMsgMapPing = 303,
20597    KEUserMsgTeamRewards = 304,
20598    KEUserMsgAbilityFailed = 306,
20599    KEUserMsgTriggerDamageFlash = 308,
20600    KEUserMsgAbilitiesChanged = 309,
20601    KEUserMsgRecentDamageSummary = 310,
20602    KEUserMsgSpectatorTeamChanged = 311,
20603    KEUserMsgChatWheel = 312,
20604    KEUserMsgGoldHistory = 313,
20605    KEUserMsgChatMsg = 314,
20606    KEUserMsgQuickResponse = 315,
20607    KEUserMsgPostMatchDetails = 316,
20608    KEUserMsgChatEvent = 317,
20609    KEUserMsgAbilityInterrupted = 318,
20610    KEUserMsgHeroKilled = 319,
20611    KEUserMsgReturnIdol = 320,
20612    KEUserMsgSetClientCameraAngles = 321,
20613    KEUserMsgMapLine = 322,
20614    KEUserMsgBulletHit = 323,
20615    KEUserMsgObjectiveMask = 324,
20616    KEUserMsgModifierApplied = 325,
20617    KEUserMsgCameraController = 326,
20618    KEUserMsgAuraModifierApplied = 327,
20619    KEUserMsgObstructedShotFired = 329,
20620    KEUserMsgAbilityLateFailure = 330,
20621    KEUserMsgAbilityPing = 331,
20622    KEUserMsgPostProcessingAnim = 332,
20623    KEUserMsgDeathReplayData = 333,
20624    KEUserMsgPlayerLifetimeStatInfo = 334,
20625    KEUserMsgForceShopClosed = 336,
20626    KEUserMsgStaminaConsumed = 337,
20627    KEUserMsgAbilityNotify = 338,
20628    KEUserMsgGetDamageStatsResponse = 339,
20629    KEUserMsgParticipantStartSoundEvent = 340,
20630    KEUserMsgParticipantStopSoundEvent = 341,
20631    KEUserMsgParticipantStopSoundEventHash = 342,
20632    KEUserMsgParticipantSetSoundEventParams = 343,
20633    KEUserMsgParticipantSetLibraryStackFields = 344,
20634    KEUserMsgCurrencyChanged = 345,
20635    KEUserMsgGameOver = 346,
20636    KEUserMsgBossKilled = 347,
20637    KEUserMsgBossDamaged = 348,
20638    KEUserMsgMidBossSpawned = 349,
20639    KEUserMsgRejuvStatus = 350,
20640    KEUserMsgKillStreak = 351,
20641    KEUserMsgTeamMsg = 352,
20642    KEUserMsgPlayerRespawned = 353,
20643    KEUserMsgCallCheaterVote = 354,
20644    KEUserMsgMeleeHit = 355,
20645    KEUserMsgFlexSlotUnlocked = 356,
20646    KEUserMsgSeasonalKill = 357,
20647    KEUserMsgMusicQueue = 358,
20648    KEUserMsgAg2ParamTrigger = 359,
20649    KEUserMsgItemPurchaseNotification = 360,
20650    KEUserMsgEntityPortalled = 361,
20651    KEUserMsgStreetBrawlScoring = 362,
20652    KEUserMsgHudGameAnnouncement = 363,
20653    KEUserMsgItemDraftReaction = 364,
20654    KEUserMsgImportantAbilityUsed = 365,
20655    KEUserMsgBannedHeroes = 366,
20656}
20657impl CitadelUserMessageIds {
20658    /// String value of the enum field names used in the ProtoBuf definition.
20659    ///
20660    /// The values are not transformed in any way and thus are considered stable
20661    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20662    pub fn as_str_name(&self) -> &'static str {
20663        match self {
20664            Self::KEUserMsgDamage => "k_EUserMsg_Damage",
20665            Self::KEUserMsgMapPing => "k_EUserMsg_MapPing",
20666            Self::KEUserMsgTeamRewards => "k_EUserMsg_TeamRewards",
20667            Self::KEUserMsgAbilityFailed => "k_EUserMsg_AbilityFailed",
20668            Self::KEUserMsgTriggerDamageFlash => "k_EUserMsg_TriggerDamageFlash",
20669            Self::KEUserMsgAbilitiesChanged => "k_EUserMsg_AbilitiesChanged",
20670            Self::KEUserMsgRecentDamageSummary => "k_EUserMsg_RecentDamageSummary",
20671            Self::KEUserMsgSpectatorTeamChanged => "k_EUserMsg_SpectatorTeamChanged",
20672            Self::KEUserMsgChatWheel => "k_EUserMsg_ChatWheel",
20673            Self::KEUserMsgGoldHistory => "k_EUserMsg_GoldHistory",
20674            Self::KEUserMsgChatMsg => "k_EUserMsg_ChatMsg",
20675            Self::KEUserMsgQuickResponse => "k_EUserMsg_QuickResponse",
20676            Self::KEUserMsgPostMatchDetails => "k_EUserMsg_PostMatchDetails",
20677            Self::KEUserMsgChatEvent => "k_EUserMsg_ChatEvent",
20678            Self::KEUserMsgAbilityInterrupted => "k_EUserMsg_AbilityInterrupted",
20679            Self::KEUserMsgHeroKilled => "k_EUserMsg_HeroKilled",
20680            Self::KEUserMsgReturnIdol => "k_EUserMsg_ReturnIdol",
20681            Self::KEUserMsgSetClientCameraAngles => "k_EUserMsg_SetClientCameraAngles",
20682            Self::KEUserMsgMapLine => "k_EUserMsg_MapLine",
20683            Self::KEUserMsgBulletHit => "k_EUserMsg_BulletHit",
20684            Self::KEUserMsgObjectiveMask => "k_EUserMsg_ObjectiveMask",
20685            Self::KEUserMsgModifierApplied => "k_EUserMsg_ModifierApplied",
20686            Self::KEUserMsgCameraController => "k_EUserMsg_CameraController",
20687            Self::KEUserMsgAuraModifierApplied => "k_EUserMsg_AuraModifierApplied",
20688            Self::KEUserMsgObstructedShotFired => "k_EUserMsg_ObstructedShotFired",
20689            Self::KEUserMsgAbilityLateFailure => "k_EUserMsg_AbilityLateFailure",
20690            Self::KEUserMsgAbilityPing => "k_EUserMsg_AbilityPing",
20691            Self::KEUserMsgPostProcessingAnim => "k_EUserMsg_PostProcessingAnim",
20692            Self::KEUserMsgDeathReplayData => "k_EUserMsg_DeathReplayData",
20693            Self::KEUserMsgPlayerLifetimeStatInfo => "k_EUserMsg_PlayerLifetimeStatInfo",
20694            Self::KEUserMsgForceShopClosed => "k_EUserMsg_ForceShopClosed",
20695            Self::KEUserMsgStaminaConsumed => "k_EUserMsg_StaminaConsumed",
20696            Self::KEUserMsgAbilityNotify => "k_EUserMsg_AbilityNotify",
20697            Self::KEUserMsgGetDamageStatsResponse => "k_EUserMsg_GetDamageStatsResponse",
20698            Self::KEUserMsgParticipantStartSoundEvent => {
20699                "k_EUserMsg_ParticipantStartSoundEvent"
20700            }
20701            Self::KEUserMsgParticipantStopSoundEvent => {
20702                "k_EUserMsg_ParticipantStopSoundEvent"
20703            }
20704            Self::KEUserMsgParticipantStopSoundEventHash => {
20705                "k_EUserMsg_ParticipantStopSoundEventHash"
20706            }
20707            Self::KEUserMsgParticipantSetSoundEventParams => {
20708                "k_EUserMsg_ParticipantSetSoundEventParams"
20709            }
20710            Self::KEUserMsgParticipantSetLibraryStackFields => {
20711                "k_EUserMsg_ParticipantSetLibraryStackFields"
20712            }
20713            Self::KEUserMsgCurrencyChanged => "k_EUserMsg_CurrencyChanged",
20714            Self::KEUserMsgGameOver => "k_EUserMsg_GameOver",
20715            Self::KEUserMsgBossKilled => "k_EUserMsg_BossKilled",
20716            Self::KEUserMsgBossDamaged => "k_EUserMsg_BossDamaged",
20717            Self::KEUserMsgMidBossSpawned => "k_EUserMsg_MidBossSpawned",
20718            Self::KEUserMsgRejuvStatus => "k_EUserMsg_RejuvStatus",
20719            Self::KEUserMsgKillStreak => "k_EUserMsg_KillStreak",
20720            Self::KEUserMsgTeamMsg => "k_EUserMsg_TeamMsg",
20721            Self::KEUserMsgPlayerRespawned => "k_EUserMsg_PlayerRespawned",
20722            Self::KEUserMsgCallCheaterVote => "k_EUserMsg_CallCheaterVote",
20723            Self::KEUserMsgMeleeHit => "k_EUserMsg_MeleeHit",
20724            Self::KEUserMsgFlexSlotUnlocked => "k_EUserMsg_FlexSlotUnlocked",
20725            Self::KEUserMsgSeasonalKill => "k_EUserMsg_SeasonalKill",
20726            Self::KEUserMsgMusicQueue => "k_EUserMsg_MusicQueue",
20727            Self::KEUserMsgAg2ParamTrigger => "k_EUserMsg_AG2ParamTrigger",
20728            Self::KEUserMsgItemPurchaseNotification => {
20729                "k_EUserMsg_ItemPurchaseNotification"
20730            }
20731            Self::KEUserMsgEntityPortalled => "k_EUserMsg_EntityPortalled",
20732            Self::KEUserMsgStreetBrawlScoring => "k_EUserMsg_StreetBrawlScoring",
20733            Self::KEUserMsgHudGameAnnouncement => "k_EUserMsg_HudGameAnnouncement",
20734            Self::KEUserMsgItemDraftReaction => "k_EUserMsg_ItemDraftReaction",
20735            Self::KEUserMsgImportantAbilityUsed => "k_EUserMsg_ImportantAbilityUsed",
20736            Self::KEUserMsgBannedHeroes => "k_EUserMsg_BannedHeroes",
20737        }
20738    }
20739    /// Creates an enum from field names used in the ProtoBuf definition.
20740    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20741        match value {
20742            "k_EUserMsg_Damage" => Some(Self::KEUserMsgDamage),
20743            "k_EUserMsg_MapPing" => Some(Self::KEUserMsgMapPing),
20744            "k_EUserMsg_TeamRewards" => Some(Self::KEUserMsgTeamRewards),
20745            "k_EUserMsg_AbilityFailed" => Some(Self::KEUserMsgAbilityFailed),
20746            "k_EUserMsg_TriggerDamageFlash" => Some(Self::KEUserMsgTriggerDamageFlash),
20747            "k_EUserMsg_AbilitiesChanged" => Some(Self::KEUserMsgAbilitiesChanged),
20748            "k_EUserMsg_RecentDamageSummary" => Some(Self::KEUserMsgRecentDamageSummary),
20749            "k_EUserMsg_SpectatorTeamChanged" => {
20750                Some(Self::KEUserMsgSpectatorTeamChanged)
20751            }
20752            "k_EUserMsg_ChatWheel" => Some(Self::KEUserMsgChatWheel),
20753            "k_EUserMsg_GoldHistory" => Some(Self::KEUserMsgGoldHistory),
20754            "k_EUserMsg_ChatMsg" => Some(Self::KEUserMsgChatMsg),
20755            "k_EUserMsg_QuickResponse" => Some(Self::KEUserMsgQuickResponse),
20756            "k_EUserMsg_PostMatchDetails" => Some(Self::KEUserMsgPostMatchDetails),
20757            "k_EUserMsg_ChatEvent" => Some(Self::KEUserMsgChatEvent),
20758            "k_EUserMsg_AbilityInterrupted" => Some(Self::KEUserMsgAbilityInterrupted),
20759            "k_EUserMsg_HeroKilled" => Some(Self::KEUserMsgHeroKilled),
20760            "k_EUserMsg_ReturnIdol" => Some(Self::KEUserMsgReturnIdol),
20761            "k_EUserMsg_SetClientCameraAngles" => {
20762                Some(Self::KEUserMsgSetClientCameraAngles)
20763            }
20764            "k_EUserMsg_MapLine" => Some(Self::KEUserMsgMapLine),
20765            "k_EUserMsg_BulletHit" => Some(Self::KEUserMsgBulletHit),
20766            "k_EUserMsg_ObjectiveMask" => Some(Self::KEUserMsgObjectiveMask),
20767            "k_EUserMsg_ModifierApplied" => Some(Self::KEUserMsgModifierApplied),
20768            "k_EUserMsg_CameraController" => Some(Self::KEUserMsgCameraController),
20769            "k_EUserMsg_AuraModifierApplied" => Some(Self::KEUserMsgAuraModifierApplied),
20770            "k_EUserMsg_ObstructedShotFired" => Some(Self::KEUserMsgObstructedShotFired),
20771            "k_EUserMsg_AbilityLateFailure" => Some(Self::KEUserMsgAbilityLateFailure),
20772            "k_EUserMsg_AbilityPing" => Some(Self::KEUserMsgAbilityPing),
20773            "k_EUserMsg_PostProcessingAnim" => Some(Self::KEUserMsgPostProcessingAnim),
20774            "k_EUserMsg_DeathReplayData" => Some(Self::KEUserMsgDeathReplayData),
20775            "k_EUserMsg_PlayerLifetimeStatInfo" => {
20776                Some(Self::KEUserMsgPlayerLifetimeStatInfo)
20777            }
20778            "k_EUserMsg_ForceShopClosed" => Some(Self::KEUserMsgForceShopClosed),
20779            "k_EUserMsg_StaminaConsumed" => Some(Self::KEUserMsgStaminaConsumed),
20780            "k_EUserMsg_AbilityNotify" => Some(Self::KEUserMsgAbilityNotify),
20781            "k_EUserMsg_GetDamageStatsResponse" => {
20782                Some(Self::KEUserMsgGetDamageStatsResponse)
20783            }
20784            "k_EUserMsg_ParticipantStartSoundEvent" => {
20785                Some(Self::KEUserMsgParticipantStartSoundEvent)
20786            }
20787            "k_EUserMsg_ParticipantStopSoundEvent" => {
20788                Some(Self::KEUserMsgParticipantStopSoundEvent)
20789            }
20790            "k_EUserMsg_ParticipantStopSoundEventHash" => {
20791                Some(Self::KEUserMsgParticipantStopSoundEventHash)
20792            }
20793            "k_EUserMsg_ParticipantSetSoundEventParams" => {
20794                Some(Self::KEUserMsgParticipantSetSoundEventParams)
20795            }
20796            "k_EUserMsg_ParticipantSetLibraryStackFields" => {
20797                Some(Self::KEUserMsgParticipantSetLibraryStackFields)
20798            }
20799            "k_EUserMsg_CurrencyChanged" => Some(Self::KEUserMsgCurrencyChanged),
20800            "k_EUserMsg_GameOver" => Some(Self::KEUserMsgGameOver),
20801            "k_EUserMsg_BossKilled" => Some(Self::KEUserMsgBossKilled),
20802            "k_EUserMsg_BossDamaged" => Some(Self::KEUserMsgBossDamaged),
20803            "k_EUserMsg_MidBossSpawned" => Some(Self::KEUserMsgMidBossSpawned),
20804            "k_EUserMsg_RejuvStatus" => Some(Self::KEUserMsgRejuvStatus),
20805            "k_EUserMsg_KillStreak" => Some(Self::KEUserMsgKillStreak),
20806            "k_EUserMsg_TeamMsg" => Some(Self::KEUserMsgTeamMsg),
20807            "k_EUserMsg_PlayerRespawned" => Some(Self::KEUserMsgPlayerRespawned),
20808            "k_EUserMsg_CallCheaterVote" => Some(Self::KEUserMsgCallCheaterVote),
20809            "k_EUserMsg_MeleeHit" => Some(Self::KEUserMsgMeleeHit),
20810            "k_EUserMsg_FlexSlotUnlocked" => Some(Self::KEUserMsgFlexSlotUnlocked),
20811            "k_EUserMsg_SeasonalKill" => Some(Self::KEUserMsgSeasonalKill),
20812            "k_EUserMsg_MusicQueue" => Some(Self::KEUserMsgMusicQueue),
20813            "k_EUserMsg_AG2ParamTrigger" => Some(Self::KEUserMsgAg2ParamTrigger),
20814            "k_EUserMsg_ItemPurchaseNotification" => {
20815                Some(Self::KEUserMsgItemPurchaseNotification)
20816            }
20817            "k_EUserMsg_EntityPortalled" => Some(Self::KEUserMsgEntityPortalled),
20818            "k_EUserMsg_StreetBrawlScoring" => Some(Self::KEUserMsgStreetBrawlScoring),
20819            "k_EUserMsg_HudGameAnnouncement" => Some(Self::KEUserMsgHudGameAnnouncement),
20820            "k_EUserMsg_ItemDraftReaction" => Some(Self::KEUserMsgItemDraftReaction),
20821            "k_EUserMsg_ImportantAbilityUsed" => {
20822                Some(Self::KEUserMsgImportantAbilityUsed)
20823            }
20824            "k_EUserMsg_BannedHeroes" => Some(Self::KEUserMsgBannedHeroes),
20825            _ => None,
20826        }
20827    }
20828}
20829#[derive(serde::Serialize, serde::Deserialize)]
20830#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20831#[repr(i32)]
20832pub enum CitadelEntityMessageIds {
20833    KEEntityMsgBreakablePropSpawnDebris = 500,
20834}
20835impl CitadelEntityMessageIds {
20836    /// String value of the enum field names used in the ProtoBuf definition.
20837    ///
20838    /// The values are not transformed in any way and thus are considered stable
20839    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20840    pub fn as_str_name(&self) -> &'static str {
20841        match self {
20842            Self::KEEntityMsgBreakablePropSpawnDebris => {
20843                "k_EEntityMsg_BreakablePropSpawnDebris"
20844            }
20845        }
20846    }
20847    /// Creates an enum from field names used in the ProtoBuf definition.
20848    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20849        match value {
20850            "k_EEntityMsg_BreakablePropSpawnDebris" => {
20851                Some(Self::KEEntityMsgBreakablePropSpawnDebris)
20852            }
20853            _ => None,
20854        }
20855    }
20856}
20857#[derive(serde::Serialize, serde::Deserialize)]
20858#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20859#[repr(i32)]
20860pub enum ChatMsgPingMarkerInfo {
20861    KEPingMarkerInfoShowMarkerAndSound = 0,
20862    KEPingMarkerInfoShowMarkerOnSender = 1,
20863    KEPingMarkerInfoHideMarkerAndSound = 2,
20864    KEPingMarkerInfoOnlyShowMarker = 3,
20865    KEPingMarkerInfoOnlyPlaySound = 4,
20866    KEPingMarkerInfoOnlyMiniMap = 5,
20867}
20868impl ChatMsgPingMarkerInfo {
20869    /// String value of the enum field names used in the ProtoBuf definition.
20870    ///
20871    /// The values are not transformed in any way and thus are considered stable
20872    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20873    pub fn as_str_name(&self) -> &'static str {
20874        match self {
20875            Self::KEPingMarkerInfoShowMarkerAndSound => {
20876                "k_EPingMarkerInfo_ShowMarkerAndSound"
20877            }
20878            Self::KEPingMarkerInfoShowMarkerOnSender => {
20879                "k_EPingMarkerInfo_ShowMarkerOnSender"
20880            }
20881            Self::KEPingMarkerInfoHideMarkerAndSound => {
20882                "k_EPingMarkerInfo_HideMarkerAndSound"
20883            }
20884            Self::KEPingMarkerInfoOnlyShowMarker => "k_EPingMarkerInfo_OnlyShowMarker",
20885            Self::KEPingMarkerInfoOnlyPlaySound => "k_EPingMarkerInfo_OnlyPlaySound",
20886            Self::KEPingMarkerInfoOnlyMiniMap => "k_EPingMarkerInfo_OnlyMiniMap",
20887        }
20888    }
20889    /// Creates an enum from field names used in the ProtoBuf definition.
20890    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20891        match value {
20892            "k_EPingMarkerInfo_ShowMarkerAndSound" => {
20893                Some(Self::KEPingMarkerInfoShowMarkerAndSound)
20894            }
20895            "k_EPingMarkerInfo_ShowMarkerOnSender" => {
20896                Some(Self::KEPingMarkerInfoShowMarkerOnSender)
20897            }
20898            "k_EPingMarkerInfo_HideMarkerAndSound" => {
20899                Some(Self::KEPingMarkerInfoHideMarkerAndSound)
20900            }
20901            "k_EPingMarkerInfo_OnlyShowMarker" => {
20902                Some(Self::KEPingMarkerInfoOnlyShowMarker)
20903            }
20904            "k_EPingMarkerInfo_OnlyPlaySound" => {
20905                Some(Self::KEPingMarkerInfoOnlyPlaySound)
20906            }
20907            "k_EPingMarkerInfo_OnlyMiniMap" => Some(Self::KEPingMarkerInfoOnlyMiniMap),
20908            _ => None,
20909        }
20910    }
20911}
20912#[derive(serde::Serialize, serde::Deserialize)]
20913#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20914#[repr(i32)]
20915pub enum CameraOperation {
20916    KECameraOpMaintain = 2,
20917    KECameraOpApproach = 3,
20918    KECameraOpSpring = 4,
20919    KECameraOpLerp = 5,
20920    KECameraOpLag = 6,
20921}
20922impl CameraOperation {
20923    /// String value of the enum field names used in the ProtoBuf definition.
20924    ///
20925    /// The values are not transformed in any way and thus are considered stable
20926    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20927    pub fn as_str_name(&self) -> &'static str {
20928        match self {
20929            Self::KECameraOpMaintain => "k_ECameraOp_Maintain",
20930            Self::KECameraOpApproach => "k_ECameraOp_Approach",
20931            Self::KECameraOpSpring => "k_ECameraOp_Spring",
20932            Self::KECameraOpLerp => "k_ECameraOp_Lerp",
20933            Self::KECameraOpLag => "k_ECameraOp_Lag",
20934        }
20935    }
20936    /// Creates an enum from field names used in the ProtoBuf definition.
20937    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20938        match value {
20939            "k_ECameraOp_Maintain" => Some(Self::KECameraOpMaintain),
20940            "k_ECameraOp_Approach" => Some(Self::KECameraOpApproach),
20941            "k_ECameraOp_Spring" => Some(Self::KECameraOpSpring),
20942            "k_ECameraOp_Lerp" => Some(Self::KECameraOpLerp),
20943            "k_ECameraOp_Lag" => Some(Self::KECameraOpLag),
20944            _ => None,
20945        }
20946    }
20947}
20948#[derive(serde::Serialize, serde::Deserialize)]
20949#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20950#[repr(i32)]
20951pub enum CameraParam {
20952    KEParamClearAllOps = 0,
20953    KEParamClearAllOpsForContext = 1,
20954    KEParamDistance = 2,
20955    KEParamFov = 3,
20956    KEParamTargetPosition = 4,
20957    KEParamVertOffset = 5,
20958    KEParamHorizOffset = 6,
20959}
20960impl CameraParam {
20961    /// String value of the enum field names used in the ProtoBuf definition.
20962    ///
20963    /// The values are not transformed in any way and thus are considered stable
20964    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
20965    pub fn as_str_name(&self) -> &'static str {
20966        match self {
20967            Self::KEParamClearAllOps => "k_EParam_ClearAllOps",
20968            Self::KEParamClearAllOpsForContext => "k_EParam_ClearAllOpsForContext",
20969            Self::KEParamDistance => "k_EParam_Distance",
20970            Self::KEParamFov => "k_EParam_FOV",
20971            Self::KEParamTargetPosition => "k_EParam_TargetPosition",
20972            Self::KEParamVertOffset => "k_EParam_VertOffset",
20973            Self::KEParamHorizOffset => "k_EParam_HorizOffset",
20974        }
20975    }
20976    /// Creates an enum from field names used in the ProtoBuf definition.
20977    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
20978        match value {
20979            "k_EParam_ClearAllOps" => Some(Self::KEParamClearAllOps),
20980            "k_EParam_ClearAllOpsForContext" => Some(Self::KEParamClearAllOpsForContext),
20981            "k_EParam_Distance" => Some(Self::KEParamDistance),
20982            "k_EParam_FOV" => Some(Self::KEParamFov),
20983            "k_EParam_TargetPosition" => Some(Self::KEParamTargetPosition),
20984            "k_EParam_VertOffset" => Some(Self::KEParamVertOffset),
20985            "k_EParam_HorizOffset" => Some(Self::KEParamHorizOffset),
20986            _ => None,
20987        }
20988    }
20989}
20990#[derive(serde::Serialize, serde::Deserialize)]
20991#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
20992#[repr(i32)]
20993pub enum CameraParamMode {
20994    KEParamModeAllowInOneContext = 0,
20995    KEParamModeAllowInMultipleContexts = 1,
20996}
20997impl CameraParamMode {
20998    /// String value of the enum field names used in the ProtoBuf definition.
20999    ///
21000    /// The values are not transformed in any way and thus are considered stable
21001    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21002    pub fn as_str_name(&self) -> &'static str {
21003        match self {
21004            Self::KEParamModeAllowInOneContext => "k_EParamMode_AllowInOneContext",
21005            Self::KEParamModeAllowInMultipleContexts => {
21006                "k_EParamMode_AllowInMultipleContexts"
21007            }
21008        }
21009    }
21010    /// Creates an enum from field names used in the ProtoBuf definition.
21011    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21012        match value {
21013            "k_EParamMode_AllowInOneContext" => Some(Self::KEParamModeAllowInOneContext),
21014            "k_EParamMode_AllowInMultipleContexts" => {
21015                Some(Self::KEParamModeAllowInMultipleContexts)
21016            }
21017            _ => None,
21018        }
21019    }
21020}
21021#[derive(serde::Serialize, serde::Deserialize)]
21022#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21023#[repr(i32)]
21024pub enum CameraAction {
21025    KEActionAddOp = 0,
21026    KEActionClearAllOps = 1,
21027    KEActionClearOpsForContext = 2,
21028}
21029impl CameraAction {
21030    /// String value of the enum field names used in the ProtoBuf definition.
21031    ///
21032    /// The values are not transformed in any way and thus are considered stable
21033    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21034    pub fn as_str_name(&self) -> &'static str {
21035        match self {
21036            Self::KEActionAddOp => "k_EAction_AddOp",
21037            Self::KEActionClearAllOps => "k_EAction_ClearAllOps",
21038            Self::KEActionClearOpsForContext => "k_EAction_ClearOpsForContext",
21039        }
21040    }
21041    /// Creates an enum from field names used in the ProtoBuf definition.
21042    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21043        match value {
21044            "k_EAction_AddOp" => Some(Self::KEActionAddOp),
21045            "k_EAction_ClearAllOps" => Some(Self::KEActionClearAllOps),
21046            "k_EAction_ClearOpsForContext" => Some(Self::KEActionClearOpsForContext),
21047            _ => None,
21048        }
21049    }
21050}
21051#[derive(serde::Serialize, serde::Deserialize)]
21052#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21053#[repr(i32)]
21054pub enum ECitadelChatMessage {
21055    CitadelChatMessageUnpauseCountdown = 1,
21056    CitadelChatMessageUnpaused = 2,
21057    CitadelChatMessageAutoUnpaused = 3,
21058    CitadelChatMessagePauseCountdown = 4,
21059    CitadelChatMessagePaused = 5,
21060    CitadelChatMessageYoupaused = 6,
21061    CitadelChatMessageCantpause = 7,
21062    CitadelChatMessageCantunpauseteam = 8,
21063    CitadelChatMessageNopausesleft = 9,
21064    CitadelChatMessageCantpauseyet = 10,
21065    CitadelChatMessagePregameCountdown = 11,
21066    CitadelChatMessageNoteampausesleft = 12,
21067    CitadelChatMessageCommsRestricted = 13,
21068}
21069impl ECitadelChatMessage {
21070    /// String value of the enum field names used in the ProtoBuf definition.
21071    ///
21072    /// The values are not transformed in any way and thus are considered stable
21073    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21074    pub fn as_str_name(&self) -> &'static str {
21075        match self {
21076            Self::CitadelChatMessageUnpauseCountdown => {
21077                "CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN"
21078            }
21079            Self::CitadelChatMessageUnpaused => "CITADEL_CHAT_MESSAGE_UNPAUSED",
21080            Self::CitadelChatMessageAutoUnpaused => "CITADEL_CHAT_MESSAGE_AUTO_UNPAUSED",
21081            Self::CitadelChatMessagePauseCountdown => {
21082                "CITADEL_CHAT_MESSAGE_PAUSE_COUNTDOWN"
21083            }
21084            Self::CitadelChatMessagePaused => "CITADEL_CHAT_MESSAGE_PAUSED",
21085            Self::CitadelChatMessageYoupaused => "CITADEL_CHAT_MESSAGE_YOUPAUSED",
21086            Self::CitadelChatMessageCantpause => "CITADEL_CHAT_MESSAGE_CANTPAUSE",
21087            Self::CitadelChatMessageCantunpauseteam => {
21088                "CITADEL_CHAT_MESSAGE_CANTUNPAUSETEAM"
21089            }
21090            Self::CitadelChatMessageNopausesleft => "CITADEL_CHAT_MESSAGE_NOPAUSESLEFT",
21091            Self::CitadelChatMessageCantpauseyet => "CITADEL_CHAT_MESSAGE_CANTPAUSEYET",
21092            Self::CitadelChatMessagePregameCountdown => {
21093                "CITADEL_CHAT_MESSAGE_PREGAME_COUNTDOWN"
21094            }
21095            Self::CitadelChatMessageNoteampausesleft => {
21096                "CITADEL_CHAT_MESSAGE_NOTEAMPAUSESLEFT"
21097            }
21098            Self::CitadelChatMessageCommsRestricted => {
21099                "CITADEL_CHAT_MESSAGE_COMMS_RESTRICTED"
21100            }
21101        }
21102    }
21103    /// Creates an enum from field names used in the ProtoBuf definition.
21104    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21105        match value {
21106            "CITADEL_CHAT_MESSAGE_UNPAUSE_COUNTDOWN" => {
21107                Some(Self::CitadelChatMessageUnpauseCountdown)
21108            }
21109            "CITADEL_CHAT_MESSAGE_UNPAUSED" => Some(Self::CitadelChatMessageUnpaused),
21110            "CITADEL_CHAT_MESSAGE_AUTO_UNPAUSED" => {
21111                Some(Self::CitadelChatMessageAutoUnpaused)
21112            }
21113            "CITADEL_CHAT_MESSAGE_PAUSE_COUNTDOWN" => {
21114                Some(Self::CitadelChatMessagePauseCountdown)
21115            }
21116            "CITADEL_CHAT_MESSAGE_PAUSED" => Some(Self::CitadelChatMessagePaused),
21117            "CITADEL_CHAT_MESSAGE_YOUPAUSED" => Some(Self::CitadelChatMessageYoupaused),
21118            "CITADEL_CHAT_MESSAGE_CANTPAUSE" => Some(Self::CitadelChatMessageCantpause),
21119            "CITADEL_CHAT_MESSAGE_CANTUNPAUSETEAM" => {
21120                Some(Self::CitadelChatMessageCantunpauseteam)
21121            }
21122            "CITADEL_CHAT_MESSAGE_NOPAUSESLEFT" => {
21123                Some(Self::CitadelChatMessageNopausesleft)
21124            }
21125            "CITADEL_CHAT_MESSAGE_CANTPAUSEYET" => {
21126                Some(Self::CitadelChatMessageCantpauseyet)
21127            }
21128            "CITADEL_CHAT_MESSAGE_PREGAME_COUNTDOWN" => {
21129                Some(Self::CitadelChatMessagePregameCountdown)
21130            }
21131            "CITADEL_CHAT_MESSAGE_NOTEAMPAUSESLEFT" => {
21132                Some(Self::CitadelChatMessageNoteampausesleft)
21133            }
21134            "CITADEL_CHAT_MESSAGE_COMMS_RESTRICTED" => {
21135                Some(Self::CitadelChatMessageCommsRestricted)
21136            }
21137            _ => None,
21138        }
21139    }
21140}
21141#[derive(serde::Serialize, serde::Deserialize)]
21142#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21143#[repr(i32)]
21144pub enum PostProcessingGameStates {
21145    PostProcStateKilled = 0,
21146    PostProcStateBlack = 1,
21147    PostProcStateDoormanHotelVictim = 2,
21148    PostProcStateBlinded = 3,
21149    PostProcStateDrifterDarknessCaster = 4,
21150    PostProcStateMatchIntro = 5,
21151}
21152impl PostProcessingGameStates {
21153    /// String value of the enum field names used in the ProtoBuf definition.
21154    ///
21155    /// The values are not transformed in any way and thus are considered stable
21156    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21157    pub fn as_str_name(&self) -> &'static str {
21158        match self {
21159            Self::PostProcStateKilled => "PostProcState_Killed",
21160            Self::PostProcStateBlack => "PostProcState_Black",
21161            Self::PostProcStateDoormanHotelVictim => "PostProcState_DoormanHotelVictim",
21162            Self::PostProcStateBlinded => "PostProcState_Blinded",
21163            Self::PostProcStateDrifterDarknessCaster => {
21164                "PostProcState_DrifterDarknessCaster"
21165            }
21166            Self::PostProcStateMatchIntro => "PostProcState_MatchIntro",
21167        }
21168    }
21169    /// Creates an enum from field names used in the ProtoBuf definition.
21170    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21171        match value {
21172            "PostProcState_Killed" => Some(Self::PostProcStateKilled),
21173            "PostProcState_Black" => Some(Self::PostProcStateBlack),
21174            "PostProcState_DoormanHotelVictim" => {
21175                Some(Self::PostProcStateDoormanHotelVictim)
21176            }
21177            "PostProcState_Blinded" => Some(Self::PostProcStateBlinded),
21178            "PostProcState_DrifterDarknessCaster" => {
21179                Some(Self::PostProcStateDrifterDarknessCaster)
21180            }
21181            "PostProcState_MatchIntro" => Some(Self::PostProcStateMatchIntro),
21182            _ => None,
21183        }
21184    }
21185}
21186#[derive(serde::Serialize, serde::Deserialize)]
21187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21188pub struct CClientMsgCustomGameEvent {
21189    #[prost(string, optional, tag = "1")]
21190    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
21191    #[prost(bytes = "vec", optional, tag = "2")]
21192    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21193}
21194#[derive(serde::Serialize, serde::Deserialize)]
21195#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21196pub struct CClientMsgCustomGameEventBounce {
21197    #[prost(string, optional, tag = "1")]
21198    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
21199    #[prost(bytes = "vec", optional, tag = "2")]
21200    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21201    #[prost(int32, optional, tag = "3", default = "-1")]
21202    pub player_slot: ::core::option::Option<i32>,
21203}
21204#[derive(serde::Serialize, serde::Deserialize)]
21205#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21206pub struct CClientMsgClientUiEvent {
21207    #[prost(enumeration = "EClientUiEvent", optional, tag = "1", default = "Invalid")]
21208    pub event: ::core::option::Option<i32>,
21209    #[prost(uint32, optional, tag = "2")]
21210    pub ent_ehandle: ::core::option::Option<u32>,
21211    #[prost(uint32, optional, tag = "3")]
21212    pub client_ehandle: ::core::option::Option<u32>,
21213    #[prost(string, optional, tag = "4")]
21214    pub data1: ::core::option::Option<::prost::alloc::string::String>,
21215    #[prost(string, optional, tag = "5")]
21216    pub data2: ::core::option::Option<::prost::alloc::string::String>,
21217}
21218#[derive(serde::Serialize, serde::Deserialize)]
21219#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21220pub struct CClientMsgDevPaletteVisibilityChangedEvent {
21221    #[prost(bool, optional, tag = "1")]
21222    pub visible: ::core::option::Option<bool>,
21223}
21224#[derive(serde::Serialize, serde::Deserialize)]
21225#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21226pub struct CClientMsgWorldUiControllerHasPanelChangedEvent {
21227    #[prost(bool, optional, tag = "1")]
21228    pub has_panel: ::core::option::Option<bool>,
21229    #[prost(uint32, optional, tag = "2")]
21230    pub client_ehandle: ::core::option::Option<u32>,
21231    #[prost(uint32, optional, tag = "3")]
21232    pub literal_hand_type: ::core::option::Option<u32>,
21233}
21234#[derive(serde::Serialize, serde::Deserialize)]
21235#[derive(Clone, Copy, PartialEq, ::prost::Message)]
21236pub struct CClientMsgRotateAnchor {
21237    #[prost(float, optional, tag = "1")]
21238    pub angle: ::core::option::Option<f32>,
21239}
21240#[derive(serde::Serialize, serde::Deserialize)]
21241#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21242pub struct CClientMsgListenForResponseFound {
21243    #[prost(int32, optional, tag = "1", default = "-1")]
21244    pub player_slot: ::core::option::Option<i32>,
21245}
21246#[derive(serde::Serialize, serde::Deserialize)]
21247#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21248#[repr(i32)]
21249pub enum EBaseClientMessages {
21250    CmCustomGameEvent = 280,
21251    CmCustomGameEventBounce = 281,
21252    CmClientUiEvent = 282,
21253    CmDevPaletteVisibilityChanged = 283,
21254    CmWorldUiControllerHasPanelChanged = 284,
21255    CmRotateAnchor = 285,
21256    CmListenForResponseFound = 286,
21257    CmMaxBase = 300,
21258}
21259impl EBaseClientMessages {
21260    /// String value of the enum field names used in the ProtoBuf definition.
21261    ///
21262    /// The values are not transformed in any way and thus are considered stable
21263    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21264    pub fn as_str_name(&self) -> &'static str {
21265        match self {
21266            Self::CmCustomGameEvent => "CM_CustomGameEvent",
21267            Self::CmCustomGameEventBounce => "CM_CustomGameEventBounce",
21268            Self::CmClientUiEvent => "CM_ClientUIEvent",
21269            Self::CmDevPaletteVisibilityChanged => "CM_DevPaletteVisibilityChanged",
21270            Self::CmWorldUiControllerHasPanelChanged => {
21271                "CM_WorldUIControllerHasPanelChanged"
21272            }
21273            Self::CmRotateAnchor => "CM_RotateAnchor",
21274            Self::CmListenForResponseFound => "CM_ListenForResponseFound",
21275            Self::CmMaxBase => "CM_MAX_BASE",
21276        }
21277    }
21278    /// Creates an enum from field names used in the ProtoBuf definition.
21279    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21280        match value {
21281            "CM_CustomGameEvent" => Some(Self::CmCustomGameEvent),
21282            "CM_CustomGameEventBounce" => Some(Self::CmCustomGameEventBounce),
21283            "CM_ClientUIEvent" => Some(Self::CmClientUiEvent),
21284            "CM_DevPaletteVisibilityChanged" => Some(Self::CmDevPaletteVisibilityChanged),
21285            "CM_WorldUIControllerHasPanelChanged" => {
21286                Some(Self::CmWorldUiControllerHasPanelChanged)
21287            }
21288            "CM_RotateAnchor" => Some(Self::CmRotateAnchor),
21289            "CM_ListenForResponseFound" => Some(Self::CmListenForResponseFound),
21290            "CM_MAX_BASE" => Some(Self::CmMaxBase),
21291            _ => None,
21292        }
21293    }
21294}
21295#[derive(serde::Serialize, serde::Deserialize)]
21296#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21297#[repr(i32)]
21298pub enum EClientUiEvent {
21299    Invalid = 0,
21300    DialogFinished = 1,
21301    FireOutput = 2,
21302}
21303impl EClientUiEvent {
21304    /// String value of the enum field names used in the ProtoBuf definition.
21305    ///
21306    /// The values are not transformed in any way and thus are considered stable
21307    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21308    pub fn as_str_name(&self) -> &'static str {
21309        match self {
21310            Self::Invalid => "EClientUIEvent_Invalid",
21311            Self::DialogFinished => "EClientUIEvent_DialogFinished",
21312            Self::FireOutput => "EClientUIEvent_FireOutput",
21313        }
21314    }
21315    /// Creates an enum from field names used in the ProtoBuf definition.
21316    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21317        match value {
21318            "EClientUIEvent_Invalid" => Some(Self::Invalid),
21319            "EClientUIEvent_DialogFinished" => Some(Self::DialogFinished),
21320            "EClientUIEvent_FireOutput" => Some(Self::FireOutput),
21321            _ => None,
21322        }
21323    }
21324}
21325#[derive(serde::Serialize, serde::Deserialize)]
21326#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21327pub struct CDemoFileHeader {
21328    #[prost(string, required, tag = "1")]
21329    pub demo_file_stamp: ::prost::alloc::string::String,
21330    #[prost(int32, optional, tag = "2")]
21331    pub patch_version: ::core::option::Option<i32>,
21332    #[prost(string, optional, tag = "3")]
21333    pub server_name: ::core::option::Option<::prost::alloc::string::String>,
21334    #[prost(string, optional, tag = "4")]
21335    pub client_name: ::core::option::Option<::prost::alloc::string::String>,
21336    #[prost(string, optional, tag = "5")]
21337    pub map_name: ::core::option::Option<::prost::alloc::string::String>,
21338    #[prost(string, optional, tag = "6")]
21339    pub game_directory: ::core::option::Option<::prost::alloc::string::String>,
21340    #[prost(int32, optional, tag = "7")]
21341    pub fullpackets_version: ::core::option::Option<i32>,
21342    #[prost(bool, optional, tag = "8")]
21343    pub allow_clientside_entities: ::core::option::Option<bool>,
21344    #[prost(bool, optional, tag = "9")]
21345    pub allow_clientside_particles: ::core::option::Option<bool>,
21346    #[prost(string, optional, tag = "10")]
21347    pub addons: ::core::option::Option<::prost::alloc::string::String>,
21348    #[prost(string, optional, tag = "11")]
21349    pub demo_version_name: ::core::option::Option<::prost::alloc::string::String>,
21350    #[prost(string, optional, tag = "12")]
21351    pub demo_version_guid: ::core::option::Option<::prost::alloc::string::String>,
21352    #[prost(int32, optional, tag = "13")]
21353    pub build_num: ::core::option::Option<i32>,
21354    #[prost(string, optional, tag = "14")]
21355    pub game: ::core::option::Option<::prost::alloc::string::String>,
21356    #[prost(int32, optional, tag = "15")]
21357    pub server_start_tick: ::core::option::Option<i32>,
21358}
21359#[derive(serde::Serialize, serde::Deserialize)]
21360#[derive(Clone, PartialEq, ::prost::Message)]
21361pub struct CGameInfo {
21362    #[prost(message, optional, tag = "4")]
21363    pub dota: ::core::option::Option<c_game_info::CDotaGameInfo>,
21364    #[prost(message, optional, tag = "5")]
21365    pub cs: ::core::option::Option<c_game_info::CcsGameInfo>,
21366}
21367/// Nested message and enum types in `CGameInfo`.
21368pub mod c_game_info {
21369    #[derive(serde::Serialize, serde::Deserialize)]
21370    #[derive(Clone, PartialEq, ::prost::Message)]
21371    pub struct CDotaGameInfo {
21372        #[prost(uint64, optional, tag = "1")]
21373        pub match_id: ::core::option::Option<u64>,
21374        #[prost(int32, optional, tag = "2")]
21375        pub game_mode: ::core::option::Option<i32>,
21376        #[prost(int32, optional, tag = "3")]
21377        pub game_winner: ::core::option::Option<i32>,
21378        #[prost(message, repeated, tag = "4")]
21379        pub player_info: ::prost::alloc::vec::Vec<c_dota_game_info::CPlayerInfo>,
21380        #[prost(uint32, optional, tag = "5")]
21381        pub leagueid: ::core::option::Option<u32>,
21382        #[prost(message, repeated, tag = "6")]
21383        pub picks_bans: ::prost::alloc::vec::Vec<c_dota_game_info::CHeroSelectEvent>,
21384        #[prost(uint32, optional, tag = "7")]
21385        pub radiant_team_id: ::core::option::Option<u32>,
21386        #[prost(uint32, optional, tag = "8")]
21387        pub dire_team_id: ::core::option::Option<u32>,
21388        #[prost(string, optional, tag = "9")]
21389        pub radiant_team_tag: ::core::option::Option<::prost::alloc::string::String>,
21390        #[prost(string, optional, tag = "10")]
21391        pub dire_team_tag: ::core::option::Option<::prost::alloc::string::String>,
21392        #[prost(uint32, optional, tag = "11")]
21393        pub end_time: ::core::option::Option<u32>,
21394    }
21395    /// Nested message and enum types in `CDotaGameInfo`.
21396    pub mod c_dota_game_info {
21397        #[derive(serde::Serialize, serde::Deserialize)]
21398        #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21399        pub struct CPlayerInfo {
21400            #[prost(string, optional, tag = "1")]
21401            pub hero_name: ::core::option::Option<::prost::alloc::string::String>,
21402            #[prost(string, optional, tag = "2")]
21403            pub player_name: ::core::option::Option<::prost::alloc::string::String>,
21404            #[prost(bool, optional, tag = "3")]
21405            pub is_fake_client: ::core::option::Option<bool>,
21406            #[prost(uint64, optional, tag = "4")]
21407            pub steamid: ::core::option::Option<u64>,
21408            #[prost(int32, optional, tag = "5")]
21409            pub game_team: ::core::option::Option<i32>,
21410        }
21411        #[derive(serde::Serialize, serde::Deserialize)]
21412        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21413        pub struct CHeroSelectEvent {
21414            #[prost(bool, optional, tag = "1")]
21415            pub is_pick: ::core::option::Option<bool>,
21416            #[prost(uint32, optional, tag = "2")]
21417            pub team: ::core::option::Option<u32>,
21418            #[prost(int32, optional, tag = "3")]
21419            pub hero_id: ::core::option::Option<i32>,
21420        }
21421    }
21422    #[derive(serde::Serialize, serde::Deserialize)]
21423    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21424    pub struct CcsGameInfo {
21425        #[prost(int32, repeated, packed = "false", tag = "1")]
21426        pub round_start_ticks: ::prost::alloc::vec::Vec<i32>,
21427    }
21428}
21429#[derive(serde::Serialize, serde::Deserialize)]
21430#[derive(Clone, PartialEq, ::prost::Message)]
21431pub struct CDemoFileInfo {
21432    #[prost(float, optional, tag = "1")]
21433    pub playback_time: ::core::option::Option<f32>,
21434    #[prost(int32, optional, tag = "2")]
21435    pub playback_ticks: ::core::option::Option<i32>,
21436    #[prost(int32, optional, tag = "3")]
21437    pub playback_frames: ::core::option::Option<i32>,
21438    #[prost(message, optional, tag = "4")]
21439    pub game_info: ::core::option::Option<CGameInfo>,
21440}
21441#[derive(serde::Serialize, serde::Deserialize)]
21442#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21443pub struct CDemoPacket {
21444    #[prost(bytes = "vec", optional, tag = "3")]
21445    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21446}
21447#[derive(serde::Serialize, serde::Deserialize)]
21448#[derive(Clone, PartialEq, ::prost::Message)]
21449pub struct CDemoFullPacket {
21450    #[prost(message, optional, tag = "1")]
21451    pub string_table: ::core::option::Option<CDemoStringTables>,
21452    #[prost(message, optional, tag = "2")]
21453    pub packet: ::core::option::Option<CDemoPacket>,
21454}
21455#[derive(serde::Serialize, serde::Deserialize)]
21456#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21457pub struct CDemoSaveGame {
21458    #[prost(bytes = "vec", optional, tag = "1")]
21459    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21460    #[prost(fixed64, optional, tag = "2")]
21461    pub steam_id: ::core::option::Option<u64>,
21462    #[prost(fixed64, optional, tag = "3")]
21463    pub signature: ::core::option::Option<u64>,
21464    #[prost(int32, optional, tag = "4")]
21465    pub version: ::core::option::Option<i32>,
21466}
21467#[derive(serde::Serialize, serde::Deserialize)]
21468#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21469pub struct CDemoSyncTick {}
21470#[derive(serde::Serialize, serde::Deserialize)]
21471#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21472pub struct CDemoConsoleCmd {
21473    #[prost(string, optional, tag = "1")]
21474    pub cmdstring: ::core::option::Option<::prost::alloc::string::String>,
21475}
21476#[derive(serde::Serialize, serde::Deserialize)]
21477#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21478pub struct CDemoSendTables {
21479    #[prost(bytes = "vec", optional, tag = "1")]
21480    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21481}
21482#[derive(serde::Serialize, serde::Deserialize)]
21483#[derive(Clone, PartialEq, ::prost::Message)]
21484pub struct CDemoClassInfo {
21485    #[prost(message, repeated, tag = "1")]
21486    pub classes: ::prost::alloc::vec::Vec<c_demo_class_info::ClassT>,
21487}
21488/// Nested message and enum types in `CDemoClassInfo`.
21489pub mod c_demo_class_info {
21490    #[derive(serde::Serialize, serde::Deserialize)]
21491    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21492    pub struct ClassT {
21493        #[prost(int32, optional, tag = "1")]
21494        pub class_id: ::core::option::Option<i32>,
21495        #[prost(string, optional, tag = "2")]
21496        pub network_name: ::core::option::Option<::prost::alloc::string::String>,
21497        #[prost(string, optional, tag = "3")]
21498        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
21499    }
21500}
21501#[derive(serde::Serialize, serde::Deserialize)]
21502#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21503pub struct CDemoCustomData {
21504    #[prost(int32, optional, tag = "1")]
21505    pub callback_index: ::core::option::Option<i32>,
21506    #[prost(bytes = "vec", optional, tag = "2")]
21507    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21508}
21509#[derive(serde::Serialize, serde::Deserialize)]
21510#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21511pub struct CDemoCustomDataCallbacks {
21512    #[prost(string, repeated, tag = "1")]
21513    pub save_id: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
21514}
21515#[derive(serde::Serialize, serde::Deserialize)]
21516#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21517pub struct CDemoAnimationHeader {
21518    #[prost(sint32, optional, tag = "1")]
21519    pub entity_id: ::core::option::Option<i32>,
21520    #[prost(int32, optional, tag = "2")]
21521    pub tick: ::core::option::Option<i32>,
21522    #[prost(bytes = "vec", optional, tag = "3")]
21523    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21524}
21525#[derive(serde::Serialize, serde::Deserialize)]
21526#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21527pub struct CDemoAnimationData {
21528    #[prost(sint32, optional, tag = "1")]
21529    pub entity_id: ::core::option::Option<i32>,
21530    #[prost(int32, optional, tag = "2")]
21531    pub start_tick: ::core::option::Option<i32>,
21532    #[prost(int32, optional, tag = "3")]
21533    pub end_tick: ::core::option::Option<i32>,
21534    #[prost(bytes = "vec", optional, tag = "4")]
21535    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21536    #[prost(int64, optional, tag = "5")]
21537    pub data_checksum: ::core::option::Option<i64>,
21538}
21539#[derive(serde::Serialize, serde::Deserialize)]
21540#[derive(Clone, PartialEq, ::prost::Message)]
21541pub struct CDemoStringTables {
21542    #[prost(message, repeated, tag = "1")]
21543    pub tables: ::prost::alloc::vec::Vec<c_demo_string_tables::TableT>,
21544}
21545/// Nested message and enum types in `CDemoStringTables`.
21546pub mod c_demo_string_tables {
21547    #[derive(serde::Serialize, serde::Deserialize)]
21548    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21549    pub struct ItemsT {
21550        #[prost(string, optional, tag = "1")]
21551        pub str: ::core::option::Option<::prost::alloc::string::String>,
21552        #[prost(bytes = "vec", optional, tag = "2")]
21553        pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21554    }
21555    #[derive(serde::Serialize, serde::Deserialize)]
21556    #[derive(Clone, PartialEq, ::prost::Message)]
21557    pub struct TableT {
21558        #[prost(string, optional, tag = "1")]
21559        pub table_name: ::core::option::Option<::prost::alloc::string::String>,
21560        #[prost(message, repeated, tag = "2")]
21561        pub items: ::prost::alloc::vec::Vec<ItemsT>,
21562        #[prost(message, repeated, tag = "3")]
21563        pub items_clientside: ::prost::alloc::vec::Vec<ItemsT>,
21564        #[prost(int32, optional, tag = "4")]
21565        pub table_flags: ::core::option::Option<i32>,
21566    }
21567}
21568#[derive(serde::Serialize, serde::Deserialize)]
21569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21570pub struct CDemoStop {}
21571#[derive(serde::Serialize, serde::Deserialize)]
21572#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21573pub struct CDemoUserCmd {
21574    #[prost(int32, optional, tag = "1")]
21575    pub cmd_number: ::core::option::Option<i32>,
21576    #[prost(bytes = "vec", optional, tag = "2")]
21577    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21578}
21579#[derive(serde::Serialize, serde::Deserialize)]
21580#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21581pub struct CDemoSpawnGroups {
21582    #[prost(bytes = "vec", repeated, tag = "3")]
21583    pub msgs: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
21584}
21585#[derive(serde::Serialize, serde::Deserialize)]
21586#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21587pub struct CDemoSpawnGroupsHltvBroadcast {
21588    #[prost(bytes = "vec", optional, tag = "1")]
21589    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21590}
21591#[derive(serde::Serialize, serde::Deserialize)]
21592#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21593pub struct CDemoRecovery {
21594    #[prost(message, optional, tag = "1")]
21595    pub initial_spawn_group: ::core::option::Option<
21596        c_demo_recovery::DemoInitialSpawnGroupEntry,
21597    >,
21598    #[prost(bytes = "vec", optional, tag = "2")]
21599    pub spawn_group_message: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
21600}
21601/// Nested message and enum types in `CDemoRecovery`.
21602pub mod c_demo_recovery {
21603    #[derive(serde::Serialize, serde::Deserialize)]
21604    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21605    pub struct DemoInitialSpawnGroupEntry {
21606        #[prost(uint32, optional, tag = "1")]
21607        pub spawngrouphandle: ::core::option::Option<u32>,
21608        #[prost(bool, optional, tag = "2")]
21609        pub was_created: ::core::option::Option<bool>,
21610    }
21611}
21612#[derive(serde::Serialize, serde::Deserialize)]
21613#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21614#[repr(i32)]
21615pub enum EDemoCommands {
21616    DemError = -1,
21617    DemStop = 0,
21618    DemFileHeader = 1,
21619    DemFileInfo = 2,
21620    DemSyncTick = 3,
21621    DemSendTables = 4,
21622    DemClassInfo = 5,
21623    DemStringTables = 6,
21624    DemPacket = 7,
21625    DemSignonPacket = 8,
21626    DemConsoleCmd = 9,
21627    DemCustomData = 10,
21628    DemCustomDataCallbacks = 11,
21629    DemUserCmd = 12,
21630    DemFullPacket = 13,
21631    DemSaveGame = 14,
21632    DemSpawnGroups = 15,
21633    DemAnimationData = 16,
21634    DemAnimationHeader = 17,
21635    DemRecovery = 18,
21636    DemMax = 19,
21637    DemIsCompressed = 64,
21638}
21639impl EDemoCommands {
21640    /// String value of the enum field names used in the ProtoBuf definition.
21641    ///
21642    /// The values are not transformed in any way and thus are considered stable
21643    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21644    pub fn as_str_name(&self) -> &'static str {
21645        match self {
21646            Self::DemError => "DEM_Error",
21647            Self::DemStop => "DEM_Stop",
21648            Self::DemFileHeader => "DEM_FileHeader",
21649            Self::DemFileInfo => "DEM_FileInfo",
21650            Self::DemSyncTick => "DEM_SyncTick",
21651            Self::DemSendTables => "DEM_SendTables",
21652            Self::DemClassInfo => "DEM_ClassInfo",
21653            Self::DemStringTables => "DEM_StringTables",
21654            Self::DemPacket => "DEM_Packet",
21655            Self::DemSignonPacket => "DEM_SignonPacket",
21656            Self::DemConsoleCmd => "DEM_ConsoleCmd",
21657            Self::DemCustomData => "DEM_CustomData",
21658            Self::DemCustomDataCallbacks => "DEM_CustomDataCallbacks",
21659            Self::DemUserCmd => "DEM_UserCmd",
21660            Self::DemFullPacket => "DEM_FullPacket",
21661            Self::DemSaveGame => "DEM_SaveGame",
21662            Self::DemSpawnGroups => "DEM_SpawnGroups",
21663            Self::DemAnimationData => "DEM_AnimationData",
21664            Self::DemAnimationHeader => "DEM_AnimationHeader",
21665            Self::DemRecovery => "DEM_Recovery",
21666            Self::DemMax => "DEM_Max",
21667            Self::DemIsCompressed => "DEM_IsCompressed",
21668        }
21669    }
21670    /// Creates an enum from field names used in the ProtoBuf definition.
21671    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21672        match value {
21673            "DEM_Error" => Some(Self::DemError),
21674            "DEM_Stop" => Some(Self::DemStop),
21675            "DEM_FileHeader" => Some(Self::DemFileHeader),
21676            "DEM_FileInfo" => Some(Self::DemFileInfo),
21677            "DEM_SyncTick" => Some(Self::DemSyncTick),
21678            "DEM_SendTables" => Some(Self::DemSendTables),
21679            "DEM_ClassInfo" => Some(Self::DemClassInfo),
21680            "DEM_StringTables" => Some(Self::DemStringTables),
21681            "DEM_Packet" => Some(Self::DemPacket),
21682            "DEM_SignonPacket" => Some(Self::DemSignonPacket),
21683            "DEM_ConsoleCmd" => Some(Self::DemConsoleCmd),
21684            "DEM_CustomData" => Some(Self::DemCustomData),
21685            "DEM_CustomDataCallbacks" => Some(Self::DemCustomDataCallbacks),
21686            "DEM_UserCmd" => Some(Self::DemUserCmd),
21687            "DEM_FullPacket" => Some(Self::DemFullPacket),
21688            "DEM_SaveGame" => Some(Self::DemSaveGame),
21689            "DEM_SpawnGroups" => Some(Self::DemSpawnGroups),
21690            "DEM_AnimationData" => Some(Self::DemAnimationData),
21691            "DEM_AnimationHeader" => Some(Self::DemAnimationHeader),
21692            "DEM_Recovery" => Some(Self::DemRecovery),
21693            "DEM_Max" => Some(Self::DemMax),
21694            "DEM_IsCompressed" => Some(Self::DemIsCompressed),
21695            _ => None,
21696        }
21697    }
21698}
21699#[derive(serde::Serialize, serde::Deserialize)]
21700#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21701pub struct CMsgGenericResult {
21702    #[prost(uint32, optional, tag = "1", default = "2")]
21703    pub eresult: ::core::option::Option<u32>,
21704    #[prost(string, optional, tag = "2")]
21705    pub debug_message: ::core::option::Option<::prost::alloc::string::String>,
21706}
21707#[derive(serde::Serialize, serde::Deserialize)]
21708#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21709#[repr(i32)]
21710pub enum EgcEconBaseMsg {
21711    KEMsgGcGenericResult = 2579,
21712}
21713impl EgcEconBaseMsg {
21714    /// String value of the enum field names used in the ProtoBuf definition.
21715    ///
21716    /// The values are not transformed in any way and thus are considered stable
21717    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21718    pub fn as_str_name(&self) -> &'static str {
21719        match self {
21720            Self::KEMsgGcGenericResult => "k_EMsgGCGenericResult",
21721        }
21722    }
21723    /// Creates an enum from field names used in the ProtoBuf definition.
21724    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21725        match value {
21726            "k_EMsgGCGenericResult" => Some(Self::KEMsgGcGenericResult),
21727            _ => None,
21728        }
21729    }
21730}
21731#[derive(serde::Serialize, serde::Deserialize)]
21732#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21733#[repr(i32)]
21734pub enum EgcMsgResponse {
21735    KEgcMsgResponseOk = 0,
21736    KEgcMsgResponseDenied = 1,
21737    KEgcMsgResponseServerError = 2,
21738    KEgcMsgResponseTimeout = 3,
21739    KEgcMsgResponseInvalid = 4,
21740    KEgcMsgResponseNoMatch = 5,
21741    KEgcMsgResponseUnknownError = 6,
21742    KEgcMsgResponseNotLoggedOn = 7,
21743    KEgcMsgFailedToCreate = 8,
21744}
21745impl EgcMsgResponse {
21746    /// String value of the enum field names used in the ProtoBuf definition.
21747    ///
21748    /// The values are not transformed in any way and thus are considered stable
21749    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21750    pub fn as_str_name(&self) -> &'static str {
21751        match self {
21752            Self::KEgcMsgResponseOk => "k_EGCMsgResponseOK",
21753            Self::KEgcMsgResponseDenied => "k_EGCMsgResponseDenied",
21754            Self::KEgcMsgResponseServerError => "k_EGCMsgResponseServerError",
21755            Self::KEgcMsgResponseTimeout => "k_EGCMsgResponseTimeout",
21756            Self::KEgcMsgResponseInvalid => "k_EGCMsgResponseInvalid",
21757            Self::KEgcMsgResponseNoMatch => "k_EGCMsgResponseNoMatch",
21758            Self::KEgcMsgResponseUnknownError => "k_EGCMsgResponseUnknownError",
21759            Self::KEgcMsgResponseNotLoggedOn => "k_EGCMsgResponseNotLoggedOn",
21760            Self::KEgcMsgFailedToCreate => "k_EGCMsgFailedToCreate",
21761        }
21762    }
21763    /// Creates an enum from field names used in the ProtoBuf definition.
21764    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21765        match value {
21766            "k_EGCMsgResponseOK" => Some(Self::KEgcMsgResponseOk),
21767            "k_EGCMsgResponseDenied" => Some(Self::KEgcMsgResponseDenied),
21768            "k_EGCMsgResponseServerError" => Some(Self::KEgcMsgResponseServerError),
21769            "k_EGCMsgResponseTimeout" => Some(Self::KEgcMsgResponseTimeout),
21770            "k_EGCMsgResponseInvalid" => Some(Self::KEgcMsgResponseInvalid),
21771            "k_EGCMsgResponseNoMatch" => Some(Self::KEgcMsgResponseNoMatch),
21772            "k_EGCMsgResponseUnknownError" => Some(Self::KEgcMsgResponseUnknownError),
21773            "k_EGCMsgResponseNotLoggedOn" => Some(Self::KEgcMsgResponseNotLoggedOn),
21774            "k_EGCMsgFailedToCreate" => Some(Self::KEgcMsgFailedToCreate),
21775            _ => None,
21776        }
21777    }
21778}
21779#[derive(serde::Serialize, serde::Deserialize)]
21780#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
21781#[repr(i32)]
21782pub enum EgcMsgUseItemResponse {
21783    KEgcMsgUseItemResponseItemUsed = 0,
21784    KEgcMsgUseItemResponseGiftNoOtherPlayers = 1,
21785    KEgcMsgUseItemResponseServerError = 2,
21786    KEgcMsgUseItemResponseMiniGameAlreadyStarted = 3,
21787    KEgcMsgUseItemResponseItemUsedItemsGranted = 4,
21788    KEgcMsgUseItemResponseDropRateBonusAlreadyGranted = 5,
21789    KEgcMsgUseItemResponseNotInLowPriorityPool = 6,
21790    KEgcMsgUseItemResponseNotHighEnoughLevel = 7,
21791    KEgcMsgUseItemResponseEventNotActive = 8,
21792    KEgcMsgUseItemResponseItemUsedEventPointsGranted = 9,
21793    KEgcMsgUseItemResponseMissingRequirement = 10,
21794    KEgcMsgUseItemResponseEmoticonUnlockNoNew = 11,
21795    KEgcMsgUseItemResponseEmoticonUnlockComplete = 12,
21796    KEgcMsgUseItemResponseItemUsedCompendium = 13,
21797    KEgcMsgUseItemResponseCannotUseWhileUntradable = 14,
21798    KEgcMsgUseItemResponseCannotBeUsedByAccount = 15,
21799    KEgcMsgUseItemResponseRecipientCannotRecieve = 16,
21800}
21801impl EgcMsgUseItemResponse {
21802    /// String value of the enum field names used in the ProtoBuf definition.
21803    ///
21804    /// The values are not transformed in any way and thus are considered stable
21805    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
21806    pub fn as_str_name(&self) -> &'static str {
21807        match self {
21808            Self::KEgcMsgUseItemResponseItemUsed => "k_EGCMsgUseItemResponse_ItemUsed",
21809            Self::KEgcMsgUseItemResponseGiftNoOtherPlayers => {
21810                "k_EGCMsgUseItemResponse_GiftNoOtherPlayers"
21811            }
21812            Self::KEgcMsgUseItemResponseServerError => {
21813                "k_EGCMsgUseItemResponse_ServerError"
21814            }
21815            Self::KEgcMsgUseItemResponseMiniGameAlreadyStarted => {
21816                "k_EGCMsgUseItemResponse_MiniGameAlreadyStarted"
21817            }
21818            Self::KEgcMsgUseItemResponseItemUsedItemsGranted => {
21819                "k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted"
21820            }
21821            Self::KEgcMsgUseItemResponseDropRateBonusAlreadyGranted => {
21822                "k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted"
21823            }
21824            Self::KEgcMsgUseItemResponseNotInLowPriorityPool => {
21825                "k_EGCMsgUseItemResponse_NotInLowPriorityPool"
21826            }
21827            Self::KEgcMsgUseItemResponseNotHighEnoughLevel => {
21828                "k_EGCMsgUseItemResponse_NotHighEnoughLevel"
21829            }
21830            Self::KEgcMsgUseItemResponseEventNotActive => {
21831                "k_EGCMsgUseItemResponse_EventNotActive"
21832            }
21833            Self::KEgcMsgUseItemResponseItemUsedEventPointsGranted => {
21834                "k_EGCMsgUseItemResponse_ItemUsed_EventPointsGranted"
21835            }
21836            Self::KEgcMsgUseItemResponseMissingRequirement => {
21837                "k_EGCMsgUseItemResponse_MissingRequirement"
21838            }
21839            Self::KEgcMsgUseItemResponseEmoticonUnlockNoNew => {
21840                "k_EGCMsgUseItemResponse_EmoticonUnlock_NoNew"
21841            }
21842            Self::KEgcMsgUseItemResponseEmoticonUnlockComplete => {
21843                "k_EGCMsgUseItemResponse_EmoticonUnlock_Complete"
21844            }
21845            Self::KEgcMsgUseItemResponseItemUsedCompendium => {
21846                "k_EGCMsgUseItemResponse_ItemUsed_Compendium"
21847            }
21848            Self::KEgcMsgUseItemResponseCannotUseWhileUntradable => {
21849                "k_EGCMsgUseItemResponse_CannotUseWhileUntradable"
21850            }
21851            Self::KEgcMsgUseItemResponseCannotBeUsedByAccount => {
21852                "k_EGCMsgUseItemResponse_CannotBeUsedByAccount"
21853            }
21854            Self::KEgcMsgUseItemResponseRecipientCannotRecieve => {
21855                "k_EGCMsgUseItemResponse_RecipientCannotRecieve"
21856            }
21857        }
21858    }
21859    /// Creates an enum from field names used in the ProtoBuf definition.
21860    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
21861        match value {
21862            "k_EGCMsgUseItemResponse_ItemUsed" => {
21863                Some(Self::KEgcMsgUseItemResponseItemUsed)
21864            }
21865            "k_EGCMsgUseItemResponse_GiftNoOtherPlayers" => {
21866                Some(Self::KEgcMsgUseItemResponseGiftNoOtherPlayers)
21867            }
21868            "k_EGCMsgUseItemResponse_ServerError" => {
21869                Some(Self::KEgcMsgUseItemResponseServerError)
21870            }
21871            "k_EGCMsgUseItemResponse_MiniGameAlreadyStarted" => {
21872                Some(Self::KEgcMsgUseItemResponseMiniGameAlreadyStarted)
21873            }
21874            "k_EGCMsgUseItemResponse_ItemUsed_ItemsGranted" => {
21875                Some(Self::KEgcMsgUseItemResponseItemUsedItemsGranted)
21876            }
21877            "k_EGCMsgUseItemResponse_DropRateBonusAlreadyGranted" => {
21878                Some(Self::KEgcMsgUseItemResponseDropRateBonusAlreadyGranted)
21879            }
21880            "k_EGCMsgUseItemResponse_NotInLowPriorityPool" => {
21881                Some(Self::KEgcMsgUseItemResponseNotInLowPriorityPool)
21882            }
21883            "k_EGCMsgUseItemResponse_NotHighEnoughLevel" => {
21884                Some(Self::KEgcMsgUseItemResponseNotHighEnoughLevel)
21885            }
21886            "k_EGCMsgUseItemResponse_EventNotActive" => {
21887                Some(Self::KEgcMsgUseItemResponseEventNotActive)
21888            }
21889            "k_EGCMsgUseItemResponse_ItemUsed_EventPointsGranted" => {
21890                Some(Self::KEgcMsgUseItemResponseItemUsedEventPointsGranted)
21891            }
21892            "k_EGCMsgUseItemResponse_MissingRequirement" => {
21893                Some(Self::KEgcMsgUseItemResponseMissingRequirement)
21894            }
21895            "k_EGCMsgUseItemResponse_EmoticonUnlock_NoNew" => {
21896                Some(Self::KEgcMsgUseItemResponseEmoticonUnlockNoNew)
21897            }
21898            "k_EGCMsgUseItemResponse_EmoticonUnlock_Complete" => {
21899                Some(Self::KEgcMsgUseItemResponseEmoticonUnlockComplete)
21900            }
21901            "k_EGCMsgUseItemResponse_ItemUsed_Compendium" => {
21902                Some(Self::KEgcMsgUseItemResponseItemUsedCompendium)
21903            }
21904            "k_EGCMsgUseItemResponse_CannotUseWhileUntradable" => {
21905                Some(Self::KEgcMsgUseItemResponseCannotUseWhileUntradable)
21906            }
21907            "k_EGCMsgUseItemResponse_CannotBeUsedByAccount" => {
21908                Some(Self::KEgcMsgUseItemResponseCannotBeUsedByAccount)
21909            }
21910            "k_EGCMsgUseItemResponse_RecipientCannotRecieve" => {
21911                Some(Self::KEgcMsgUseItemResponseRecipientCannotRecieve)
21912            }
21913            _ => None,
21914        }
21915    }
21916}
21917#[derive(serde::Serialize, serde::Deserialize)]
21918#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21919pub struct CMsgApplyAutograph {
21920    #[prost(uint64, optional, tag = "1")]
21921    pub autograph_item_id: ::core::option::Option<u64>,
21922    #[prost(uint64, optional, tag = "2")]
21923    pub item_item_id: ::core::option::Option<u64>,
21924}
21925#[derive(serde::Serialize, serde::Deserialize)]
21926#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21927pub struct CMsgAdjustItemEquippedState {
21928    #[prost(uint64, optional, tag = "1")]
21929    pub item_id: ::core::option::Option<u64>,
21930    #[prost(uint32, optional, tag = "2")]
21931    pub new_class: ::core::option::Option<u32>,
21932    #[prost(uint32, optional, tag = "3")]
21933    pub new_slot: ::core::option::Option<u32>,
21934    #[prost(uint32, optional, tag = "4", default = "255")]
21935    pub style_index: ::core::option::Option<u32>,
21936}
21937#[derive(serde::Serialize, serde::Deserialize)]
21938#[derive(Clone, PartialEq, ::prost::Message)]
21939pub struct CMsgEconPlayerStrangeCountAdjustment {
21940    #[prost(uint32, optional, tag = "1")]
21941    pub account_id: ::core::option::Option<u32>,
21942    #[prost(message, repeated, tag = "2")]
21943    pub strange_count_adjustments: ::prost::alloc::vec::Vec<
21944        c_msg_econ_player_strange_count_adjustment::CStrangeCountAdjustment,
21945    >,
21946    #[prost(bool, optional, tag = "3")]
21947    pub turbo_mode: ::core::option::Option<bool>,
21948}
21949/// Nested message and enum types in `CMsgEconPlayerStrangeCountAdjustment`.
21950pub mod c_msg_econ_player_strange_count_adjustment {
21951    #[derive(serde::Serialize, serde::Deserialize)]
21952    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21953    pub struct CStrangeCountAdjustment {
21954        #[prost(uint32, optional, tag = "1")]
21955        pub event_type: ::core::option::Option<u32>,
21956        #[prost(uint64, optional, tag = "2")]
21957        pub item_id: ::core::option::Option<u64>,
21958        #[prost(uint32, optional, tag = "3")]
21959        pub adjustment: ::core::option::Option<u32>,
21960    }
21961}
21962#[derive(serde::Serialize, serde::Deserialize)]
21963#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
21964pub struct CMsgCraftingResponse {
21965    #[prost(uint64, repeated, packed = "false", tag = "1")]
21966    pub item_ids: ::prost::alloc::vec::Vec<u64>,
21967}
21968#[derive(serde::Serialize, serde::Deserialize)]
21969#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21970pub struct CMsgGcRequestStoreSalesData {
21971    #[prost(uint32, optional, tag = "1")]
21972    pub version: ::core::option::Option<u32>,
21973    #[prost(uint32, optional, tag = "2")]
21974    pub currency: ::core::option::Option<u32>,
21975}
21976#[derive(serde::Serialize, serde::Deserialize)]
21977#[derive(Clone, PartialEq, ::prost::Message)]
21978pub struct CMsgGcRequestStoreSalesDataResponse {
21979    #[prost(message, repeated, tag = "1")]
21980    pub sale_price: ::prost::alloc::vec::Vec<
21981        c_msg_gc_request_store_sales_data_response::Price,
21982    >,
21983    #[prost(uint32, optional, tag = "2")]
21984    pub version: ::core::option::Option<u32>,
21985    #[prost(uint32, optional, tag = "3")]
21986    pub expiration_time: ::core::option::Option<u32>,
21987}
21988/// Nested message and enum types in `CMsgGCRequestStoreSalesDataResponse`.
21989pub mod c_msg_gc_request_store_sales_data_response {
21990    #[derive(serde::Serialize, serde::Deserialize)]
21991    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
21992    pub struct Price {
21993        #[prost(uint32, optional, tag = "1")]
21994        pub item_def: ::core::option::Option<u32>,
21995        #[prost(uint32, optional, tag = "2")]
21996        pub price: ::core::option::Option<u32>,
21997    }
21998}
21999#[derive(serde::Serialize, serde::Deserialize)]
22000#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22001pub struct CMsgGcRequestStoreSalesDataUpToDateResponse {
22002    #[prost(uint32, optional, tag = "1")]
22003    pub version: ::core::option::Option<u32>,
22004    #[prost(uint32, optional, tag = "2")]
22005    pub expiration_time: ::core::option::Option<u32>,
22006}
22007#[derive(serde::Serialize, serde::Deserialize)]
22008#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22009pub struct CMsgGcToGcPingRequest {}
22010#[derive(serde::Serialize, serde::Deserialize)]
22011#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22012pub struct CMsgGcToGcPingResponse {}
22013#[derive(serde::Serialize, serde::Deserialize)]
22014#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22015pub struct CMsgGcToGcGetUserSessionServer {
22016    #[prost(uint32, optional, tag = "1")]
22017    pub account_id: ::core::option::Option<u32>,
22018}
22019#[derive(serde::Serialize, serde::Deserialize)]
22020#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22021pub struct CMsgGcToGcGetUserSessionServerResponse {
22022    #[prost(fixed64, optional, tag = "1")]
22023    pub server_steam_id: ::core::option::Option<u64>,
22024    #[prost(bool, optional, tag = "2")]
22025    pub is_online: ::core::option::Option<bool>,
22026}
22027#[derive(serde::Serialize, serde::Deserialize)]
22028#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22029pub struct CMsgGcToGcGetUserServerMembers {
22030    #[prost(uint32, optional, tag = "1")]
22031    pub account_id: ::core::option::Option<u32>,
22032    #[prost(uint32, optional, tag = "2")]
22033    pub max_spectators: ::core::option::Option<u32>,
22034}
22035#[derive(serde::Serialize, serde::Deserialize)]
22036#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22037pub struct CMsgGcToGcGetUserServerMembersResponse {
22038    #[prost(uint32, repeated, packed = "false", tag = "1")]
22039    pub member_account_id: ::prost::alloc::vec::Vec<u32>,
22040}
22041#[derive(serde::Serialize, serde::Deserialize)]
22042#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22043pub struct CMsgLookupMultipleAccountNames {
22044    #[prost(uint32, repeated, tag = "1")]
22045    pub accountids: ::prost::alloc::vec::Vec<u32>,
22046}
22047#[derive(serde::Serialize, serde::Deserialize)]
22048#[derive(Clone, PartialEq, ::prost::Message)]
22049pub struct CMsgLookupMultipleAccountNamesResponse {
22050    #[prost(message, repeated, tag = "1")]
22051    pub accounts: ::prost::alloc::vec::Vec<
22052        c_msg_lookup_multiple_account_names_response::Account,
22053    >,
22054}
22055/// Nested message and enum types in `CMsgLookupMultipleAccountNamesResponse`.
22056pub mod c_msg_lookup_multiple_account_names_response {
22057    #[derive(serde::Serialize, serde::Deserialize)]
22058    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22059    pub struct Account {
22060        #[prost(uint32, optional, tag = "1")]
22061        pub accountid: ::core::option::Option<u32>,
22062        #[prost(string, optional, tag = "2")]
22063        pub persona: ::core::option::Option<::prost::alloc::string::String>,
22064    }
22065}
22066#[derive(serde::Serialize, serde::Deserialize)]
22067#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22068pub struct CMsgRequestCrateItems {
22069    #[prost(uint32, optional, tag = "1")]
22070    pub crate_item_def: ::core::option::Option<u32>,
22071}
22072#[derive(serde::Serialize, serde::Deserialize)]
22073#[derive(Clone, PartialEq, ::prost::Message)]
22074pub struct CMsgRequestCrateItemsResponse {
22075    #[prost(uint32, optional, tag = "1")]
22076    pub response: ::core::option::Option<u32>,
22077    #[prost(uint32, repeated, packed = "false", tag = "2")]
22078    pub item_defs: ::prost::alloc::vec::Vec<u32>,
22079    #[prost(uint32, repeated, packed = "false", tag = "3")]
22080    pub peek_item_defs: ::prost::alloc::vec::Vec<u32>,
22081    #[prost(message, repeated, tag = "4")]
22082    pub peek_items: ::prost::alloc::vec::Vec<CsoEconItem>,
22083}
22084/// Nested message and enum types in `CMsgRequestCrateItemsResponse`.
22085pub mod c_msg_request_crate_items_response {
22086    #[derive(serde::Serialize, serde::Deserialize)]
22087    #[derive(
22088        Clone,
22089        Copy,
22090        Debug,
22091        PartialEq,
22092        Eq,
22093        Hash,
22094        PartialOrd,
22095        Ord,
22096        ::prost::Enumeration
22097    )]
22098    #[repr(i32)]
22099    pub enum EResult {
22100        KSucceeded = 0,
22101        KFailed = 1,
22102    }
22103    impl EResult {
22104        /// String value of the enum field names used in the ProtoBuf definition.
22105        ///
22106        /// The values are not transformed in any way and thus are considered stable
22107        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22108        pub fn as_str_name(&self) -> &'static str {
22109            match self {
22110                Self::KSucceeded => "k_Succeeded",
22111                Self::KFailed => "k_Failed",
22112            }
22113        }
22114        /// Creates an enum from field names used in the ProtoBuf definition.
22115        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22116            match value {
22117                "k_Succeeded" => Some(Self::KSucceeded),
22118                "k_Failed" => Some(Self::KFailed),
22119                _ => None,
22120            }
22121        }
22122    }
22123}
22124#[derive(serde::Serialize, serde::Deserialize)]
22125#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22126pub struct CMsgRequestCrateEscalationLevel {
22127    #[prost(uint32, optional, tag = "1")]
22128    pub crate_item_def: ::core::option::Option<u32>,
22129}
22130#[derive(serde::Serialize, serde::Deserialize)]
22131#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22132pub struct CMsgRequestCrateEscalationLevelResponse {
22133    #[prost(uint32, optional, tag = "1")]
22134    pub response: ::core::option::Option<u32>,
22135    #[prost(uint32, optional, tag = "2")]
22136    pub escalation_level0: ::core::option::Option<u32>,
22137    #[prost(uint32, optional, tag = "3")]
22138    pub escalation_level1: ::core::option::Option<u32>,
22139    #[prost(uint32, optional, tag = "4")]
22140    pub escalation_level2: ::core::option::Option<u32>,
22141    #[prost(uint32, optional, tag = "5")]
22142    pub escalation_level3: ::core::option::Option<u32>,
22143}
22144/// Nested message and enum types in `CMsgRequestCrateEscalationLevelResponse`.
22145pub mod c_msg_request_crate_escalation_level_response {
22146    #[derive(serde::Serialize, serde::Deserialize)]
22147    #[derive(
22148        Clone,
22149        Copy,
22150        Debug,
22151        PartialEq,
22152        Eq,
22153        Hash,
22154        PartialOrd,
22155        Ord,
22156        ::prost::Enumeration
22157    )]
22158    #[repr(i32)]
22159    pub enum EResult {
22160        KSucceeded = 0,
22161        KFailed = 1,
22162    }
22163    impl EResult {
22164        /// String value of the enum field names used in the ProtoBuf definition.
22165        ///
22166        /// The values are not transformed in any way and thus are considered stable
22167        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22168        pub fn as_str_name(&self) -> &'static str {
22169            match self {
22170                Self::KSucceeded => "k_Succeeded",
22171                Self::KFailed => "k_Failed",
22172            }
22173        }
22174        /// Creates an enum from field names used in the ProtoBuf definition.
22175        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22176            match value {
22177                "k_Succeeded" => Some(Self::KSucceeded),
22178                "k_Failed" => Some(Self::KFailed),
22179                _ => None,
22180            }
22181        }
22182    }
22183}
22184#[derive(serde::Serialize, serde::Deserialize)]
22185#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22186pub struct CMsgGcToGcCanUseDropRateBonus {
22187    #[prost(uint32, optional, tag = "1")]
22188    pub account_id: ::core::option::Option<u32>,
22189    #[prost(float, optional, tag = "2")]
22190    pub drop_rate_bonus: ::core::option::Option<f32>,
22191    #[prost(uint32, optional, tag = "3")]
22192    pub booster_type: ::core::option::Option<u32>,
22193    #[prost(uint32, optional, tag = "4")]
22194    pub exclusive_item_def: ::core::option::Option<u32>,
22195    #[prost(bool, optional, tag = "5")]
22196    pub allow_equal_rate: ::core::option::Option<bool>,
22197}
22198#[derive(serde::Serialize, serde::Deserialize)]
22199#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22200pub struct CMsgSqlAddDropRateBonus {
22201    #[prost(uint32, optional, tag = "1")]
22202    pub account_id: ::core::option::Option<u32>,
22203    #[prost(uint64, optional, tag = "2")]
22204    pub item_id: ::core::option::Option<u64>,
22205    #[prost(uint32, optional, tag = "3")]
22206    pub item_def: ::core::option::Option<u32>,
22207    #[prost(float, optional, tag = "4")]
22208    pub drop_rate_bonus: ::core::option::Option<f32>,
22209    #[prost(uint32, optional, tag = "5")]
22210    pub booster_type: ::core::option::Option<u32>,
22211    #[prost(uint32, optional, tag = "6")]
22212    pub seconds_duration: ::core::option::Option<u32>,
22213    #[prost(uint32, optional, tag = "7")]
22214    pub end_time_stamp: ::core::option::Option<u32>,
22215}
22216#[derive(serde::Serialize, serde::Deserialize)]
22217#[derive(Clone, Copy, PartialEq, ::prost::Message)]
22218pub struct CMsgSqlUpgradeBattleBooster {
22219    #[prost(uint32, optional, tag = "1")]
22220    pub account_id: ::core::option::Option<u32>,
22221    #[prost(uint32, optional, tag = "2")]
22222    pub item_def: ::core::option::Option<u32>,
22223    #[prost(float, optional, tag = "3")]
22224    pub bonus_to_add: ::core::option::Option<f32>,
22225    #[prost(uint32, optional, tag = "4")]
22226    pub booster_type: ::core::option::Option<u32>,
22227}
22228#[derive(serde::Serialize, serde::Deserialize)]
22229#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22230pub struct CMsgGcToGcRefreshSoCache {
22231    #[prost(uint32, optional, tag = "1")]
22232    pub account_id: ::core::option::Option<u32>,
22233    #[prost(bool, optional, tag = "2")]
22234    pub reload: ::core::option::Option<bool>,
22235}
22236#[derive(serde::Serialize, serde::Deserialize)]
22237#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22238pub struct CMsgGcToGcAddSubscriptionTime {
22239    #[prost(uint32, optional, tag = "1")]
22240    pub account_id: ::core::option::Option<u32>,
22241    #[prost(uint32, repeated, packed = "false", tag = "2")]
22242    pub matching_subscription_def_indexes: ::prost::alloc::vec::Vec<u32>,
22243    #[prost(uint32, optional, tag = "3")]
22244    pub additional_seconds: ::core::option::Option<u32>,
22245}
22246#[derive(serde::Serialize, serde::Deserialize)]
22247#[derive(Clone, PartialEq, ::prost::Message)]
22248pub struct CMsgGcToGcGrantAccountRolledItems {
22249    #[prost(uint32, optional, tag = "1")]
22250    pub account_id: ::core::option::Option<u32>,
22251    #[prost(message, repeated, tag = "2")]
22252    pub items: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_grant_account_rolled_items::Item>,
22253    #[prost(uint32, optional, tag = "3")]
22254    pub audit_action: ::core::option::Option<u32>,
22255    #[prost(uint64, optional, tag = "4")]
22256    pub audit_data: ::core::option::Option<u64>,
22257}
22258/// Nested message and enum types in `CMsgGCToGCGrantAccountRolledItems`.
22259pub mod c_msg_gc_to_gc_grant_account_rolled_items {
22260    #[derive(serde::Serialize, serde::Deserialize)]
22261    #[derive(Clone, PartialEq, ::prost::Message)]
22262    pub struct Item {
22263        #[prost(uint32, optional, tag = "1")]
22264        pub item_def: ::core::option::Option<u32>,
22265        #[prost(string, repeated, tag = "2")]
22266        pub loot_lists: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22267        #[prost(bool, optional, tag = "3")]
22268        pub ignore_limit: ::core::option::Option<bool>,
22269        #[prost(uint32, optional, tag = "4")]
22270        pub origin: ::core::option::Option<u32>,
22271        #[prost(message, repeated, tag = "5")]
22272        pub dynamic_attributes: ::prost::alloc::vec::Vec<item::DynamicAttribute>,
22273        #[prost(message, repeated, tag = "6")]
22274        pub additional_audit_entries: ::prost::alloc::vec::Vec<
22275            item::AdditionalAuditEntry,
22276        >,
22277        #[prost(uint32, optional, tag = "7")]
22278        pub inventory_token: ::core::option::Option<u32>,
22279        #[prost(int32, optional, tag = "8", default = "-1")]
22280        pub quality: ::core::option::Option<i32>,
22281    }
22282    /// Nested message and enum types in `Item`.
22283    pub mod item {
22284        #[derive(serde::Serialize, serde::Deserialize)]
22285        #[derive(Clone, PartialEq, ::prost::Message)]
22286        pub struct DynamicAttribute {
22287            #[prost(string, optional, tag = "1")]
22288            pub name: ::core::option::Option<::prost::alloc::string::String>,
22289            #[prost(uint32, optional, tag = "2")]
22290            pub value_uint32: ::core::option::Option<u32>,
22291            #[prost(float, optional, tag = "3")]
22292            pub value_float: ::core::option::Option<f32>,
22293            #[prost(string, optional, tag = "4")]
22294            pub value_string: ::core::option::Option<::prost::alloc::string::String>,
22295        }
22296        #[derive(serde::Serialize, serde::Deserialize)]
22297        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22298        pub struct AdditionalAuditEntry {
22299            #[prost(uint32, optional, tag = "1")]
22300            pub owner_account_id: ::core::option::Option<u32>,
22301            #[prost(uint32, optional, tag = "2")]
22302            pub audit_action: ::core::option::Option<u32>,
22303            #[prost(uint64, optional, tag = "3")]
22304            pub audit_data: ::core::option::Option<u64>,
22305        }
22306    }
22307}
22308#[derive(serde::Serialize, serde::Deserialize)]
22309#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22310pub struct CMsgGcToGcBetaDeleteItems {
22311    #[prost(uint32, optional, tag = "1")]
22312    pub account_id: ::core::option::Option<u32>,
22313    #[prost(uint64, repeated, packed = "false", tag = "2")]
22314    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22315    #[prost(uint32, repeated, packed = "false", tag = "3")]
22316    pub item_defs: ::prost::alloc::vec::Vec<u32>,
22317}
22318#[derive(serde::Serialize, serde::Deserialize)]
22319#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22320pub struct CMsgGcToGcGrantSelfMadeItemToAccount {
22321    #[prost(uint32, optional, tag = "1")]
22322    pub item_def_index: ::core::option::Option<u32>,
22323    #[prost(uint32, optional, tag = "2")]
22324    pub accountid: ::core::option::Option<u32>,
22325}
22326#[derive(serde::Serialize, serde::Deserialize)]
22327#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22328pub struct CMsgGcToGcUnlockCrate {
22329    #[prost(uint32, optional, tag = "1")]
22330    pub account_id: ::core::option::Option<u32>,
22331    #[prost(uint64, optional, tag = "2")]
22332    pub crate_item_id: ::core::option::Option<u64>,
22333    #[prost(uint64, optional, tag = "3")]
22334    pub key_item_id: ::core::option::Option<u64>,
22335}
22336#[derive(serde::Serialize, serde::Deserialize)]
22337#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22338pub struct CMsgUseItem {
22339    #[prost(uint64, optional, tag = "1")]
22340    pub item_id: ::core::option::Option<u64>,
22341    #[prost(fixed64, optional, tag = "2")]
22342    pub target_steam_id: ::core::option::Option<u64>,
22343    #[prost(uint32, repeated, packed = "false", tag = "3")]
22344    pub gift_potential_targets: ::prost::alloc::vec::Vec<u32>,
22345    #[prost(uint32, optional, tag = "4")]
22346    pub duel_class_lock: ::core::option::Option<u32>,
22347    #[prost(uint64, optional, tag = "5")]
22348    pub initiator_steam_id: ::core::option::Option<u64>,
22349    #[prost(bool, optional, tag = "6")]
22350    pub itempack_ack_immediately: ::core::option::Option<bool>,
22351}
22352#[derive(serde::Serialize, serde::Deserialize)]
22353#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22354pub struct CMsgServerUseItem {
22355    #[prost(uint32, optional, tag = "1")]
22356    pub initiator_account_id: ::core::option::Option<u32>,
22357    #[prost(message, optional, tag = "2")]
22358    pub use_item_msg: ::core::option::Option<CMsgUseItem>,
22359}
22360#[derive(serde::Serialize, serde::Deserialize)]
22361#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22362pub struct CMsgUseMultipleItems {
22363    #[prost(uint64, repeated, packed = "false", tag = "1")]
22364    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22365}
22366#[derive(serde::Serialize, serde::Deserialize)]
22367#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22368pub struct CgcStoreRechargeRedirectLineItem {
22369    #[prost(uint32, optional, tag = "1")]
22370    pub item_def_id: ::core::option::Option<u32>,
22371    #[prost(uint32, optional, tag = "2")]
22372    pub quantity: ::core::option::Option<u32>,
22373}
22374#[derive(serde::Serialize, serde::Deserialize)]
22375#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22376pub struct CMsgGcEconSqlWorkItemEmbeddedRollbackData {
22377    #[prost(uint32, optional, tag = "1")]
22378    pub account_id: ::core::option::Option<u32>,
22379    #[prost(uint64, optional, tag = "2")]
22380    pub deleted_item_id: ::core::option::Option<u64>,
22381    #[prost(uint32, optional, tag = "3")]
22382    pub old_audit_action: ::core::option::Option<u32>,
22383    #[prost(uint32, optional, tag = "4")]
22384    pub new_audit_action: ::core::option::Option<u32>,
22385    #[prost(uint32, optional, tag = "5")]
22386    pub expected_audit_action: ::core::option::Option<u32>,
22387}
22388#[derive(serde::Serialize, serde::Deserialize)]
22389#[derive(Clone, PartialEq, ::prost::Message)]
22390pub struct CMsgCraftStatue {
22391    #[prost(uint32, optional, tag = "1")]
22392    pub heroid: ::core::option::Option<u32>,
22393    #[prost(string, optional, tag = "2")]
22394    pub sequencename: ::core::option::Option<::prost::alloc::string::String>,
22395    #[prost(float, optional, tag = "3")]
22396    pub cycle: ::core::option::Option<f32>,
22397    #[prost(string, optional, tag = "4")]
22398    pub description: ::core::option::Option<::prost::alloc::string::String>,
22399    #[prost(uint32, optional, tag = "5")]
22400    pub pedestal_itemdef: ::core::option::Option<u32>,
22401    #[prost(uint64, optional, tag = "6")]
22402    pub toolid: ::core::option::Option<u64>,
22403}
22404#[derive(serde::Serialize, serde::Deserialize)]
22405#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22406pub struct CMsgRedeemCode {
22407    #[prost(string, optional, tag = "1")]
22408    pub code: ::core::option::Option<::prost::alloc::string::String>,
22409}
22410#[derive(serde::Serialize, serde::Deserialize)]
22411#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22412pub struct CMsgRedeemCodeResponse {
22413    #[prost(uint32, optional, tag = "1")]
22414    pub response: ::core::option::Option<u32>,
22415    #[prost(uint64, optional, tag = "2")]
22416    pub item_id: ::core::option::Option<u64>,
22417}
22418/// Nested message and enum types in `CMsgRedeemCodeResponse`.
22419pub mod c_msg_redeem_code_response {
22420    #[derive(serde::Serialize, serde::Deserialize)]
22421    #[derive(
22422        Clone,
22423        Copy,
22424        Debug,
22425        PartialEq,
22426        Eq,
22427        Hash,
22428        PartialOrd,
22429        Ord,
22430        ::prost::Enumeration
22431    )]
22432    #[repr(i32)]
22433    pub enum EResultCode {
22434        KSucceeded = 0,
22435        KFailedCodeNotFound = 1,
22436        KFailedCodeAlreadyUsed = 2,
22437        KFailedOtherError = 3,
22438    }
22439    impl EResultCode {
22440        /// String value of the enum field names used in the ProtoBuf definition.
22441        ///
22442        /// The values are not transformed in any way and thus are considered stable
22443        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22444        pub fn as_str_name(&self) -> &'static str {
22445            match self {
22446                Self::KSucceeded => "k_Succeeded",
22447                Self::KFailedCodeNotFound => "k_Failed_CodeNotFound",
22448                Self::KFailedCodeAlreadyUsed => "k_Failed_CodeAlreadyUsed",
22449                Self::KFailedOtherError => "k_Failed_OtherError",
22450            }
22451        }
22452        /// Creates an enum from field names used in the ProtoBuf definition.
22453        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22454            match value {
22455                "k_Succeeded" => Some(Self::KSucceeded),
22456                "k_Failed_CodeNotFound" => Some(Self::KFailedCodeNotFound),
22457                "k_Failed_CodeAlreadyUsed" => Some(Self::KFailedCodeAlreadyUsed),
22458                "k_Failed_OtherError" => Some(Self::KFailedOtherError),
22459                _ => None,
22460            }
22461        }
22462    }
22463}
22464#[derive(serde::Serialize, serde::Deserialize)]
22465#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22466pub struct CMsgDevNewItemRequest {
22467    #[prost(string, optional, tag = "3")]
22468    pub item_def_name: ::core::option::Option<::prost::alloc::string::String>,
22469    #[prost(string, optional, tag = "4")]
22470    pub loot_list_name: ::core::option::Option<::prost::alloc::string::String>,
22471    #[prost(string, repeated, tag = "5")]
22472    pub attr_def_name: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22473    #[prost(string, repeated, tag = "6")]
22474    pub attr_value: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
22475    #[prost(uint32, optional, tag = "7")]
22476    pub item_quality: ::core::option::Option<u32>,
22477}
22478#[derive(serde::Serialize, serde::Deserialize)]
22479#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22480pub struct CMsgDevNewItemRequestResponse {
22481    #[prost(bool, optional, tag = "1")]
22482    pub success: ::core::option::Option<bool>,
22483}
22484#[derive(serde::Serialize, serde::Deserialize)]
22485#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22486pub struct CMsgDevUnlockAllItemStyles {
22487    #[prost(uint64, optional, tag = "1")]
22488    pub item_id: ::core::option::Option<u64>,
22489}
22490#[derive(serde::Serialize, serde::Deserialize)]
22491#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22492pub struct CMsgDevUnlockAllItemStylesResponse {
22493    #[prost(bool, optional, tag = "1")]
22494    pub success: ::core::option::Option<bool>,
22495}
22496#[derive(serde::Serialize, serde::Deserialize)]
22497#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22498pub struct CMsgGcGetAccountSubscriptionItem {
22499    #[prost(uint32, optional, tag = "1")]
22500    pub account_id: ::core::option::Option<u32>,
22501}
22502#[derive(serde::Serialize, serde::Deserialize)]
22503#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22504pub struct CMsgGcGetAccountSubscriptionItemResponse {
22505    #[prost(uint32, optional, tag = "1")]
22506    pub def_index: ::core::option::Option<u32>,
22507}
22508#[derive(serde::Serialize, serde::Deserialize)]
22509#[derive(Clone, PartialEq, ::prost::Message)]
22510pub struct CMsgGcAddGiftItem {
22511    #[prost(uint32, optional, tag = "1")]
22512    pub gifter_account_id: ::core::option::Option<u32>,
22513    #[prost(uint32, optional, tag = "2")]
22514    pub receiver_account_id: ::core::option::Option<u32>,
22515    #[prost(message, optional, tag = "3")]
22516    pub wrapped_item: ::core::option::Option<CsoEconItem>,
22517    #[prost(string, optional, tag = "4")]
22518    pub gift_message: ::core::option::Option<::prost::alloc::string::String>,
22519    #[prost(bool, optional, tag = "5")]
22520    pub is_wallet_cash_trusted: ::core::option::Option<bool>,
22521}
22522#[derive(serde::Serialize, serde::Deserialize)]
22523#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22524pub struct CMsgClientToGcWrapAndDeliverGift {
22525    #[prost(uint64, optional, tag = "1")]
22526    pub item_id: ::core::option::Option<u64>,
22527    #[prost(uint32, optional, tag = "2")]
22528    pub give_to_account_id: ::core::option::Option<u32>,
22529    #[prost(string, optional, tag = "3")]
22530    pub gift_message: ::core::option::Option<::prost::alloc::string::String>,
22531}
22532#[derive(serde::Serialize, serde::Deserialize)]
22533#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22534pub struct CMsgSqlgcToGcRevokeUntrustedGift {
22535    #[prost(uint32, optional, tag = "1")]
22536    pub account_id: ::core::option::Option<u32>,
22537    #[prost(uint64, optional, tag = "4")]
22538    pub sent_item_id: ::core::option::Option<u64>,
22539}
22540#[derive(serde::Serialize, serde::Deserialize)]
22541#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22542pub struct CMsgClientToGcWrapAndDeliverGiftResponse {
22543    #[prost(
22544        enumeration = "EgcMsgResponse",
22545        optional,
22546        tag = "1",
22547        default = "KEgcMsgResponseOk"
22548    )]
22549    pub response: ::core::option::Option<i32>,
22550    #[prost(uint32, optional, tag = "2")]
22551    pub gifting_charge_uses: ::core::option::Option<u32>,
22552    #[prost(int32, optional, tag = "3")]
22553    pub gifting_charge_max: ::core::option::Option<i32>,
22554    #[prost(uint32, optional, tag = "4")]
22555    pub gifting_uses: ::core::option::Option<u32>,
22556    #[prost(int32, optional, tag = "5")]
22557    pub gifting_max: ::core::option::Option<i32>,
22558    #[prost(uint32, optional, tag = "6")]
22559    pub gifting_window_hours: ::core::option::Option<u32>,
22560    #[prost(
22561        enumeration = "EgcMsgInitiateTradeResponse",
22562        optional,
22563        tag = "7",
22564        default = "KEgcMsgInitiateTradeResponseAccepted"
22565    )]
22566    pub trade_restriction: ::core::option::Option<i32>,
22567}
22568#[derive(serde::Serialize, serde::Deserialize)]
22569#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22570pub struct CMsgClientToGcUnwrapGift {
22571    #[prost(uint64, optional, tag = "1")]
22572    pub item_id: ::core::option::Option<u64>,
22573}
22574#[derive(serde::Serialize, serde::Deserialize)]
22575#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22576pub struct CMsgClientToGcGetGiftPermissions {}
22577#[derive(serde::Serialize, serde::Deserialize)]
22578#[derive(Clone, PartialEq, ::prost::Message)]
22579pub struct CMsgClientToGcGetGiftPermissionsResponse {
22580    #[prost(bool, optional, tag = "1")]
22581    pub is_unlimited: ::core::option::Option<bool>,
22582    #[prost(bool, optional, tag = "3")]
22583    pub has_two_factor: ::core::option::Option<bool>,
22584    #[prost(
22585        enumeration = "EgcMsgInitiateTradeResponse",
22586        optional,
22587        tag = "6",
22588        default = "KEgcMsgInitiateTradeResponseAccepted"
22589    )]
22590    pub sender_permission: ::core::option::Option<i32>,
22591    #[prost(uint32, optional, tag = "7")]
22592    pub friendship_age_requirement: ::core::option::Option<u32>,
22593    #[prost(uint32, optional, tag = "8")]
22594    pub friendship_age_requirement_two_factor: ::core::option::Option<u32>,
22595    #[prost(message, repeated, tag = "9")]
22596    pub friend_permissions: ::prost::alloc::vec::Vec<
22597        c_msg_client_to_gc_get_gift_permissions_response::FriendPermission,
22598    >,
22599}
22600/// Nested message and enum types in `CMsgClientToGCGetGiftPermissionsResponse`.
22601pub mod c_msg_client_to_gc_get_gift_permissions_response {
22602    #[derive(serde::Serialize, serde::Deserialize)]
22603    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22604    pub struct FriendPermission {
22605        #[prost(uint32, optional, tag = "1")]
22606        pub account_id: ::core::option::Option<u32>,
22607        #[prost(
22608            enumeration = "super::EgcMsgInitiateTradeResponse",
22609            optional,
22610            tag = "2",
22611            default = "KEgcMsgInitiateTradeResponseAccepted"
22612        )]
22613        pub permission: ::core::option::Option<i32>,
22614    }
22615}
22616#[derive(serde::Serialize, serde::Deserialize)]
22617#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22618pub struct CMsgClientToGcUnpackBundle {
22619    #[prost(uint64, optional, tag = "1")]
22620    pub item_id: ::core::option::Option<u64>,
22621}
22622#[derive(serde::Serialize, serde::Deserialize)]
22623#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22624pub struct CMsgClientToGcUnpackBundleResponse {
22625    #[prost(uint64, repeated, packed = "false", tag = "1")]
22626    pub unpacked_item_ids: ::prost::alloc::vec::Vec<u64>,
22627    #[prost(
22628        enumeration = "c_msg_client_to_gc_unpack_bundle_response::EUnpackBundle",
22629        optional,
22630        tag = "2",
22631        default = "KUnpackBundleSucceeded"
22632    )]
22633    pub response: ::core::option::Option<i32>,
22634    #[prost(uint32, repeated, packed = "false", tag = "3")]
22635    pub unpacked_item_def_indexes: ::prost::alloc::vec::Vec<u32>,
22636}
22637/// Nested message and enum types in `CMsgClientToGCUnpackBundleResponse`.
22638pub mod c_msg_client_to_gc_unpack_bundle_response {
22639    #[derive(serde::Serialize, serde::Deserialize)]
22640    #[derive(
22641        Clone,
22642        Copy,
22643        Debug,
22644        PartialEq,
22645        Eq,
22646        Hash,
22647        PartialOrd,
22648        Ord,
22649        ::prost::Enumeration
22650    )]
22651    #[repr(i32)]
22652    pub enum EUnpackBundle {
22653        KUnpackBundleSucceeded = 0,
22654        KUnpackBundleFailedItemIsNotBundle = 1,
22655        KUnpackBundleFailedUnableToCreateContainedItem = 2,
22656        KUnpackBundleFailedSoCacheError = 3,
22657        KUnpackBundleFailedItemIsInvalid = 4,
22658        KUnpackBundleFailedBadItemQuantity = 5,
22659        KUnpackBundleFailedUnableToDeleteItem = 6,
22660    }
22661    impl EUnpackBundle {
22662        /// String value of the enum field names used in the ProtoBuf definition.
22663        ///
22664        /// The values are not transformed in any way and thus are considered stable
22665        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22666        pub fn as_str_name(&self) -> &'static str {
22667            match self {
22668                Self::KUnpackBundleSucceeded => "k_UnpackBundle_Succeeded",
22669                Self::KUnpackBundleFailedItemIsNotBundle => {
22670                    "k_UnpackBundle_Failed_ItemIsNotBundle"
22671                }
22672                Self::KUnpackBundleFailedUnableToCreateContainedItem => {
22673                    "k_UnpackBundle_Failed_UnableToCreateContainedItem"
22674                }
22675                Self::KUnpackBundleFailedSoCacheError => {
22676                    "k_UnpackBundle_Failed_SOCacheError"
22677                }
22678                Self::KUnpackBundleFailedItemIsInvalid => {
22679                    "k_UnpackBundle_Failed_ItemIsInvalid"
22680                }
22681                Self::KUnpackBundleFailedBadItemQuantity => {
22682                    "k_UnpackBundle_Failed_BadItemQuantity"
22683                }
22684                Self::KUnpackBundleFailedUnableToDeleteItem => {
22685                    "k_UnpackBundle_Failed_UnableToDeleteItem"
22686                }
22687            }
22688        }
22689        /// Creates an enum from field names used in the ProtoBuf definition.
22690        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22691            match value {
22692                "k_UnpackBundle_Succeeded" => Some(Self::KUnpackBundleSucceeded),
22693                "k_UnpackBundle_Failed_ItemIsNotBundle" => {
22694                    Some(Self::KUnpackBundleFailedItemIsNotBundle)
22695                }
22696                "k_UnpackBundle_Failed_UnableToCreateContainedItem" => {
22697                    Some(Self::KUnpackBundleFailedUnableToCreateContainedItem)
22698                }
22699                "k_UnpackBundle_Failed_SOCacheError" => {
22700                    Some(Self::KUnpackBundleFailedSoCacheError)
22701                }
22702                "k_UnpackBundle_Failed_ItemIsInvalid" => {
22703                    Some(Self::KUnpackBundleFailedItemIsInvalid)
22704                }
22705                "k_UnpackBundle_Failed_BadItemQuantity" => {
22706                    Some(Self::KUnpackBundleFailedBadItemQuantity)
22707                }
22708                "k_UnpackBundle_Failed_UnableToDeleteItem" => {
22709                    Some(Self::KUnpackBundleFailedUnableToDeleteItem)
22710                }
22711                _ => None,
22712            }
22713        }
22714    }
22715}
22716#[derive(serde::Serialize, serde::Deserialize)]
22717#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22718pub struct CMsgClientToGcPackBundle {
22719    #[prost(uint64, repeated, packed = "false", tag = "1")]
22720    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22721    #[prost(uint32, optional, tag = "2")]
22722    pub bundle_item_def_index: ::core::option::Option<u32>,
22723}
22724#[derive(serde::Serialize, serde::Deserialize)]
22725#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22726pub struct CMsgClientToGcPackBundleResponse {
22727    #[prost(uint64, optional, tag = "1")]
22728    pub item_id: ::core::option::Option<u64>,
22729    #[prost(
22730        enumeration = "c_msg_client_to_gc_pack_bundle_response::EPackBundle",
22731        optional,
22732        tag = "2",
22733        default = "KPackBundleSucceeded"
22734    )]
22735    pub response: ::core::option::Option<i32>,
22736}
22737/// Nested message and enum types in `CMsgClientToGCPackBundleResponse`.
22738pub mod c_msg_client_to_gc_pack_bundle_response {
22739    #[derive(serde::Serialize, serde::Deserialize)]
22740    #[derive(
22741        Clone,
22742        Copy,
22743        Debug,
22744        PartialEq,
22745        Eq,
22746        Hash,
22747        PartialOrd,
22748        Ord,
22749        ::prost::Enumeration
22750    )]
22751    #[repr(i32)]
22752    pub enum EPackBundle {
22753        KPackBundleSucceeded = 0,
22754        KPackBundleFailedInternalError = 1,
22755        KPackBundleFailedItemIsNotBundle = 2,
22756        KPackBundleFailedSoCacheError = 3,
22757        KPackBundleFailedItemIsInvalid = 4,
22758        KPackBundleFailedBadItemQuantity = 5,
22759        KPackBundleFailedUnableToDeleteItem = 6,
22760        KPackBundleFailedBundleCannotBePacked = 7,
22761        KPackBundleFailedItemIsUntradeable = 8,
22762        KPackBundleFailedItemIsEquipped = 9,
22763        KPackBundleFailedItemHasGems = 10,
22764        KPackBundleFailedItemMixedQuality = 11,
22765        KPackBundleFailedItemInvalidQuality = 12,
22766        KPackBundleFailedItemIsNonEconomy = 13,
22767        KPackBundleFailedDisabled = 14,
22768    }
22769    impl EPackBundle {
22770        /// String value of the enum field names used in the ProtoBuf definition.
22771        ///
22772        /// The values are not transformed in any way and thus are considered stable
22773        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22774        pub fn as_str_name(&self) -> &'static str {
22775            match self {
22776                Self::KPackBundleSucceeded => "k_PackBundle_Succeeded",
22777                Self::KPackBundleFailedInternalError => {
22778                    "k_PackBundle_Failed_InternalError"
22779                }
22780                Self::KPackBundleFailedItemIsNotBundle => {
22781                    "k_PackBundle_Failed_ItemIsNotBundle"
22782                }
22783                Self::KPackBundleFailedSoCacheError => "k_PackBundle_Failed_SOCacheError",
22784                Self::KPackBundleFailedItemIsInvalid => {
22785                    "k_PackBundle_Failed_ItemIsInvalid"
22786                }
22787                Self::KPackBundleFailedBadItemQuantity => {
22788                    "k_PackBundle_Failed_BadItemQuantity"
22789                }
22790                Self::KPackBundleFailedUnableToDeleteItem => {
22791                    "k_PackBundle_Failed_UnableToDeleteItem"
22792                }
22793                Self::KPackBundleFailedBundleCannotBePacked => {
22794                    "k_PackBundle_Failed_BundleCannotBePacked"
22795                }
22796                Self::KPackBundleFailedItemIsUntradeable => {
22797                    "k_PackBundle_Failed_ItemIsUntradeable"
22798                }
22799                Self::KPackBundleFailedItemIsEquipped => {
22800                    "k_PackBundle_Failed_ItemIsEquipped"
22801                }
22802                Self::KPackBundleFailedItemHasGems => "k_PackBundle_Failed_ItemHasGems",
22803                Self::KPackBundleFailedItemMixedQuality => {
22804                    "k_PackBundle_Failed_ItemMixedQuality"
22805                }
22806                Self::KPackBundleFailedItemInvalidQuality => {
22807                    "k_PackBundle_Failed_ItemInvalidQuality"
22808                }
22809                Self::KPackBundleFailedItemIsNonEconomy => {
22810                    "k_PackBundle_Failed_ItemIsNonEconomy"
22811                }
22812                Self::KPackBundleFailedDisabled => "k_PackBundle_Failed_Disabled",
22813            }
22814        }
22815        /// Creates an enum from field names used in the ProtoBuf definition.
22816        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22817            match value {
22818                "k_PackBundle_Succeeded" => Some(Self::KPackBundleSucceeded),
22819                "k_PackBundle_Failed_InternalError" => {
22820                    Some(Self::KPackBundleFailedInternalError)
22821                }
22822                "k_PackBundle_Failed_ItemIsNotBundle" => {
22823                    Some(Self::KPackBundleFailedItemIsNotBundle)
22824                }
22825                "k_PackBundle_Failed_SOCacheError" => {
22826                    Some(Self::KPackBundleFailedSoCacheError)
22827                }
22828                "k_PackBundle_Failed_ItemIsInvalid" => {
22829                    Some(Self::KPackBundleFailedItemIsInvalid)
22830                }
22831                "k_PackBundle_Failed_BadItemQuantity" => {
22832                    Some(Self::KPackBundleFailedBadItemQuantity)
22833                }
22834                "k_PackBundle_Failed_UnableToDeleteItem" => {
22835                    Some(Self::KPackBundleFailedUnableToDeleteItem)
22836                }
22837                "k_PackBundle_Failed_BundleCannotBePacked" => {
22838                    Some(Self::KPackBundleFailedBundleCannotBePacked)
22839                }
22840                "k_PackBundle_Failed_ItemIsUntradeable" => {
22841                    Some(Self::KPackBundleFailedItemIsUntradeable)
22842                }
22843                "k_PackBundle_Failed_ItemIsEquipped" => {
22844                    Some(Self::KPackBundleFailedItemIsEquipped)
22845                }
22846                "k_PackBundle_Failed_ItemHasGems" => {
22847                    Some(Self::KPackBundleFailedItemHasGems)
22848                }
22849                "k_PackBundle_Failed_ItemMixedQuality" => {
22850                    Some(Self::KPackBundleFailedItemMixedQuality)
22851                }
22852                "k_PackBundle_Failed_ItemInvalidQuality" => {
22853                    Some(Self::KPackBundleFailedItemInvalidQuality)
22854                }
22855                "k_PackBundle_Failed_ItemIsNonEconomy" => {
22856                    Some(Self::KPackBundleFailedItemIsNonEconomy)
22857                }
22858                "k_PackBundle_Failed_Disabled" => Some(Self::KPackBundleFailedDisabled),
22859                _ => None,
22860            }
22861        }
22862    }
22863}
22864#[derive(serde::Serialize, serde::Deserialize)]
22865#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22866pub struct CMsgGcToClientStoreTransactionCompleted {
22867    #[prost(uint64, optional, tag = "1")]
22868    pub txn_id: ::core::option::Option<u64>,
22869    #[prost(uint64, repeated, packed = "false", tag = "2")]
22870    pub item_ids: ::prost::alloc::vec::Vec<u64>,
22871}
22872#[derive(serde::Serialize, serde::Deserialize)]
22873#[derive(Clone, PartialEq, ::prost::Message)]
22874pub struct CMsgClientToGcEquipItems {
22875    #[prost(message, repeated, tag = "1")]
22876    pub equips: ::prost::alloc::vec::Vec<CMsgAdjustItemEquippedState>,
22877}
22878#[derive(serde::Serialize, serde::Deserialize)]
22879#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22880pub struct CMsgClientToGcEquipItemsResponse {
22881    #[prost(fixed64, optional, tag = "1")]
22882    pub so_cache_version_id: ::core::option::Option<u64>,
22883}
22884#[derive(serde::Serialize, serde::Deserialize)]
22885#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22886pub struct CMsgClientToGcSetItemStyle {
22887    #[prost(uint64, optional, tag = "1")]
22888    pub item_id: ::core::option::Option<u64>,
22889    #[prost(uint32, optional, tag = "2", default = "255")]
22890    pub style_index: ::core::option::Option<u32>,
22891}
22892#[derive(serde::Serialize, serde::Deserialize)]
22893#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22894pub struct CMsgClientToGcSetItemStyleResponse {
22895    #[prost(
22896        enumeration = "c_msg_client_to_gc_set_item_style_response::ESetStyle",
22897        optional,
22898        tag = "1",
22899        default = "KSetStyleSucceeded"
22900    )]
22901    pub response: ::core::option::Option<i32>,
22902}
22903/// Nested message and enum types in `CMsgClientToGCSetItemStyleResponse`.
22904pub mod c_msg_client_to_gc_set_item_style_response {
22905    #[derive(serde::Serialize, serde::Deserialize)]
22906    #[derive(
22907        Clone,
22908        Copy,
22909        Debug,
22910        PartialEq,
22911        Eq,
22912        Hash,
22913        PartialOrd,
22914        Ord,
22915        ::prost::Enumeration
22916    )]
22917    #[repr(i32)]
22918    pub enum ESetStyle {
22919        KSetStyleSucceeded = 0,
22920        KSetStyleFailed = 1,
22921        KSetStyleFailedStyleIsLocked = 2,
22922    }
22923    impl ESetStyle {
22924        /// String value of the enum field names used in the ProtoBuf definition.
22925        ///
22926        /// The values are not transformed in any way and thus are considered stable
22927        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
22928        pub fn as_str_name(&self) -> &'static str {
22929            match self {
22930                Self::KSetStyleSucceeded => "k_SetStyle_Succeeded",
22931                Self::KSetStyleFailed => "k_SetStyle_Failed",
22932                Self::KSetStyleFailedStyleIsLocked => "k_SetStyle_Failed_StyleIsLocked",
22933            }
22934        }
22935        /// Creates an enum from field names used in the ProtoBuf definition.
22936        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
22937            match value {
22938                "k_SetStyle_Succeeded" => Some(Self::KSetStyleSucceeded),
22939                "k_SetStyle_Failed" => Some(Self::KSetStyleFailed),
22940                "k_SetStyle_Failed_StyleIsLocked" => {
22941                    Some(Self::KSetStyleFailedStyleIsLocked)
22942                }
22943                _ => None,
22944            }
22945        }
22946    }
22947}
22948#[derive(serde::Serialize, serde::Deserialize)]
22949#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
22950pub struct CMsgClientToGcUnlockItemStyle {
22951    #[prost(uint64, optional, tag = "1")]
22952    pub item_to_unlock: ::core::option::Option<u64>,
22953    #[prost(uint32, optional, tag = "2", default = "255")]
22954    pub style_index: ::core::option::Option<u32>,
22955    #[prost(uint64, repeated, packed = "false", tag = "3")]
22956    pub consumable_item_ids: ::prost::alloc::vec::Vec<u64>,
22957}
22958#[derive(serde::Serialize, serde::Deserialize)]
22959#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
22960pub struct CMsgClientToGcUnlockItemStyleResponse {
22961    #[prost(
22962        enumeration = "c_msg_client_to_gc_unlock_item_style_response::EUnlockStyle",
22963        optional,
22964        tag = "1",
22965        default = "KUnlockStyleSucceeded"
22966    )]
22967    pub response: ::core::option::Option<i32>,
22968    #[prost(uint64, optional, tag = "2")]
22969    pub item_id: ::core::option::Option<u64>,
22970    #[prost(uint32, optional, tag = "3", default = "255")]
22971    pub style_index: ::core::option::Option<u32>,
22972    #[prost(uint32, optional, tag = "4", default = "255")]
22973    pub style_prereq: ::core::option::Option<u32>,
22974}
22975/// Nested message and enum types in `CMsgClientToGCUnlockItemStyleResponse`.
22976pub mod c_msg_client_to_gc_unlock_item_style_response {
22977    #[derive(serde::Serialize, serde::Deserialize)]
22978    #[derive(
22979        Clone,
22980        Copy,
22981        Debug,
22982        PartialEq,
22983        Eq,
22984        Hash,
22985        PartialOrd,
22986        Ord,
22987        ::prost::Enumeration
22988    )]
22989    #[repr(i32)]
22990    pub enum EUnlockStyle {
22991        KUnlockStyleSucceeded = 0,
22992        KUnlockStyleFailedPreReq = 1,
22993        KUnlockStyleFailedCantAfford = 2,
22994        KUnlockStyleFailedCantCommit = 3,
22995        KUnlockStyleFailedCantLockCache = 4,
22996        KUnlockStyleFailedCantAffordAttrib = 5,
22997        KUnlockStyleFailedCantAffordGem = 6,
22998        KUnlockStyleFailedNoCompendiumLevel = 7,
22999        KUnlockStyleFailedAlreadyUnlocked = 8,
23000        KUnlockStyleFailedOtherError = 9,
23001        KUnlockStyleFailedItemIsInvalid = 10,
23002        KUnlockStyleFailedToolIsInvalid = 11,
23003    }
23004    impl EUnlockStyle {
23005        /// String value of the enum field names used in the ProtoBuf definition.
23006        ///
23007        /// The values are not transformed in any way and thus are considered stable
23008        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23009        pub fn as_str_name(&self) -> &'static str {
23010            match self {
23011                Self::KUnlockStyleSucceeded => "k_UnlockStyle_Succeeded",
23012                Self::KUnlockStyleFailedPreReq => "k_UnlockStyle_Failed_PreReq",
23013                Self::KUnlockStyleFailedCantAfford => "k_UnlockStyle_Failed_CantAfford",
23014                Self::KUnlockStyleFailedCantCommit => "k_UnlockStyle_Failed_CantCommit",
23015                Self::KUnlockStyleFailedCantLockCache => {
23016                    "k_UnlockStyle_Failed_CantLockCache"
23017                }
23018                Self::KUnlockStyleFailedCantAffordAttrib => {
23019                    "k_UnlockStyle_Failed_CantAffordAttrib"
23020                }
23021                Self::KUnlockStyleFailedCantAffordGem => {
23022                    "k_UnlockStyle_Failed_CantAffordGem"
23023                }
23024                Self::KUnlockStyleFailedNoCompendiumLevel => {
23025                    "k_UnlockStyle_Failed_NoCompendiumLevel"
23026                }
23027                Self::KUnlockStyleFailedAlreadyUnlocked => {
23028                    "k_UnlockStyle_Failed_AlreadyUnlocked"
23029                }
23030                Self::KUnlockStyleFailedOtherError => "k_UnlockStyle_Failed_OtherError",
23031                Self::KUnlockStyleFailedItemIsInvalid => {
23032                    "k_UnlockStyle_Failed_ItemIsInvalid"
23033                }
23034                Self::KUnlockStyleFailedToolIsInvalid => {
23035                    "k_UnlockStyle_Failed_ToolIsInvalid"
23036                }
23037            }
23038        }
23039        /// Creates an enum from field names used in the ProtoBuf definition.
23040        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23041            match value {
23042                "k_UnlockStyle_Succeeded" => Some(Self::KUnlockStyleSucceeded),
23043                "k_UnlockStyle_Failed_PreReq" => Some(Self::KUnlockStyleFailedPreReq),
23044                "k_UnlockStyle_Failed_CantAfford" => {
23045                    Some(Self::KUnlockStyleFailedCantAfford)
23046                }
23047                "k_UnlockStyle_Failed_CantCommit" => {
23048                    Some(Self::KUnlockStyleFailedCantCommit)
23049                }
23050                "k_UnlockStyle_Failed_CantLockCache" => {
23051                    Some(Self::KUnlockStyleFailedCantLockCache)
23052                }
23053                "k_UnlockStyle_Failed_CantAffordAttrib" => {
23054                    Some(Self::KUnlockStyleFailedCantAffordAttrib)
23055                }
23056                "k_UnlockStyle_Failed_CantAffordGem" => {
23057                    Some(Self::KUnlockStyleFailedCantAffordGem)
23058                }
23059                "k_UnlockStyle_Failed_NoCompendiumLevel" => {
23060                    Some(Self::KUnlockStyleFailedNoCompendiumLevel)
23061                }
23062                "k_UnlockStyle_Failed_AlreadyUnlocked" => {
23063                    Some(Self::KUnlockStyleFailedAlreadyUnlocked)
23064                }
23065                "k_UnlockStyle_Failed_OtherError" => {
23066                    Some(Self::KUnlockStyleFailedOtherError)
23067                }
23068                "k_UnlockStyle_Failed_ItemIsInvalid" => {
23069                    Some(Self::KUnlockStyleFailedItemIsInvalid)
23070                }
23071                "k_UnlockStyle_Failed_ToolIsInvalid" => {
23072                    Some(Self::KUnlockStyleFailedToolIsInvalid)
23073                }
23074                _ => None,
23075            }
23076        }
23077    }
23078}
23079#[derive(serde::Serialize, serde::Deserialize)]
23080#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23081pub struct CMsgClientToGcSetItemInventoryCategory {
23082    #[prost(uint64, repeated, packed = "false", tag = "1")]
23083    pub item_ids: ::prost::alloc::vec::Vec<u64>,
23084    #[prost(uint32, optional, tag = "2")]
23085    pub set_to_value: ::core::option::Option<u32>,
23086    #[prost(uint32, optional, tag = "3")]
23087    pub remove_categories: ::core::option::Option<u32>,
23088    #[prost(uint32, optional, tag = "4")]
23089    pub add_categories: ::core::option::Option<u32>,
23090}
23091#[derive(serde::Serialize, serde::Deserialize)]
23092#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23093pub struct CMsgClientToGcUnlockCrate {
23094    #[prost(uint64, optional, tag = "1")]
23095    pub crate_item_id: ::core::option::Option<u64>,
23096    #[prost(uint64, optional, tag = "2")]
23097    pub key_item_id: ::core::option::Option<u64>,
23098}
23099#[derive(serde::Serialize, serde::Deserialize)]
23100#[derive(Clone, PartialEq, ::prost::Message)]
23101pub struct CMsgClientToGcUnlockCrateResponse {
23102    #[prost(
23103        enumeration = "EgcMsgResponse",
23104        optional,
23105        tag = "1",
23106        default = "KEgcMsgResponseOk"
23107    )]
23108    pub result: ::core::option::Option<i32>,
23109    #[prost(message, repeated, tag = "2")]
23110    pub granted_items: ::prost::alloc::vec::Vec<
23111        c_msg_client_to_gc_unlock_crate_response::Item,
23112    >,
23113}
23114/// Nested message and enum types in `CMsgClientToGCUnlockCrateResponse`.
23115pub mod c_msg_client_to_gc_unlock_crate_response {
23116    #[derive(serde::Serialize, serde::Deserialize)]
23117    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23118    pub struct Item {
23119        #[prost(uint64, optional, tag = "1")]
23120        pub item_id: ::core::option::Option<u64>,
23121        #[prost(uint32, optional, tag = "2")]
23122        pub def_index: ::core::option::Option<u32>,
23123    }
23124}
23125#[derive(serde::Serialize, serde::Deserialize)]
23126#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23127pub struct CMsgClientToGcRemoveItemAttribute {
23128    #[prost(uint64, optional, tag = "1")]
23129    pub item_id: ::core::option::Option<u64>,
23130}
23131#[derive(serde::Serialize, serde::Deserialize)]
23132#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23133pub struct CMsgClientToGcRemoveItemAttributeResponse {
23134    #[prost(
23135        enumeration = "c_msg_client_to_gc_remove_item_attribute_response::ERemoveItemAttribute",
23136        optional,
23137        tag = "1",
23138        default = "KRemoveItemAttributeSucceeded"
23139    )]
23140    pub response: ::core::option::Option<i32>,
23141    #[prost(uint64, optional, tag = "2")]
23142    pub item_id: ::core::option::Option<u64>,
23143}
23144/// Nested message and enum types in `CMsgClientToGCRemoveItemAttributeResponse`.
23145pub mod c_msg_client_to_gc_remove_item_attribute_response {
23146    #[derive(serde::Serialize, serde::Deserialize)]
23147    #[derive(
23148        Clone,
23149        Copy,
23150        Debug,
23151        PartialEq,
23152        Eq,
23153        Hash,
23154        PartialOrd,
23155        Ord,
23156        ::prost::Enumeration
23157    )]
23158    #[repr(i32)]
23159    pub enum ERemoveItemAttribute {
23160        KRemoveItemAttributeSucceeded = 0,
23161        KRemoveItemAttributeFailed = 1,
23162        KRemoveItemAttributeFailedItemIsInvalid = 2,
23163        KRemoveItemAttributeFailedAttributeCannotBeRemoved = 3,
23164        KRemoveItemAttributeFailedAttributeDoesntExist = 4,
23165    }
23166    impl ERemoveItemAttribute {
23167        /// String value of the enum field names used in the ProtoBuf definition.
23168        ///
23169        /// The values are not transformed in any way and thus are considered stable
23170        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23171        pub fn as_str_name(&self) -> &'static str {
23172            match self {
23173                Self::KRemoveItemAttributeSucceeded => "k_RemoveItemAttribute_Succeeded",
23174                Self::KRemoveItemAttributeFailed => "k_RemoveItemAttribute_Failed",
23175                Self::KRemoveItemAttributeFailedItemIsInvalid => {
23176                    "k_RemoveItemAttribute_Failed_ItemIsInvalid"
23177                }
23178                Self::KRemoveItemAttributeFailedAttributeCannotBeRemoved => {
23179                    "k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved"
23180                }
23181                Self::KRemoveItemAttributeFailedAttributeDoesntExist => {
23182                    "k_RemoveItemAttribute_Failed_AttributeDoesntExist"
23183                }
23184            }
23185        }
23186        /// Creates an enum from field names used in the ProtoBuf definition.
23187        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23188            match value {
23189                "k_RemoveItemAttribute_Succeeded" => {
23190                    Some(Self::KRemoveItemAttributeSucceeded)
23191                }
23192                "k_RemoveItemAttribute_Failed" => Some(Self::KRemoveItemAttributeFailed),
23193                "k_RemoveItemAttribute_Failed_ItemIsInvalid" => {
23194                    Some(Self::KRemoveItemAttributeFailedItemIsInvalid)
23195                }
23196                "k_RemoveItemAttribute_Failed_AttributeCannotBeRemoved" => {
23197                    Some(Self::KRemoveItemAttributeFailedAttributeCannotBeRemoved)
23198                }
23199                "k_RemoveItemAttribute_Failed_AttributeDoesntExist" => {
23200                    Some(Self::KRemoveItemAttributeFailedAttributeDoesntExist)
23201                }
23202                _ => None,
23203            }
23204        }
23205    }
23206}
23207#[derive(serde::Serialize, serde::Deserialize)]
23208#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23209pub struct CMsgClientToGcNameItem {
23210    #[prost(uint64, optional, tag = "1")]
23211    pub subject_item_id: ::core::option::Option<u64>,
23212    #[prost(uint64, optional, tag = "2")]
23213    pub tool_item_id: ::core::option::Option<u64>,
23214    #[prost(string, optional, tag = "3")]
23215    pub name: ::core::option::Option<::prost::alloc::string::String>,
23216}
23217#[derive(serde::Serialize, serde::Deserialize)]
23218#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23219pub struct CMsgClientToGcNameItemResponse {
23220    #[prost(
23221        enumeration = "c_msg_client_to_gc_name_item_response::ENameItem",
23222        optional,
23223        tag = "1",
23224        default = "KNameItemSucceeded"
23225    )]
23226    pub response: ::core::option::Option<i32>,
23227    #[prost(uint64, optional, tag = "2")]
23228    pub item_id: ::core::option::Option<u64>,
23229}
23230/// Nested message and enum types in `CMsgClientToGCNameItemResponse`.
23231pub mod c_msg_client_to_gc_name_item_response {
23232    #[derive(serde::Serialize, serde::Deserialize)]
23233    #[derive(
23234        Clone,
23235        Copy,
23236        Debug,
23237        PartialEq,
23238        Eq,
23239        Hash,
23240        PartialOrd,
23241        Ord,
23242        ::prost::Enumeration
23243    )]
23244    #[repr(i32)]
23245    pub enum ENameItem {
23246        KNameItemSucceeded = 0,
23247        KNameItemFailed = 1,
23248        KNameItemFailedToolIsInvalid = 2,
23249        KNameItemFailedItemIsInvalid = 3,
23250        KNameItemFailedNameIsInvalid = 4,
23251    }
23252    impl ENameItem {
23253        /// String value of the enum field names used in the ProtoBuf definition.
23254        ///
23255        /// The values are not transformed in any way and thus are considered stable
23256        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23257        pub fn as_str_name(&self) -> &'static str {
23258            match self {
23259                Self::KNameItemSucceeded => "k_NameItem_Succeeded",
23260                Self::KNameItemFailed => "k_NameItem_Failed",
23261                Self::KNameItemFailedToolIsInvalid => "k_NameItem_Failed_ToolIsInvalid",
23262                Self::KNameItemFailedItemIsInvalid => "k_NameItem_Failed_ItemIsInvalid",
23263                Self::KNameItemFailedNameIsInvalid => "k_NameItem_Failed_NameIsInvalid",
23264            }
23265        }
23266        /// Creates an enum from field names used in the ProtoBuf definition.
23267        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23268            match value {
23269                "k_NameItem_Succeeded" => Some(Self::KNameItemSucceeded),
23270                "k_NameItem_Failed" => Some(Self::KNameItemFailed),
23271                "k_NameItem_Failed_ToolIsInvalid" => {
23272                    Some(Self::KNameItemFailedToolIsInvalid)
23273                }
23274                "k_NameItem_Failed_ItemIsInvalid" => {
23275                    Some(Self::KNameItemFailedItemIsInvalid)
23276                }
23277                "k_NameItem_Failed_NameIsInvalid" => {
23278                    Some(Self::KNameItemFailedNameIsInvalid)
23279                }
23280                _ => None,
23281            }
23282        }
23283    }
23284}
23285#[derive(serde::Serialize, serde::Deserialize)]
23286#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23287pub struct CMsgGcSetItemPosition {
23288    #[prost(uint64, optional, tag = "1")]
23289    pub item_id: ::core::option::Option<u64>,
23290    #[prost(uint32, optional, tag = "2")]
23291    pub new_position: ::core::option::Option<u32>,
23292}
23293#[derive(serde::Serialize, serde::Deserialize)]
23294#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23295pub struct CAttributeItemDynamicRecipeComponent {
23296    #[prost(uint32, optional, tag = "1")]
23297    pub item_def: ::core::option::Option<u32>,
23298    #[prost(uint32, optional, tag = "2")]
23299    pub item_quality: ::core::option::Option<u32>,
23300    #[prost(uint32, optional, tag = "3")]
23301    pub item_flags: ::core::option::Option<u32>,
23302    #[prost(string, optional, tag = "4")]
23303    pub attributes_string: ::core::option::Option<::prost::alloc::string::String>,
23304    #[prost(uint32, optional, tag = "5")]
23305    pub item_count: ::core::option::Option<u32>,
23306    #[prost(uint32, optional, tag = "6")]
23307    pub items_fulfilled: ::core::option::Option<u32>,
23308    #[prost(uint32, optional, tag = "7")]
23309    pub item_rarity: ::core::option::Option<u32>,
23310    #[prost(string, optional, tag = "8")]
23311    pub lootlist: ::core::option::Option<::prost::alloc::string::String>,
23312    #[prost(uint64, optional, tag = "9")]
23313    pub fulfilled_item_id: ::core::option::Option<u64>,
23314    #[prost(uint32, optional, tag = "10")]
23315    pub associated_item_def: ::core::option::Option<u32>,
23316}
23317#[derive(serde::Serialize, serde::Deserialize)]
23318#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23319pub struct CProtoItemSocket {
23320    #[prost(uint64, optional, tag = "1")]
23321    pub item_id: ::core::option::Option<u64>,
23322    #[prost(uint32, optional, tag = "2")]
23323    pub attr_def_index: ::core::option::Option<u32>,
23324    #[prost(uint32, optional, tag = "3")]
23325    pub required_type: ::core::option::Option<u32>,
23326    #[prost(string, optional, tag = "4")]
23327    pub required_hero: ::core::option::Option<::prost::alloc::string::String>,
23328    #[prost(uint32, optional, tag = "5")]
23329    pub gem_def_index: ::core::option::Option<u32>,
23330    #[prost(bool, optional, tag = "6")]
23331    pub not_tradable: ::core::option::Option<bool>,
23332    #[prost(string, optional, tag = "7")]
23333    pub required_item_slot: ::core::option::Option<::prost::alloc::string::String>,
23334}
23335#[derive(serde::Serialize, serde::Deserialize)]
23336#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23337pub struct CProtoItemSocketEmpty {
23338    #[prost(message, optional, tag = "1")]
23339    pub socket: ::core::option::Option<CProtoItemSocket>,
23340}
23341#[derive(serde::Serialize, serde::Deserialize)]
23342#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23343pub struct CProtoItemSocketEffect {
23344    #[prost(message, optional, tag = "1")]
23345    pub socket: ::core::option::Option<CProtoItemSocket>,
23346    #[prost(uint32, optional, tag = "2")]
23347    pub effect: ::core::option::Option<u32>,
23348}
23349#[derive(serde::Serialize, serde::Deserialize)]
23350#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23351pub struct CProtoItemSocketColor {
23352    #[prost(message, optional, tag = "1")]
23353    pub socket: ::core::option::Option<CProtoItemSocket>,
23354    #[prost(uint32, optional, tag = "2")]
23355    pub red: ::core::option::Option<u32>,
23356    #[prost(uint32, optional, tag = "3")]
23357    pub green: ::core::option::Option<u32>,
23358    #[prost(uint32, optional, tag = "4")]
23359    pub blue: ::core::option::Option<u32>,
23360}
23361#[derive(serde::Serialize, serde::Deserialize)]
23362#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23363pub struct CProtoItemSocketStrange {
23364    #[prost(message, optional, tag = "1")]
23365    pub socket: ::core::option::Option<CProtoItemSocket>,
23366    #[prost(uint32, optional, tag = "2")]
23367    pub strange_type: ::core::option::Option<u32>,
23368    #[prost(uint32, optional, tag = "3")]
23369    pub strange_value: ::core::option::Option<u32>,
23370}
23371#[derive(serde::Serialize, serde::Deserialize)]
23372#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23373pub struct CProtoItemSocketStrangeDeserializeFromStringOnly {
23374    #[prost(message, optional, tag = "1")]
23375    pub socket: ::core::option::Option<CProtoItemSocket>,
23376    #[prost(uint32, optional, tag = "2")]
23377    pub strange_type: ::core::option::Option<u32>,
23378    #[prost(uint32, optional, tag = "3")]
23379    pub strange_value: ::core::option::Option<u32>,
23380    #[prost(uint32, optional, tag = "4")]
23381    pub ability_effect: ::core::option::Option<u32>,
23382}
23383#[derive(serde::Serialize, serde::Deserialize)]
23384#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23385pub struct CProtoItemSocketSpectator {
23386    #[prost(message, optional, tag = "1")]
23387    pub socket: ::core::option::Option<CProtoItemSocket>,
23388    #[prost(uint32, optional, tag = "2")]
23389    pub games_viewed: ::core::option::Option<u32>,
23390    #[prost(uint32, optional, tag = "3")]
23391    pub corporation_id: ::core::option::Option<u32>,
23392    #[prost(uint32, optional, tag = "4")]
23393    pub league_id: ::core::option::Option<u32>,
23394    #[prost(uint32, optional, tag = "5")]
23395    pub team_id: ::core::option::Option<u32>,
23396}
23397#[derive(serde::Serialize, serde::Deserialize)]
23398#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23399pub struct CProtoItemSocketAssetModifier {
23400    #[prost(message, optional, tag = "1")]
23401    pub socket: ::core::option::Option<CProtoItemSocket>,
23402    #[prost(uint32, optional, tag = "2")]
23403    pub asset_modifier: ::core::option::Option<u32>,
23404}
23405#[derive(serde::Serialize, serde::Deserialize)]
23406#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23407pub struct CProtoItemSocketAssetModifierDeserializeFromStringOnly {
23408    #[prost(message, optional, tag = "1")]
23409    pub socket: ::core::option::Option<CProtoItemSocket>,
23410    #[prost(uint32, optional, tag = "2")]
23411    pub asset_modifier: ::core::option::Option<u32>,
23412    #[prost(uint32, optional, tag = "3")]
23413    pub anim_modifier: ::core::option::Option<u32>,
23414    #[prost(uint32, optional, tag = "4")]
23415    pub ability_effect: ::core::option::Option<u32>,
23416}
23417#[derive(serde::Serialize, serde::Deserialize)]
23418#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23419pub struct CProtoItemSocketAutograph {
23420    #[prost(message, optional, tag = "1")]
23421    pub socket: ::core::option::Option<CProtoItemSocket>,
23422    #[prost(string, optional, tag = "2")]
23423    pub autograph: ::core::option::Option<::prost::alloc::string::String>,
23424    #[prost(uint32, optional, tag = "3")]
23425    pub autograph_id: ::core::option::Option<u32>,
23426    #[prost(uint32, optional, tag = "4")]
23427    pub autograph_score: ::core::option::Option<u32>,
23428}
23429#[derive(serde::Serialize, serde::Deserialize)]
23430#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23431pub struct CProtoItemSocketStaticVisuals {
23432    #[prost(message, optional, tag = "1")]
23433    pub socket: ::core::option::Option<CProtoItemSocket>,
23434}
23435#[derive(serde::Serialize, serde::Deserialize)]
23436#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23437pub struct CAttributeString {
23438    #[prost(string, optional, tag = "1")]
23439    pub value: ::core::option::Option<::prost::alloc::string::String>,
23440}
23441#[derive(serde::Serialize, serde::Deserialize)]
23442#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23443pub struct CWorkshopGetItemDailyRevenueRequest {
23444    #[prost(uint32, optional, tag = "1")]
23445    pub appid: ::core::option::Option<u32>,
23446    #[prost(uint32, optional, tag = "2")]
23447    pub item_id: ::core::option::Option<u32>,
23448    #[prost(uint32, optional, tag = "3")]
23449    pub date_start: ::core::option::Option<u32>,
23450    #[prost(uint32, optional, tag = "4")]
23451    pub date_end: ::core::option::Option<u32>,
23452}
23453#[derive(serde::Serialize, serde::Deserialize)]
23454#[derive(Clone, PartialEq, ::prost::Message)]
23455pub struct CWorkshopGetItemDailyRevenueResponse {
23456    #[prost(message, repeated, tag = "1")]
23457    pub country_revenue: ::prost::alloc::vec::Vec<
23458        c_workshop_get_item_daily_revenue_response::CountryDailyRevenue,
23459    >,
23460}
23461/// Nested message and enum types in `CWorkshop_GetItemDailyRevenue_Response`.
23462pub mod c_workshop_get_item_daily_revenue_response {
23463    #[derive(serde::Serialize, serde::Deserialize)]
23464    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23465    pub struct CountryDailyRevenue {
23466        #[prost(string, optional, tag = "1")]
23467        pub country_code: ::core::option::Option<::prost::alloc::string::String>,
23468        #[prost(uint32, optional, tag = "2")]
23469        pub date: ::core::option::Option<u32>,
23470        #[prost(int64, optional, tag = "3")]
23471        pub revenue_usd: ::core::option::Option<i64>,
23472        #[prost(int32, optional, tag = "4")]
23473        pub units: ::core::option::Option<i32>,
23474    }
23475}
23476#[derive(serde::Serialize, serde::Deserialize)]
23477#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23478pub struct CWorkshopGetPackageDailyRevenueRequest {
23479    #[prost(uint32, optional, tag = "1")]
23480    pub packageid: ::core::option::Option<u32>,
23481    #[prost(uint32, optional, tag = "2")]
23482    pub date_start: ::core::option::Option<u32>,
23483    #[prost(uint32, optional, tag = "3")]
23484    pub date_end: ::core::option::Option<u32>,
23485}
23486#[derive(serde::Serialize, serde::Deserialize)]
23487#[derive(Clone, PartialEq, ::prost::Message)]
23488pub struct CWorkshopGetPackageDailyRevenueResponse {
23489    #[prost(message, repeated, tag = "1")]
23490    pub country_revenue: ::prost::alloc::vec::Vec<
23491        c_workshop_get_package_daily_revenue_response::CountryDailyRevenue,
23492    >,
23493}
23494/// Nested message and enum types in `CWorkshop_GetPackageDailyRevenue_Response`.
23495pub mod c_workshop_get_package_daily_revenue_response {
23496    #[derive(serde::Serialize, serde::Deserialize)]
23497    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23498    pub struct CountryDailyRevenue {
23499        #[prost(string, optional, tag = "1")]
23500        pub country_code: ::core::option::Option<::prost::alloc::string::String>,
23501        #[prost(uint32, optional, tag = "2")]
23502        pub date: ::core::option::Option<u32>,
23503        #[prost(int64, optional, tag = "3")]
23504        pub revenue_usd: ::core::option::Option<i64>,
23505        #[prost(int32, optional, tag = "4")]
23506        pub units: ::core::option::Option<i32>,
23507    }
23508}
23509#[derive(serde::Serialize, serde::Deserialize)]
23510#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23511pub struct CMsgSqlgcToGcGrantBackpackSlots {
23512    #[prost(uint32, optional, tag = "1")]
23513    pub account_id: ::core::option::Option<u32>,
23514    #[prost(uint32, optional, tag = "2")]
23515    pub add_slots: ::core::option::Option<u32>,
23516}
23517#[derive(serde::Serialize, serde::Deserialize)]
23518#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23519pub struct CMsgClientToGcLookupAccountName {
23520    #[prost(uint32, optional, tag = "1")]
23521    pub account_id: ::core::option::Option<u32>,
23522}
23523#[derive(serde::Serialize, serde::Deserialize)]
23524#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23525pub struct CMsgClientToGcLookupAccountNameResponse {
23526    #[prost(uint32, optional, tag = "1")]
23527    pub account_id: ::core::option::Option<u32>,
23528    #[prost(string, optional, tag = "2")]
23529    pub account_name: ::core::option::Option<::prost::alloc::string::String>,
23530}
23531#[derive(serde::Serialize, serde::Deserialize)]
23532#[derive(Clone, PartialEq, ::prost::Message)]
23533pub struct CMsgClientToGcCreateStaticRecipe {
23534    #[prost(message, repeated, tag = "1")]
23535    pub items: ::prost::alloc::vec::Vec<c_msg_client_to_gc_create_static_recipe::Item>,
23536    #[prost(uint32, optional, tag = "2")]
23537    pub recipe_def_index: ::core::option::Option<u32>,
23538}
23539/// Nested message and enum types in `CMsgClientToGCCreateStaticRecipe`.
23540pub mod c_msg_client_to_gc_create_static_recipe {
23541    #[derive(serde::Serialize, serde::Deserialize)]
23542    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23543    pub struct Item {
23544        #[prost(uint64, optional, tag = "1")]
23545        pub item_id: ::core::option::Option<u64>,
23546        #[prost(uint32, optional, tag = "2")]
23547        pub slot_id: ::core::option::Option<u32>,
23548    }
23549}
23550#[derive(serde::Serialize, serde::Deserialize)]
23551#[derive(Clone, PartialEq, ::prost::Message)]
23552pub struct CMsgClientToGcCreateStaticRecipeResponse {
23553    #[prost(
23554        enumeration = "c_msg_client_to_gc_create_static_recipe_response::EResponse",
23555        optional,
23556        tag = "1",
23557        default = "Success"
23558    )]
23559    pub response: ::core::option::Option<i32>,
23560    #[prost(message, repeated, tag = "2")]
23561    pub output_items: ::prost::alloc::vec::Vec<
23562        c_msg_client_to_gc_create_static_recipe_response::OutputItem,
23563    >,
23564    #[prost(message, repeated, tag = "3")]
23565    pub input_errors: ::prost::alloc::vec::Vec<
23566        c_msg_client_to_gc_create_static_recipe_response::InputError,
23567    >,
23568    #[prost(message, repeated, tag = "4")]
23569    pub additional_outputs: ::prost::alloc::vec::Vec<
23570        c_msg_client_to_gc_create_static_recipe_response::AdditionalOutput,
23571    >,
23572}
23573/// Nested message and enum types in `CMsgClientToGCCreateStaticRecipeResponse`.
23574pub mod c_msg_client_to_gc_create_static_recipe_response {
23575    #[derive(serde::Serialize, serde::Deserialize)]
23576    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23577    pub struct OutputItem {
23578        #[prost(uint32, optional, tag = "1")]
23579        pub def_index: ::core::option::Option<u32>,
23580        #[prost(uint64, optional, tag = "2")]
23581        pub item_id: ::core::option::Option<u64>,
23582        #[prost(uint32, optional, tag = "3")]
23583        pub slot_id: ::core::option::Option<u32>,
23584    }
23585    #[derive(serde::Serialize, serde::Deserialize)]
23586    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23587    pub struct InputError {
23588        #[prost(uint32, optional, tag = "1")]
23589        pub slot_id: ::core::option::Option<u32>,
23590        #[prost(enumeration = "EResponse", optional, tag = "2", default = "Success")]
23591        pub error: ::core::option::Option<i32>,
23592    }
23593    #[derive(serde::Serialize, serde::Deserialize)]
23594    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23595    pub struct AdditionalOutput {
23596        #[prost(uint32, optional, tag = "1")]
23597        pub slot_id: ::core::option::Option<u32>,
23598        #[prost(uint64, optional, tag = "2")]
23599        pub value: ::core::option::Option<u64>,
23600    }
23601    #[derive(serde::Serialize, serde::Deserialize)]
23602    #[derive(
23603        Clone,
23604        Copy,
23605        Debug,
23606        PartialEq,
23607        Eq,
23608        Hash,
23609        PartialOrd,
23610        Ord,
23611        ::prost::Enumeration
23612    )]
23613    #[repr(i32)]
23614    pub enum EResponse {
23615        Success = 0,
23616        OfferingDisabled = 1,
23617        InvalidItems = 2,
23618        InternalError = 3,
23619        MissingLeague = 4,
23620        MissingEvent = 5,
23621    }
23622    impl EResponse {
23623        /// String value of the enum field names used in the ProtoBuf definition.
23624        ///
23625        /// The values are not transformed in any way and thus are considered stable
23626        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23627        pub fn as_str_name(&self) -> &'static str {
23628            match self {
23629                Self::Success => "eResponse_Success",
23630                Self::OfferingDisabled => "eResponse_OfferingDisabled",
23631                Self::InvalidItems => "eResponse_InvalidItems",
23632                Self::InternalError => "eResponse_InternalError",
23633                Self::MissingLeague => "eResponse_MissingLeague",
23634                Self::MissingEvent => "eResponse_MissingEvent",
23635            }
23636        }
23637        /// Creates an enum from field names used in the ProtoBuf definition.
23638        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23639            match value {
23640                "eResponse_Success" => Some(Self::Success),
23641                "eResponse_OfferingDisabled" => Some(Self::OfferingDisabled),
23642                "eResponse_InvalidItems" => Some(Self::InvalidItems),
23643                "eResponse_InternalError" => Some(Self::InternalError),
23644                "eResponse_MissingLeague" => Some(Self::MissingLeague),
23645                "eResponse_MissingEvent" => Some(Self::MissingEvent),
23646                _ => None,
23647            }
23648        }
23649    }
23650}
23651#[derive(serde::Serialize, serde::Deserialize)]
23652#[derive(Clone, PartialEq, ::prost::Message)]
23653pub struct CMsgProcessTransactionOrder {
23654    #[prost(uint64, optional, tag = "1")]
23655    pub txn_id: ::core::option::Option<u64>,
23656    #[prost(uint64, optional, tag = "2")]
23657    pub steam_txn_id: ::core::option::Option<u64>,
23658    #[prost(uint64, optional, tag = "3")]
23659    pub partner_txn_id: ::core::option::Option<u64>,
23660    #[prost(fixed64, optional, tag = "4")]
23661    pub steam_id: ::core::option::Option<u64>,
23662    #[prost(uint32, optional, tag = "5")]
23663    pub time_stamp: ::core::option::Option<u32>,
23664    #[prost(uint64, optional, tag = "6")]
23665    pub watermark: ::core::option::Option<u64>,
23666    #[prost(int32, optional, tag = "7")]
23667    pub purchase_report_status: ::core::option::Option<i32>,
23668    #[prost(uint32, optional, tag = "8")]
23669    pub currency: ::core::option::Option<u32>,
23670    #[prost(message, repeated, tag = "9")]
23671    pub items: ::prost::alloc::vec::Vec<c_msg_process_transaction_order::Item>,
23672}
23673/// Nested message and enum types in `CMsgProcessTransactionOrder`.
23674pub mod c_msg_process_transaction_order {
23675    #[derive(serde::Serialize, serde::Deserialize)]
23676    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23677    pub struct Item {
23678        #[prost(uint32, optional, tag = "1")]
23679        pub item_def_index: ::core::option::Option<u32>,
23680        #[prost(uint32, optional, tag = "2")]
23681        pub item_price: ::core::option::Option<u32>,
23682        #[prost(uint32, optional, tag = "3")]
23683        pub quantity: ::core::option::Option<u32>,
23684        #[prost(string, optional, tag = "4")]
23685        pub category_desc: ::core::option::Option<::prost::alloc::string::String>,
23686        #[prost(uint32, optional, tag = "5")]
23687        pub store_purchase_type: ::core::option::Option<u32>,
23688        #[prost(uint64, optional, tag = "6")]
23689        pub source_reference_id: ::core::option::Option<u64>,
23690        #[prost(int32, optional, tag = "7")]
23691        pub parent_stack_index: ::core::option::Option<i32>,
23692        #[prost(bool, optional, tag = "8")]
23693        pub default_price: ::core::option::Option<bool>,
23694        #[prost(bool, optional, tag = "9")]
23695        pub is_user_facing: ::core::option::Option<bool>,
23696        #[prost(int32, optional, tag = "11")]
23697        pub price_index: ::core::option::Option<i32>,
23698    }
23699}
23700#[derive(serde::Serialize, serde::Deserialize)]
23701#[derive(Clone, PartialEq, ::prost::Message)]
23702pub struct CMsgGcToGcStoreProcessCdKeyTransaction {
23703    #[prost(message, optional, tag = "1")]
23704    pub order: ::core::option::Option<CMsgProcessTransactionOrder>,
23705    #[prost(uint32, optional, tag = "2")]
23706    pub reason_code: ::core::option::Option<u32>,
23707    #[prost(uint32, optional, tag = "3")]
23708    pub partner: ::core::option::Option<u32>,
23709}
23710#[derive(serde::Serialize, serde::Deserialize)]
23711#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23712pub struct CMsgGcToGcStoreProcessCdKeyTransactionResponse {
23713    #[prost(bool, optional, tag = "1")]
23714    pub success: ::core::option::Option<bool>,
23715}
23716#[derive(serde::Serialize, serde::Deserialize)]
23717#[derive(Clone, PartialEq, ::prost::Message)]
23718pub struct CMsgGcToGcStoreProcessSettlement {
23719    #[prost(message, optional, tag = "1")]
23720    pub order: ::core::option::Option<CMsgProcessTransactionOrder>,
23721}
23722#[derive(serde::Serialize, serde::Deserialize)]
23723#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23724pub struct CMsgGcToGcStoreProcessSettlementResponse {
23725    #[prost(bool, optional, tag = "1")]
23726    pub success: ::core::option::Option<bool>,
23727}
23728#[derive(serde::Serialize, serde::Deserialize)]
23729#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23730pub struct CMsgGcToGcBroadcastConsoleCommand {
23731    #[prost(string, optional, tag = "1")]
23732    pub con_command: ::core::option::Option<::prost::alloc::string::String>,
23733    #[prost(bool, optional, tag = "2")]
23734    pub report_output: ::core::option::Option<bool>,
23735    #[prost(int32, optional, tag = "3", default = "-1")]
23736    pub sending_gc: ::core::option::Option<i32>,
23737    #[prost(string, optional, tag = "4")]
23738    pub output_initiator: ::core::option::Option<::prost::alloc::string::String>,
23739    #[prost(string, optional, tag = "5")]
23740    pub sender_source: ::core::option::Option<::prost::alloc::string::String>,
23741}
23742#[derive(serde::Serialize, serde::Deserialize)]
23743#[derive(Clone, PartialEq, ::prost::Message)]
23744pub struct CMsgGcToGcConsoleOutput {
23745    #[prost(string, optional, tag = "1")]
23746    pub initiator: ::core::option::Option<::prost::alloc::string::String>,
23747    #[prost(int32, optional, tag = "2", default = "-1")]
23748    pub sending_gc: ::core::option::Option<i32>,
23749    #[prost(message, repeated, tag = "3")]
23750    pub msgs: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_console_output::OutputLine>,
23751    #[prost(bool, optional, tag = "4")]
23752    pub is_last_for_source_job: ::core::option::Option<bool>,
23753}
23754/// Nested message and enum types in `CMsgGCToGCConsoleOutput`.
23755pub mod c_msg_gc_to_gc_console_output {
23756    #[derive(serde::Serialize, serde::Deserialize)]
23757    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23758    pub struct OutputLine {
23759        #[prost(string, optional, tag = "1")]
23760        pub text: ::core::option::Option<::prost::alloc::string::String>,
23761        #[prost(uint32, optional, tag = "2")]
23762        pub spew_level: ::core::option::Option<u32>,
23763    }
23764}
23765#[derive(serde::Serialize, serde::Deserialize)]
23766#[derive(Clone, PartialEq, ::prost::Message)]
23767pub struct CMsgItemAges {
23768    #[prost(message, repeated, tag = "1")]
23769    pub max_item_id_timestamps: ::prost::alloc::vec::Vec<
23770        c_msg_item_ages::MaxItemIdTimestamp,
23771    >,
23772}
23773/// Nested message and enum types in `CMsgItemAges`.
23774pub mod c_msg_item_ages {
23775    #[derive(serde::Serialize, serde::Deserialize)]
23776    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23777    pub struct MaxItemIdTimestamp {
23778        #[prost(uint32, optional, tag = "1")]
23779        pub timestamp: ::core::option::Option<u32>,
23780        #[prost(uint64, optional, tag = "2")]
23781        pub max_item_id: ::core::option::Option<u64>,
23782    }
23783}
23784#[derive(serde::Serialize, serde::Deserialize)]
23785#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23786pub struct CMsgGcToGcInternalTestMsg {
23787    #[prost(int32, optional, tag = "1", default = "-1")]
23788    pub sending_gc: ::core::option::Option<i32>,
23789    #[prost(fixed64, optional, tag = "2")]
23790    pub sender_id: ::core::option::Option<u64>,
23791    #[prost(uint32, optional, tag = "3")]
23792    pub context: ::core::option::Option<u32>,
23793    #[prost(uint32, optional, tag = "4")]
23794    pub message_id: ::core::option::Option<u32>,
23795    #[prost(bytes = "vec", optional, tag = "5")]
23796    pub message_body: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
23797    #[prost(fixed64, optional, tag = "6")]
23798    pub job_id_source: ::core::option::Option<u64>,
23799    #[prost(fixed64, optional, tag = "7")]
23800    pub job_id_target: ::core::option::Option<u64>,
23801}
23802#[derive(serde::Serialize, serde::Deserialize)]
23803#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23804pub struct CMsgGcToGcClientServerVersionsUpdated {
23805    #[prost(uint32, optional, tag = "1")]
23806    pub client_min_allowed_version: ::core::option::Option<u32>,
23807    #[prost(uint32, optional, tag = "2")]
23808    pub client_active_version: ::core::option::Option<u32>,
23809    #[prost(uint32, optional, tag = "3")]
23810    pub server_active_version: ::core::option::Option<u32>,
23811    #[prost(uint32, optional, tag = "4")]
23812    pub server_deployed_version: ::core::option::Option<u32>,
23813    #[prost(uint32, optional, tag = "5")]
23814    pub what_changed: ::core::option::Option<u32>,
23815}
23816#[derive(serde::Serialize, serde::Deserialize)]
23817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23818pub struct CMsgGcToGcBroadcastMessageFromSub {
23819    #[prost(uint32, optional, tag = "1")]
23820    pub msg_id: ::core::option::Option<u32>,
23821    #[prost(bytes = "vec", optional, tag = "2")]
23822    pub serialized_msg: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
23823    #[prost(uint32, repeated, tag = "3")]
23824    pub account_id_list: ::prost::alloc::vec::Vec<u32>,
23825    #[prost(fixed64, repeated, tag = "4")]
23826    pub steam_id_list: ::prost::alloc::vec::Vec<u64>,
23827}
23828#[derive(serde::Serialize, serde::Deserialize)]
23829#[derive(Clone, PartialEq, ::prost::Message)]
23830pub struct CMsgGcToClientCurrencyPricePoints {
23831    #[prost(uint64, repeated, tag = "1")]
23832    pub price_key: ::prost::alloc::vec::Vec<u64>,
23833    #[prost(message, repeated, tag = "2")]
23834    pub currencies: ::prost::alloc::vec::Vec<
23835        c_msg_gc_to_client_currency_price_points::Currency,
23836    >,
23837}
23838/// Nested message and enum types in `CMsgGCToClientCurrencyPricePoints`.
23839pub mod c_msg_gc_to_client_currency_price_points {
23840    #[derive(serde::Serialize, serde::Deserialize)]
23841    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23842    pub struct Currency {
23843        #[prost(uint32, optional, tag = "1")]
23844        pub currency_id: ::core::option::Option<u32>,
23845        #[prost(uint64, repeated, tag = "2")]
23846        pub currency_price: ::prost::alloc::vec::Vec<u64>,
23847    }
23848}
23849#[derive(serde::Serialize, serde::Deserialize)]
23850#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23851pub struct CMsgBannedWordList {
23852    #[prost(uint32, optional, tag = "1")]
23853    pub version: ::core::option::Option<u32>,
23854    #[prost(string, repeated, tag = "2")]
23855    pub banned_words: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
23856}
23857#[derive(serde::Serialize, serde::Deserialize)]
23858#[derive(Clone, PartialEq, ::prost::Message)]
23859pub struct CMsgGcToGcFlushSteamInventoryCache {
23860    #[prost(message, repeated, tag = "1")]
23861    pub keys: ::prost::alloc::vec::Vec<c_msg_gc_to_gc_flush_steam_inventory_cache::Key>,
23862}
23863/// Nested message and enum types in `CMsgGCToGCFlushSteamInventoryCache`.
23864pub mod c_msg_gc_to_gc_flush_steam_inventory_cache {
23865    #[derive(serde::Serialize, serde::Deserialize)]
23866    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23867    pub struct Key {
23868        #[prost(uint64, optional, tag = "1")]
23869        pub steamid: ::core::option::Option<u64>,
23870        #[prost(uint64, optional, tag = "2")]
23871        pub contextid: ::core::option::Option<u64>,
23872    }
23873}
23874#[derive(serde::Serialize, serde::Deserialize)]
23875#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23876pub struct CMsgGcToGcUpdateSubscriptionItems {
23877    #[prost(uint32, optional, tag = "1")]
23878    pub account_id: ::core::option::Option<u32>,
23879    #[prost(bool, optional, tag = "2")]
23880    pub always_notify: ::core::option::Option<bool>,
23881}
23882#[derive(serde::Serialize, serde::Deserialize)]
23883#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23884pub struct CMsgGcToGcSelfPing {
23885    #[prost(uint32, optional, tag = "1")]
23886    pub sample_id: ::core::option::Option<u32>,
23887}
23888#[derive(serde::Serialize, serde::Deserialize)]
23889#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23890pub struct CMsgGcToGcGetInfuxIntervalStats {}
23891#[derive(serde::Serialize, serde::Deserialize)]
23892#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
23893pub struct CMsgGcToGcGetInfuxIntervalStatsResponse {
23894    #[prost(fixed32, repeated, tag = "1")]
23895    pub stat_ids: ::prost::alloc::vec::Vec<u32>,
23896    #[prost(uint64, repeated, tag = "2")]
23897    pub stat_total: ::prost::alloc::vec::Vec<u64>,
23898    #[prost(uint32, repeated, tag = "3")]
23899    pub stat_samples: ::prost::alloc::vec::Vec<u32>,
23900    #[prost(uint32, repeated, tag = "4")]
23901    pub stat_max: ::prost::alloc::vec::Vec<u32>,
23902    #[prost(uint32, optional, tag = "5")]
23903    pub sample_duration_ms: ::core::option::Option<u32>,
23904}
23905#[derive(serde::Serialize, serde::Deserialize)]
23906#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23907pub struct CMsgGcToGcPurchaseSucceeded {}
23908#[derive(serde::Serialize, serde::Deserialize)]
23909#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23910pub struct CMsgClientToGcGetLimitedItemPurchaseQuantity {
23911    #[prost(uint32, optional, tag = "1")]
23912    pub item_def: ::core::option::Option<u32>,
23913}
23914#[derive(serde::Serialize, serde::Deserialize)]
23915#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23916pub struct CMsgClientToGcGetLimitedItemPurchaseQuantityResponse {
23917    #[prost(
23918        enumeration = "c_msg_client_to_gc_get_limited_item_purchase_quantity_response::EResponse",
23919        optional,
23920        tag = "1",
23921        default = "KEInternalError"
23922    )]
23923    pub result: ::core::option::Option<i32>,
23924    #[prost(uint32, optional, tag = "2")]
23925    pub quantity_purchased: ::core::option::Option<u32>,
23926}
23927/// Nested message and enum types in `CMsgClientToGCGetLimitedItemPurchaseQuantityResponse`.
23928pub mod c_msg_client_to_gc_get_limited_item_purchase_quantity_response {
23929    #[derive(serde::Serialize, serde::Deserialize)]
23930    #[derive(
23931        Clone,
23932        Copy,
23933        Debug,
23934        PartialEq,
23935        Eq,
23936        Hash,
23937        PartialOrd,
23938        Ord,
23939        ::prost::Enumeration
23940    )]
23941    #[repr(i32)]
23942    pub enum EResponse {
23943        KEInternalError = 0,
23944        KESuccess = 1,
23945        KETooBusy = 2,
23946        KEDisabled = 3,
23947        KETimeout = 4,
23948        KEInvalidItemDef = 5,
23949        KEItemDefNotLimited = 6,
23950    }
23951    impl EResponse {
23952        /// String value of the enum field names used in the ProtoBuf definition.
23953        ///
23954        /// The values are not transformed in any way and thus are considered stable
23955        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
23956        pub fn as_str_name(&self) -> &'static str {
23957            match self {
23958                Self::KEInternalError => "k_eInternalError",
23959                Self::KESuccess => "k_eSuccess",
23960                Self::KETooBusy => "k_eTooBusy",
23961                Self::KEDisabled => "k_eDisabled",
23962                Self::KETimeout => "k_eTimeout",
23963                Self::KEInvalidItemDef => "k_eInvalidItemDef",
23964                Self::KEItemDefNotLimited => "k_eItemDefNotLimited",
23965            }
23966        }
23967        /// Creates an enum from field names used in the ProtoBuf definition.
23968        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
23969            match value {
23970                "k_eInternalError" => Some(Self::KEInternalError),
23971                "k_eSuccess" => Some(Self::KESuccess),
23972                "k_eTooBusy" => Some(Self::KETooBusy),
23973                "k_eDisabled" => Some(Self::KEDisabled),
23974                "k_eTimeout" => Some(Self::KETimeout),
23975                "k_eInvalidItemDef" => Some(Self::KEInvalidItemDef),
23976                "k_eItemDefNotLimited" => Some(Self::KEItemDefNotLimited),
23977                _ => None,
23978            }
23979        }
23980    }
23981}
23982#[derive(serde::Serialize, serde::Deserialize)]
23983#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23984pub struct CMsgClientToGcGetInFlightItemCharges {
23985    #[prost(uint32, optional, tag = "1")]
23986    pub item_def: ::core::option::Option<u32>,
23987}
23988#[derive(serde::Serialize, serde::Deserialize)]
23989#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
23990pub struct CMsgClientToGcGetInFlightItemChargesResponse {
23991    #[prost(
23992        enumeration = "c_msg_client_to_gc_get_in_flight_item_charges_response::EResponse",
23993        optional,
23994        tag = "1",
23995        default = "KEInternalError"
23996    )]
23997    pub result: ::core::option::Option<i32>,
23998    #[prost(uint32, optional, tag = "2")]
23999    pub charges_in_flight: ::core::option::Option<u32>,
24000}
24001/// Nested message and enum types in `CMsgClientToGCGetInFlightItemChargesResponse`.
24002pub mod c_msg_client_to_gc_get_in_flight_item_charges_response {
24003    #[derive(serde::Serialize, serde::Deserialize)]
24004    #[derive(
24005        Clone,
24006        Copy,
24007        Debug,
24008        PartialEq,
24009        Eq,
24010        Hash,
24011        PartialOrd,
24012        Ord,
24013        ::prost::Enumeration
24014    )]
24015    #[repr(i32)]
24016    pub enum EResponse {
24017        KEInternalError = 0,
24018        KESuccess = 1,
24019        KETooBusy = 2,
24020        KEDisabled = 3,
24021        KETimeout = 4,
24022        KEInvalidItemDef = 5,
24023    }
24024    impl EResponse {
24025        /// String value of the enum field names used in the ProtoBuf definition.
24026        ///
24027        /// The values are not transformed in any way and thus are considered stable
24028        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24029        pub fn as_str_name(&self) -> &'static str {
24030            match self {
24031                Self::KEInternalError => "k_eInternalError",
24032                Self::KESuccess => "k_eSuccess",
24033                Self::KETooBusy => "k_eTooBusy",
24034                Self::KEDisabled => "k_eDisabled",
24035                Self::KETimeout => "k_eTimeout",
24036                Self::KEInvalidItemDef => "k_eInvalidItemDef",
24037            }
24038        }
24039        /// Creates an enum from field names used in the ProtoBuf definition.
24040        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24041            match value {
24042                "k_eInternalError" => Some(Self::KEInternalError),
24043                "k_eSuccess" => Some(Self::KESuccess),
24044                "k_eTooBusy" => Some(Self::KETooBusy),
24045                "k_eDisabled" => Some(Self::KEDisabled),
24046                "k_eTimeout" => Some(Self::KETimeout),
24047                "k_eInvalidItemDef" => Some(Self::KEInvalidItemDef),
24048                _ => None,
24049            }
24050        }
24051    }
24052}
24053#[derive(serde::Serialize, serde::Deserialize)]
24054#[derive(Clone, PartialEq, ::prost::Message)]
24055pub struct CMsgClientToGcPurchaseChargeCostItems {
24056    #[prost(message, repeated, tag = "1")]
24057    pub items: ::prost::alloc::vec::Vec<
24058        c_msg_client_to_gc_purchase_charge_cost_items::Item,
24059    >,
24060    #[prost(uint32, optional, tag = "2")]
24061    pub currency: ::core::option::Option<u32>,
24062}
24063/// Nested message and enum types in `CMsgClientToGCPurchaseChargeCostItems`.
24064pub mod c_msg_client_to_gc_purchase_charge_cost_items {
24065    #[derive(serde::Serialize, serde::Deserialize)]
24066    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24067    pub struct Item {
24068        #[prost(uint32, optional, tag = "1")]
24069        pub item_def_index: ::core::option::Option<u32>,
24070        #[prost(uint32, optional, tag = "2")]
24071        pub quantity: ::core::option::Option<u32>,
24072        #[prost(uint64, optional, tag = "3")]
24073        pub source_reference_id: ::core::option::Option<u64>,
24074        #[prost(int32, optional, tag = "4")]
24075        pub price_index: ::core::option::Option<i32>,
24076    }
24077}
24078#[derive(serde::Serialize, serde::Deserialize)]
24079#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24080pub struct CMsgClientToGcPurchaseChargeCostItemsResponse {
24081    #[prost(
24082        enumeration = "c_msg_client_to_gc_purchase_charge_cost_items_response::EResponse",
24083        optional,
24084        tag = "1",
24085        default = "KEInternalError"
24086    )]
24087    pub result: ::core::option::Option<i32>,
24088    #[prost(uint64, repeated, packed = "false", tag = "2")]
24089    pub item_ids: ::prost::alloc::vec::Vec<u64>,
24090}
24091/// Nested message and enum types in `CMsgClientToGCPurchaseChargeCostItemsResponse`.
24092pub mod c_msg_client_to_gc_purchase_charge_cost_items_response {
24093    #[derive(serde::Serialize, serde::Deserialize)]
24094    #[derive(
24095        Clone,
24096        Copy,
24097        Debug,
24098        PartialEq,
24099        Eq,
24100        Hash,
24101        PartialOrd,
24102        Ord,
24103        ::prost::Enumeration
24104    )]
24105    #[repr(i32)]
24106    pub enum EResponse {
24107        KEInternalError = 0,
24108        KESuccess = 1,
24109        KETooBusy = 2,
24110        KEDisabled = 3,
24111        KETimeout = 4,
24112        KEInvalidParam = 5,
24113        KEInvalidPrice = 6,
24114        KEInsufficientCharges = 7,
24115        KELimitedItem = 8,
24116        KEMissingPrereq = 10,
24117    }
24118    impl EResponse {
24119        /// String value of the enum field names used in the ProtoBuf definition.
24120        ///
24121        /// The values are not transformed in any way and thus are considered stable
24122        /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24123        pub fn as_str_name(&self) -> &'static str {
24124            match self {
24125                Self::KEInternalError => "k_eInternalError",
24126                Self::KESuccess => "k_eSuccess",
24127                Self::KETooBusy => "k_eTooBusy",
24128                Self::KEDisabled => "k_eDisabled",
24129                Self::KETimeout => "k_eTimeout",
24130                Self::KEInvalidParam => "k_eInvalidParam",
24131                Self::KEInvalidPrice => "k_eInvalidPrice",
24132                Self::KEInsufficientCharges => "k_eInsufficientCharges",
24133                Self::KELimitedItem => "k_eLimitedItem",
24134                Self::KEMissingPrereq => "k_eMissingPrereq",
24135            }
24136        }
24137        /// Creates an enum from field names used in the ProtoBuf definition.
24138        pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24139            match value {
24140                "k_eInternalError" => Some(Self::KEInternalError),
24141                "k_eSuccess" => Some(Self::KESuccess),
24142                "k_eTooBusy" => Some(Self::KETooBusy),
24143                "k_eDisabled" => Some(Self::KEDisabled),
24144                "k_eTimeout" => Some(Self::KETimeout),
24145                "k_eInvalidParam" => Some(Self::KEInvalidParam),
24146                "k_eInvalidPrice" => Some(Self::KEInvalidPrice),
24147                "k_eInsufficientCharges" => Some(Self::KEInsufficientCharges),
24148                "k_eLimitedItem" => Some(Self::KELimitedItem),
24149                "k_eMissingPrereq" => Some(Self::KEMissingPrereq),
24150                _ => None,
24151            }
24152        }
24153    }
24154}
24155#[derive(serde::Serialize, serde::Deserialize)]
24156#[derive(Clone, PartialEq, ::prost::Message)]
24157pub struct CMsgGcToClientInFlightChargesUpdated {
24158    #[prost(message, repeated, tag = "2")]
24159    pub in_flight_charges: ::prost::alloc::vec::Vec<
24160        c_msg_gc_to_client_in_flight_charges_updated::ItemCharges,
24161    >,
24162}
24163/// Nested message and enum types in `CMsgGCToClientInFlightChargesUpdated`.
24164pub mod c_msg_gc_to_client_in_flight_charges_updated {
24165    #[derive(serde::Serialize, serde::Deserialize)]
24166    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24167    pub struct ItemCharges {
24168        #[prost(uint32, optional, tag = "1")]
24169        pub item_def: ::core::option::Option<u32>,
24170        #[prost(uint32, optional, tag = "2")]
24171        pub charges_in_flight: ::core::option::Option<u32>,
24172    }
24173}
24174#[derive(serde::Serialize, serde::Deserialize)]
24175#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24176pub struct CMsgClientToGcCancelUnfinalizedTransactions {
24177    #[prost(uint32, optional, tag = "1")]
24178    pub unused: ::core::option::Option<u32>,
24179}
24180#[derive(serde::Serialize, serde::Deserialize)]
24181#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24182pub struct CMsgClientToGcCancelUnfinalizedTransactionsResponse {
24183    #[prost(uint32, optional, tag = "1")]
24184    pub result: ::core::option::Option<u32>,
24185}
24186#[derive(serde::Serialize, serde::Deserialize)]
24187#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
24188pub struct CMsgGcToGcUpdateWelcomeMsg {
24189    #[prost(bool, optional, tag = "1")]
24190    pub server: ::core::option::Option<bool>,
24191    #[prost(message, optional, tag = "2")]
24192    pub new_msg: ::core::option::Option<CExtraMsgBlock>,
24193    #[prost(bool, optional, tag = "3")]
24194    pub broadcast: ::core::option::Option<bool>,
24195}
24196#[derive(serde::Serialize, serde::Deserialize)]
24197#[derive(Clone, PartialEq, ::prost::Message)]
24198pub struct CMsgClientToGcRecycleMultipleItems {
24199    #[prost(message, repeated, tag = "1")]
24200    pub items: ::prost::alloc::vec::Vec<c_msg_client_to_gc_recycle_multiple_items::Item>,
24201}
24202/// Nested message and enum types in `CMsgClientToGCRecycleMultipleItems`.
24203pub mod c_msg_client_to_gc_recycle_multiple_items {
24204    #[derive(serde::Serialize, serde::Deserialize)]
24205    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
24206    pub struct Item {
24207        #[prost(uint64, optional, tag = "1")]
24208        pub item_id: ::core::option::Option<u64>,
24209        #[prost(uint32, optional, tag = "2")]
24210        pub slot_id: ::core::option::Option<u32>,
24211        #[prost(uint32, optional, tag = "3")]
24212        pub recipe_def_index: ::core::option::Option<u32>,
24213    }
24214}
24215#[derive(serde::Serialize, serde::Deserialize)]
24216#[derive(Clone, PartialEq, ::prost::Message)]
24217pub struct CMsgClientToGcRecycleMultipleItemsResponse {
24218    #[prost(message, repeated, tag = "1")]
24219    pub responses: ::prost::alloc::vec::Vec<CMsgClientToGcCreateStaticRecipeResponse>,
24220}
24221#[derive(serde::Serialize, serde::Deserialize)]
24222#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24223#[repr(i32)]
24224pub enum EgcItemMsg {
24225    KEMsgGcBase = 1000,
24226    KEMsgGcSetItemPosition = 1001,
24227    KEMsgClientToGcPackBundle = 1002,
24228    KEMsgClientToGcPackBundleResponse = 1003,
24229    KEMsgGcDelete = 1004,
24230    KEMsgGcVerifyCacheSubscription = 1005,
24231    KEMsgClientToGcNameItem = 1006,
24232    KEMsgGcPaintItem = 1009,
24233    KEMsgGcPaintItemResponse = 1010,
24234    KEMsgGcNameBaseItem = 1019,
24235    KEMsgGcNameBaseItemResponse = 1020,
24236    KEMsgGcUseItemRequest = 1025,
24237    KEMsgGcUseItemResponse = 1026,
24238    KEMsgGcGiftedItems = 1027,
24239    KEMsgGcUnwrapGiftRequest = 1037,
24240    KEMsgGcUnwrapGiftResponse = 1038,
24241    KEMsgGcSortItems = 1041,
24242    KEMsgGcBackpackSortFinished = 1058,
24243    KEMsgGcAdjustItemEquippedState = 1059,
24244    KEMsgGcItemAcknowledged = 1062,
24245    KEMsgClientToGcNameItemResponse = 1068,
24246    KEMsgGcApplyStrangePart = 1073,
24247    KEMsgGcApplyPennantUpgrade = 1076,
24248    KEMsgGcSetItemPositions = 1077,
24249    KEMsgGcApplyEggEssence = 1078,
24250    KEMsgGcNameEggEssenceResponse = 1079,
24251    KEMsgGcExtractGems = 1086,
24252    KEMsgGcAddSocket = 1087,
24253    KEMsgGcAddItemToSocket = 1088,
24254    KEMsgGcAddItemToSocketResponse = 1089,
24255    KEMsgGcAddSocketResponse = 1090,
24256    KEMsgGcResetStrangeGemCount = 1091,
24257    KEMsgGcRequestCrateItems = 1092,
24258    KEMsgGcRequestCrateItemsResponse = 1093,
24259    KEMsgGcExtractGemsResponse = 1094,
24260    KEMsgGcResetStrangeGemCountResponse = 1095,
24261    KEMsgGcServerUseItemRequest = 1103,
24262    KEMsgGcAddGiftItem = 1104,
24263    KEMsgSqlgcToGcRevokeUntrustedGift = 1105,
24264    KEMsgClientToGcRemoveItemGifterAttributes = 1109,
24265    KEMsgClientToGcRemoveItemName = 1110,
24266    KEMsgClientToGcRemoveItemDescription = 1111,
24267    KEMsgClientToGcRemoveItemAttributeResponse = 1112,
24268    KEMsgGcDevNewItemRequest = 2001,
24269    KEMsgGcDevNewItemRequestResponse = 2002,
24270    KEMsgGcDevUnlockAllItemStylesRequest = 2003,
24271    KEMsgGcDevUnlockAllItemStylesResponse = 2004,
24272    KEMsgGcStorePurchaseFinalize = 2504,
24273    KEMsgGcStorePurchaseFinalizeResponse = 2505,
24274    KEMsgGcStorePurchaseCancel = 2506,
24275    KEMsgGcStorePurchaseCancelResponse = 2507,
24276    KEMsgGcStorePurchaseInit = 2510,
24277    KEMsgGcStorePurchaseInitResponse = 2511,
24278    KEMsgGcToGcBannedWordListUpdated = 2515,
24279    KEMsgGcToGcDirtySdoCache = 2516,
24280    KEMsgGcToGcUpdateSqlKeyValue = 2518,
24281    KEMsgGcToGcBroadcastConsoleCommand = 2521,
24282    KEMsgGcServerVersionUpdated = 2522,
24283    KEMsgGcApplyAutograph = 2523,
24284    KEMsgGcToGcWebApiAccountChanged = 2524,
24285    KEMsgGcClientVersionUpdated = 2528,
24286    KEMsgGcToGcUpdateWelcomeMsg = 2529,
24287    KEMsgGcToGcPlayerStrangeCountAdjustments = 2535,
24288    KEMsgGcRequestStoreSalesData = 2536,
24289    KEMsgGcRequestStoreSalesDataResponse = 2537,
24290    KEMsgGcRequestStoreSalesDataUpToDateResponse = 2538,
24291    KEMsgGcToGcPingRequest = 2539,
24292    KEMsgGcToGcPingResponse = 2540,
24293    KEMsgGcToGcGetUserSessionServer = 2541,
24294    KEMsgGcToGcGetUserSessionServerResponse = 2542,
24295    KEMsgGcToGcGetUserServerMembers = 2543,
24296    KEMsgGcToGcGetUserServerMembersResponse = 2544,
24297    KEMsgGcToGcCanUseDropRateBonus = 2547,
24298    KEMsgSqlAddDropRateBonus = 2548,
24299    KEMsgGcToGcRefreshSoCache = 2549,
24300    KEMsgGcToGcGrantAccountRolledItems = 2554,
24301    KEMsgGcToGcGrantSelfMadeItemToAccount = 2555,
24302    KEMsgGcToGcUnlockCrate = 2556,
24303    KEMsgGcStatueCraft = 2561,
24304    KEMsgGcRedeemCode = 2562,
24305    KEMsgGcRedeemCodeResponse = 2563,
24306    KEMsgGcToGcItemConsumptionRollback = 2564,
24307    KEMsgClientToGcWrapAndDeliverGift = 2565,
24308    KEMsgClientToGcWrapAndDeliverGiftResponse = 2566,
24309    KEMsgClientToGcUnpackBundleResponse = 2567,
24310    KEMsgGcToClientStoreTransactionCompleted = 2568,
24311    KEMsgClientToGcEquipItems = 2569,
24312    KEMsgClientToGcEquipItemsResponse = 2570,
24313    KEMsgClientToGcUnlockItemStyle = 2571,
24314    KEMsgClientToGcUnlockItemStyleResponse = 2572,
24315    KEMsgClientToGcSetItemInventoryCategory = 2573,
24316    KEMsgClientToGcUnlockCrate = 2574,
24317    KEMsgClientToGcUnlockCrateResponse = 2575,
24318    KEMsgClientToGcUnpackBundle = 2576,
24319    KEMsgClientToGcSetItemStyle = 2577,
24320    KEMsgClientToGcSetItemStyleResponse = 2578,
24321    KEMsgSqlgcToGcGrantBackpackSlots = 2580,
24322    KEMsgClientToGcLookupAccountName = 2581,
24323    KEMsgClientToGcLookupAccountNameResponse = 2582,
24324    KEMsgClientToGcCreateStaticRecipe = 2584,
24325    KEMsgClientToGcCreateStaticRecipeResponse = 2585,
24326    KEMsgGcToGcStoreProcessCdKeyTransaction = 2586,
24327    KEMsgGcToGcStoreProcessCdKeyTransactionResponse = 2587,
24328    KEMsgGcToGcStoreProcessSettlement = 2588,
24329    KEMsgGcToGcStoreProcessSettlementResponse = 2589,
24330    KEMsgGcToGcConsoleOutput = 2590,
24331    KEMsgGcToClientItemAges = 2591,
24332    KEMsgGcToGcInternalTestMsg = 2592,
24333    KEMsgGcToGcClientServerVersionsUpdated = 2593,
24334    KEMsgGcUseMultipleItemsRequest = 2594,
24335    KEMsgGcGetAccountSubscriptionItem = 2595,
24336    KEMsgGcGetAccountSubscriptionItemResponse = 2596,
24337    KEMsgGcToGcBroadcastMessageFromSub = 2598,
24338    KEMsgGcToClientCurrencyPricePoints = 2599,
24339    KEMsgGcToGcAddSubscriptionTime = 2600,
24340    KEMsgGcToGcFlushSteamInventoryCache = 2601,
24341    KEMsgGcRequestCrateEscalationLevel = 2602,
24342    KEMsgGcRequestCrateEscalationLevelResponse = 2603,
24343    KEMsgGcToGcUpdateSubscriptionItems = 2604,
24344    KEMsgGcToGcSelfPing = 2605,
24345    KEMsgGcToGcGetInfuxIntervalStats = 2606,
24346    KEMsgGcToGcGetInfuxIntervalStatsResponse = 2607,
24347    KEMsgGcToGcPurchaseSucceeded = 2608,
24348    KEMsgClientToGcGetLimitedItemPurchaseQuantity = 2609,
24349    KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse = 2610,
24350    KEMsgGcToGcBetaDeleteItems = 2611,
24351    KEMsgClientToGcGetInFlightItemCharges = 2612,
24352    KEMsgClientToGcGetInFlightItemChargesResponse = 2613,
24353    KEMsgGcToClientInFlightChargesUpdated = 2614,
24354    KEMsgClientToGcPurchaseChargeCostItems = 2615,
24355    KEMsgClientToGcPurchaseChargeCostItemsResponse = 2616,
24356    KEMsgClientToGcCancelUnfinalizedTransactions = 2617,
24357    KEMsgClientToGcCancelUnfinalizedTransactionsResponse = 2618,
24358    KEMsgClientToGcRecycleMultipleItems = 2619,
24359    KEMsgClientToGcRecycleMultipleItemsResponse = 2620,
24360}
24361impl EgcItemMsg {
24362    /// String value of the enum field names used in the ProtoBuf definition.
24363    ///
24364    /// The values are not transformed in any way and thus are considered stable
24365    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24366    pub fn as_str_name(&self) -> &'static str {
24367        match self {
24368            Self::KEMsgGcBase => "k_EMsgGCBase",
24369            Self::KEMsgGcSetItemPosition => "k_EMsgGCSetItemPosition",
24370            Self::KEMsgClientToGcPackBundle => "k_EMsgClientToGCPackBundle",
24371            Self::KEMsgClientToGcPackBundleResponse => {
24372                "k_EMsgClientToGCPackBundleResponse"
24373            }
24374            Self::KEMsgGcDelete => "k_EMsgGCDelete",
24375            Self::KEMsgGcVerifyCacheSubscription => "k_EMsgGCVerifyCacheSubscription",
24376            Self::KEMsgClientToGcNameItem => "k_EMsgClientToGCNameItem",
24377            Self::KEMsgGcPaintItem => "k_EMsgGCPaintItem",
24378            Self::KEMsgGcPaintItemResponse => "k_EMsgGCPaintItemResponse",
24379            Self::KEMsgGcNameBaseItem => "k_EMsgGCNameBaseItem",
24380            Self::KEMsgGcNameBaseItemResponse => "k_EMsgGCNameBaseItemResponse",
24381            Self::KEMsgGcUseItemRequest => "k_EMsgGCUseItemRequest",
24382            Self::KEMsgGcUseItemResponse => "k_EMsgGCUseItemResponse",
24383            Self::KEMsgGcGiftedItems => "k_EMsgGCGiftedItems",
24384            Self::KEMsgGcUnwrapGiftRequest => "k_EMsgGCUnwrapGiftRequest",
24385            Self::KEMsgGcUnwrapGiftResponse => "k_EMsgGCUnwrapGiftResponse",
24386            Self::KEMsgGcSortItems => "k_EMsgGCSortItems",
24387            Self::KEMsgGcBackpackSortFinished => "k_EMsgGCBackpackSortFinished",
24388            Self::KEMsgGcAdjustItemEquippedState => "k_EMsgGCAdjustItemEquippedState",
24389            Self::KEMsgGcItemAcknowledged => "k_EMsgGCItemAcknowledged",
24390            Self::KEMsgClientToGcNameItemResponse => "k_EMsgClientToGCNameItemResponse",
24391            Self::KEMsgGcApplyStrangePart => "k_EMsgGCApplyStrangePart",
24392            Self::KEMsgGcApplyPennantUpgrade => "k_EMsgGCApplyPennantUpgrade",
24393            Self::KEMsgGcSetItemPositions => "k_EMsgGCSetItemPositions",
24394            Self::KEMsgGcApplyEggEssence => "k_EMsgGCApplyEggEssence",
24395            Self::KEMsgGcNameEggEssenceResponse => "k_EMsgGCNameEggEssenceResponse",
24396            Self::KEMsgGcExtractGems => "k_EMsgGCExtractGems",
24397            Self::KEMsgGcAddSocket => "k_EMsgGCAddSocket",
24398            Self::KEMsgGcAddItemToSocket => "k_EMsgGCAddItemToSocket",
24399            Self::KEMsgGcAddItemToSocketResponse => "k_EMsgGCAddItemToSocketResponse",
24400            Self::KEMsgGcAddSocketResponse => "k_EMsgGCAddSocketResponse",
24401            Self::KEMsgGcResetStrangeGemCount => "k_EMsgGCResetStrangeGemCount",
24402            Self::KEMsgGcRequestCrateItems => "k_EMsgGCRequestCrateItems",
24403            Self::KEMsgGcRequestCrateItemsResponse => "k_EMsgGCRequestCrateItemsResponse",
24404            Self::KEMsgGcExtractGemsResponse => "k_EMsgGCExtractGemsResponse",
24405            Self::KEMsgGcResetStrangeGemCountResponse => {
24406                "k_EMsgGCResetStrangeGemCountResponse"
24407            }
24408            Self::KEMsgGcServerUseItemRequest => "k_EMsgGCServerUseItemRequest",
24409            Self::KEMsgGcAddGiftItem => "k_EMsgGCAddGiftItem",
24410            Self::KEMsgSqlgcToGcRevokeUntrustedGift => {
24411                "k_EMsgSQLGCToGCRevokeUntrustedGift"
24412            }
24413            Self::KEMsgClientToGcRemoveItemGifterAttributes => {
24414                "k_EMsgClientToGCRemoveItemGifterAttributes"
24415            }
24416            Self::KEMsgClientToGcRemoveItemName => "k_EMsgClientToGCRemoveItemName",
24417            Self::KEMsgClientToGcRemoveItemDescription => {
24418                "k_EMsgClientToGCRemoveItemDescription"
24419            }
24420            Self::KEMsgClientToGcRemoveItemAttributeResponse => {
24421                "k_EMsgClientToGCRemoveItemAttributeResponse"
24422            }
24423            Self::KEMsgGcDevNewItemRequest => "k_EMsgGCDev_NewItemRequest",
24424            Self::KEMsgGcDevNewItemRequestResponse => {
24425                "k_EMsgGCDev_NewItemRequestResponse"
24426            }
24427            Self::KEMsgGcDevUnlockAllItemStylesRequest => {
24428                "k_EMsgGCDev_UnlockAllItemStylesRequest"
24429            }
24430            Self::KEMsgGcDevUnlockAllItemStylesResponse => {
24431                "k_EMsgGCDev_UnlockAllItemStylesResponse"
24432            }
24433            Self::KEMsgGcStorePurchaseFinalize => "k_EMsgGCStorePurchaseFinalize",
24434            Self::KEMsgGcStorePurchaseFinalizeResponse => {
24435                "k_EMsgGCStorePurchaseFinalizeResponse"
24436            }
24437            Self::KEMsgGcStorePurchaseCancel => "k_EMsgGCStorePurchaseCancel",
24438            Self::KEMsgGcStorePurchaseCancelResponse => {
24439                "k_EMsgGCStorePurchaseCancelResponse"
24440            }
24441            Self::KEMsgGcStorePurchaseInit => "k_EMsgGCStorePurchaseInit",
24442            Self::KEMsgGcStorePurchaseInitResponse => "k_EMsgGCStorePurchaseInitResponse",
24443            Self::KEMsgGcToGcBannedWordListUpdated => "k_EMsgGCToGCBannedWordListUpdated",
24444            Self::KEMsgGcToGcDirtySdoCache => "k_EMsgGCToGCDirtySDOCache",
24445            Self::KEMsgGcToGcUpdateSqlKeyValue => "k_EMsgGCToGCUpdateSQLKeyValue",
24446            Self::KEMsgGcToGcBroadcastConsoleCommand => {
24447                "k_EMsgGCToGCBroadcastConsoleCommand"
24448            }
24449            Self::KEMsgGcServerVersionUpdated => "k_EMsgGCServerVersionUpdated",
24450            Self::KEMsgGcApplyAutograph => "k_EMsgGCApplyAutograph",
24451            Self::KEMsgGcToGcWebApiAccountChanged => "k_EMsgGCToGCWebAPIAccountChanged",
24452            Self::KEMsgGcClientVersionUpdated => "k_EMsgGCClientVersionUpdated",
24453            Self::KEMsgGcToGcUpdateWelcomeMsg => "k_EMsgGCToGCUpdateWelcomeMsg",
24454            Self::KEMsgGcToGcPlayerStrangeCountAdjustments => {
24455                "k_EMsgGCToGCPlayerStrangeCountAdjustments"
24456            }
24457            Self::KEMsgGcRequestStoreSalesData => "k_EMsgGCRequestStoreSalesData",
24458            Self::KEMsgGcRequestStoreSalesDataResponse => {
24459                "k_EMsgGCRequestStoreSalesDataResponse"
24460            }
24461            Self::KEMsgGcRequestStoreSalesDataUpToDateResponse => {
24462                "k_EMsgGCRequestStoreSalesDataUpToDateResponse"
24463            }
24464            Self::KEMsgGcToGcPingRequest => "k_EMsgGCToGCPingRequest",
24465            Self::KEMsgGcToGcPingResponse => "k_EMsgGCToGCPingResponse",
24466            Self::KEMsgGcToGcGetUserSessionServer => "k_EMsgGCToGCGetUserSessionServer",
24467            Self::KEMsgGcToGcGetUserSessionServerResponse => {
24468                "k_EMsgGCToGCGetUserSessionServerResponse"
24469            }
24470            Self::KEMsgGcToGcGetUserServerMembers => "k_EMsgGCToGCGetUserServerMembers",
24471            Self::KEMsgGcToGcGetUserServerMembersResponse => {
24472                "k_EMsgGCToGCGetUserServerMembersResponse"
24473            }
24474            Self::KEMsgGcToGcCanUseDropRateBonus => "k_EMsgGCToGCCanUseDropRateBonus",
24475            Self::KEMsgSqlAddDropRateBonus => "k_EMsgSQLAddDropRateBonus",
24476            Self::KEMsgGcToGcRefreshSoCache => "k_EMsgGCToGCRefreshSOCache",
24477            Self::KEMsgGcToGcGrantAccountRolledItems => {
24478                "k_EMsgGCToGCGrantAccountRolledItems"
24479            }
24480            Self::KEMsgGcToGcGrantSelfMadeItemToAccount => {
24481                "k_EMsgGCToGCGrantSelfMadeItemToAccount"
24482            }
24483            Self::KEMsgGcToGcUnlockCrate => "k_EMsgGCToGCUnlockCrate",
24484            Self::KEMsgGcStatueCraft => "k_EMsgGCStatueCraft",
24485            Self::KEMsgGcRedeemCode => "k_EMsgGCRedeemCode",
24486            Self::KEMsgGcRedeemCodeResponse => "k_EMsgGCRedeemCodeResponse",
24487            Self::KEMsgGcToGcItemConsumptionRollback => {
24488                "k_EMsgGCToGCItemConsumptionRollback"
24489            }
24490            Self::KEMsgClientToGcWrapAndDeliverGift => {
24491                "k_EMsgClientToGCWrapAndDeliverGift"
24492            }
24493            Self::KEMsgClientToGcWrapAndDeliverGiftResponse => {
24494                "k_EMsgClientToGCWrapAndDeliverGiftResponse"
24495            }
24496            Self::KEMsgClientToGcUnpackBundleResponse => {
24497                "k_EMsgClientToGCUnpackBundleResponse"
24498            }
24499            Self::KEMsgGcToClientStoreTransactionCompleted => {
24500                "k_EMsgGCToClientStoreTransactionCompleted"
24501            }
24502            Self::KEMsgClientToGcEquipItems => "k_EMsgClientToGCEquipItems",
24503            Self::KEMsgClientToGcEquipItemsResponse => {
24504                "k_EMsgClientToGCEquipItemsResponse"
24505            }
24506            Self::KEMsgClientToGcUnlockItemStyle => "k_EMsgClientToGCUnlockItemStyle",
24507            Self::KEMsgClientToGcUnlockItemStyleResponse => {
24508                "k_EMsgClientToGCUnlockItemStyleResponse"
24509            }
24510            Self::KEMsgClientToGcSetItemInventoryCategory => {
24511                "k_EMsgClientToGCSetItemInventoryCategory"
24512            }
24513            Self::KEMsgClientToGcUnlockCrate => "k_EMsgClientToGCUnlockCrate",
24514            Self::KEMsgClientToGcUnlockCrateResponse => {
24515                "k_EMsgClientToGCUnlockCrateResponse"
24516            }
24517            Self::KEMsgClientToGcUnpackBundle => "k_EMsgClientToGCUnpackBundle",
24518            Self::KEMsgClientToGcSetItemStyle => "k_EMsgClientToGCSetItemStyle",
24519            Self::KEMsgClientToGcSetItemStyleResponse => {
24520                "k_EMsgClientToGCSetItemStyleResponse"
24521            }
24522            Self::KEMsgSqlgcToGcGrantBackpackSlots => "k_EMsgSQLGCToGCGrantBackpackSlots",
24523            Self::KEMsgClientToGcLookupAccountName => "k_EMsgClientToGCLookupAccountName",
24524            Self::KEMsgClientToGcLookupAccountNameResponse => {
24525                "k_EMsgClientToGCLookupAccountNameResponse"
24526            }
24527            Self::KEMsgClientToGcCreateStaticRecipe => {
24528                "k_EMsgClientToGCCreateStaticRecipe"
24529            }
24530            Self::KEMsgClientToGcCreateStaticRecipeResponse => {
24531                "k_EMsgClientToGCCreateStaticRecipeResponse"
24532            }
24533            Self::KEMsgGcToGcStoreProcessCdKeyTransaction => {
24534                "k_EMsgGCToGCStoreProcessCDKeyTransaction"
24535            }
24536            Self::KEMsgGcToGcStoreProcessCdKeyTransactionResponse => {
24537                "k_EMsgGCToGCStoreProcessCDKeyTransactionResponse"
24538            }
24539            Self::KEMsgGcToGcStoreProcessSettlement => {
24540                "k_EMsgGCToGCStoreProcessSettlement"
24541            }
24542            Self::KEMsgGcToGcStoreProcessSettlementResponse => {
24543                "k_EMsgGCToGCStoreProcessSettlementResponse"
24544            }
24545            Self::KEMsgGcToGcConsoleOutput => "k_EMsgGCToGCConsoleOutput",
24546            Self::KEMsgGcToClientItemAges => "k_EMsgGCToClientItemAges",
24547            Self::KEMsgGcToGcInternalTestMsg => "k_EMsgGCToGCInternalTestMsg",
24548            Self::KEMsgGcToGcClientServerVersionsUpdated => {
24549                "k_EMsgGCToGCClientServerVersionsUpdated"
24550            }
24551            Self::KEMsgGcUseMultipleItemsRequest => "k_EMsgGCUseMultipleItemsRequest",
24552            Self::KEMsgGcGetAccountSubscriptionItem => {
24553                "k_EMsgGCGetAccountSubscriptionItem"
24554            }
24555            Self::KEMsgGcGetAccountSubscriptionItemResponse => {
24556                "k_EMsgGCGetAccountSubscriptionItemResponse"
24557            }
24558            Self::KEMsgGcToGcBroadcastMessageFromSub => {
24559                "k_EMsgGCToGCBroadcastMessageFromSub"
24560            }
24561            Self::KEMsgGcToClientCurrencyPricePoints => {
24562                "k_EMsgGCToClientCurrencyPricePoints"
24563            }
24564            Self::KEMsgGcToGcAddSubscriptionTime => "k_EMsgGCToGCAddSubscriptionTime",
24565            Self::KEMsgGcToGcFlushSteamInventoryCache => {
24566                "k_EMsgGCToGCFlushSteamInventoryCache"
24567            }
24568            Self::KEMsgGcRequestCrateEscalationLevel => {
24569                "k_EMsgGCRequestCrateEscalationLevel"
24570            }
24571            Self::KEMsgGcRequestCrateEscalationLevelResponse => {
24572                "k_EMsgGCRequestCrateEscalationLevelResponse"
24573            }
24574            Self::KEMsgGcToGcUpdateSubscriptionItems => {
24575                "k_EMsgGCToGCUpdateSubscriptionItems"
24576            }
24577            Self::KEMsgGcToGcSelfPing => "k_EMsgGCToGCSelfPing",
24578            Self::KEMsgGcToGcGetInfuxIntervalStats => "k_EMsgGCToGCGetInfuxIntervalStats",
24579            Self::KEMsgGcToGcGetInfuxIntervalStatsResponse => {
24580                "k_EMsgGCToGCGetInfuxIntervalStatsResponse"
24581            }
24582            Self::KEMsgGcToGcPurchaseSucceeded => "k_EMsgGCToGCPurchaseSucceeded",
24583            Self::KEMsgClientToGcGetLimitedItemPurchaseQuantity => {
24584                "k_EMsgClientToGCGetLimitedItemPurchaseQuantity"
24585            }
24586            Self::KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse => {
24587                "k_EMsgClientToGCGetLimitedItemPurchaseQuantityResponse"
24588            }
24589            Self::KEMsgGcToGcBetaDeleteItems => "k_EMsgGCToGCBetaDeleteItems",
24590            Self::KEMsgClientToGcGetInFlightItemCharges => {
24591                "k_EMsgClientToGCGetInFlightItemCharges"
24592            }
24593            Self::KEMsgClientToGcGetInFlightItemChargesResponse => {
24594                "k_EMsgClientToGCGetInFlightItemChargesResponse"
24595            }
24596            Self::KEMsgGcToClientInFlightChargesUpdated => {
24597                "k_EMsgGCToClientInFlightChargesUpdated"
24598            }
24599            Self::KEMsgClientToGcPurchaseChargeCostItems => {
24600                "k_EMsgClientToGCPurchaseChargeCostItems"
24601            }
24602            Self::KEMsgClientToGcPurchaseChargeCostItemsResponse => {
24603                "k_EMsgClientToGCPurchaseChargeCostItemsResponse"
24604            }
24605            Self::KEMsgClientToGcCancelUnfinalizedTransactions => {
24606                "k_EMsgClientToGCCancelUnfinalizedTransactions"
24607            }
24608            Self::KEMsgClientToGcCancelUnfinalizedTransactionsResponse => {
24609                "k_EMsgClientToGCCancelUnfinalizedTransactionsResponse"
24610            }
24611            Self::KEMsgClientToGcRecycleMultipleItems => {
24612                "k_EMsgClientToGCRecycleMultipleItems"
24613            }
24614            Self::KEMsgClientToGcRecycleMultipleItemsResponse => {
24615                "k_EMsgClientToGCRecycleMultipleItemsResponse"
24616            }
24617        }
24618    }
24619    /// Creates an enum from field names used in the ProtoBuf definition.
24620    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
24621        match value {
24622            "k_EMsgGCBase" => Some(Self::KEMsgGcBase),
24623            "k_EMsgGCSetItemPosition" => Some(Self::KEMsgGcSetItemPosition),
24624            "k_EMsgClientToGCPackBundle" => Some(Self::KEMsgClientToGcPackBundle),
24625            "k_EMsgClientToGCPackBundleResponse" => {
24626                Some(Self::KEMsgClientToGcPackBundleResponse)
24627            }
24628            "k_EMsgGCDelete" => Some(Self::KEMsgGcDelete),
24629            "k_EMsgGCVerifyCacheSubscription" => {
24630                Some(Self::KEMsgGcVerifyCacheSubscription)
24631            }
24632            "k_EMsgClientToGCNameItem" => Some(Self::KEMsgClientToGcNameItem),
24633            "k_EMsgGCPaintItem" => Some(Self::KEMsgGcPaintItem),
24634            "k_EMsgGCPaintItemResponse" => Some(Self::KEMsgGcPaintItemResponse),
24635            "k_EMsgGCNameBaseItem" => Some(Self::KEMsgGcNameBaseItem),
24636            "k_EMsgGCNameBaseItemResponse" => Some(Self::KEMsgGcNameBaseItemResponse),
24637            "k_EMsgGCUseItemRequest" => Some(Self::KEMsgGcUseItemRequest),
24638            "k_EMsgGCUseItemResponse" => Some(Self::KEMsgGcUseItemResponse),
24639            "k_EMsgGCGiftedItems" => Some(Self::KEMsgGcGiftedItems),
24640            "k_EMsgGCUnwrapGiftRequest" => Some(Self::KEMsgGcUnwrapGiftRequest),
24641            "k_EMsgGCUnwrapGiftResponse" => Some(Self::KEMsgGcUnwrapGiftResponse),
24642            "k_EMsgGCSortItems" => Some(Self::KEMsgGcSortItems),
24643            "k_EMsgGCBackpackSortFinished" => Some(Self::KEMsgGcBackpackSortFinished),
24644            "k_EMsgGCAdjustItemEquippedState" => {
24645                Some(Self::KEMsgGcAdjustItemEquippedState)
24646            }
24647            "k_EMsgGCItemAcknowledged" => Some(Self::KEMsgGcItemAcknowledged),
24648            "k_EMsgClientToGCNameItemResponse" => {
24649                Some(Self::KEMsgClientToGcNameItemResponse)
24650            }
24651            "k_EMsgGCApplyStrangePart" => Some(Self::KEMsgGcApplyStrangePart),
24652            "k_EMsgGCApplyPennantUpgrade" => Some(Self::KEMsgGcApplyPennantUpgrade),
24653            "k_EMsgGCSetItemPositions" => Some(Self::KEMsgGcSetItemPositions),
24654            "k_EMsgGCApplyEggEssence" => Some(Self::KEMsgGcApplyEggEssence),
24655            "k_EMsgGCNameEggEssenceResponse" => Some(Self::KEMsgGcNameEggEssenceResponse),
24656            "k_EMsgGCExtractGems" => Some(Self::KEMsgGcExtractGems),
24657            "k_EMsgGCAddSocket" => Some(Self::KEMsgGcAddSocket),
24658            "k_EMsgGCAddItemToSocket" => Some(Self::KEMsgGcAddItemToSocket),
24659            "k_EMsgGCAddItemToSocketResponse" => {
24660                Some(Self::KEMsgGcAddItemToSocketResponse)
24661            }
24662            "k_EMsgGCAddSocketResponse" => Some(Self::KEMsgGcAddSocketResponse),
24663            "k_EMsgGCResetStrangeGemCount" => Some(Self::KEMsgGcResetStrangeGemCount),
24664            "k_EMsgGCRequestCrateItems" => Some(Self::KEMsgGcRequestCrateItems),
24665            "k_EMsgGCRequestCrateItemsResponse" => {
24666                Some(Self::KEMsgGcRequestCrateItemsResponse)
24667            }
24668            "k_EMsgGCExtractGemsResponse" => Some(Self::KEMsgGcExtractGemsResponse),
24669            "k_EMsgGCResetStrangeGemCountResponse" => {
24670                Some(Self::KEMsgGcResetStrangeGemCountResponse)
24671            }
24672            "k_EMsgGCServerUseItemRequest" => Some(Self::KEMsgGcServerUseItemRequest),
24673            "k_EMsgGCAddGiftItem" => Some(Self::KEMsgGcAddGiftItem),
24674            "k_EMsgSQLGCToGCRevokeUntrustedGift" => {
24675                Some(Self::KEMsgSqlgcToGcRevokeUntrustedGift)
24676            }
24677            "k_EMsgClientToGCRemoveItemGifterAttributes" => {
24678                Some(Self::KEMsgClientToGcRemoveItemGifterAttributes)
24679            }
24680            "k_EMsgClientToGCRemoveItemName" => Some(Self::KEMsgClientToGcRemoveItemName),
24681            "k_EMsgClientToGCRemoveItemDescription" => {
24682                Some(Self::KEMsgClientToGcRemoveItemDescription)
24683            }
24684            "k_EMsgClientToGCRemoveItemAttributeResponse" => {
24685                Some(Self::KEMsgClientToGcRemoveItemAttributeResponse)
24686            }
24687            "k_EMsgGCDev_NewItemRequest" => Some(Self::KEMsgGcDevNewItemRequest),
24688            "k_EMsgGCDev_NewItemRequestResponse" => {
24689                Some(Self::KEMsgGcDevNewItemRequestResponse)
24690            }
24691            "k_EMsgGCDev_UnlockAllItemStylesRequest" => {
24692                Some(Self::KEMsgGcDevUnlockAllItemStylesRequest)
24693            }
24694            "k_EMsgGCDev_UnlockAllItemStylesResponse" => {
24695                Some(Self::KEMsgGcDevUnlockAllItemStylesResponse)
24696            }
24697            "k_EMsgGCStorePurchaseFinalize" => Some(Self::KEMsgGcStorePurchaseFinalize),
24698            "k_EMsgGCStorePurchaseFinalizeResponse" => {
24699                Some(Self::KEMsgGcStorePurchaseFinalizeResponse)
24700            }
24701            "k_EMsgGCStorePurchaseCancel" => Some(Self::KEMsgGcStorePurchaseCancel),
24702            "k_EMsgGCStorePurchaseCancelResponse" => {
24703                Some(Self::KEMsgGcStorePurchaseCancelResponse)
24704            }
24705            "k_EMsgGCStorePurchaseInit" => Some(Self::KEMsgGcStorePurchaseInit),
24706            "k_EMsgGCStorePurchaseInitResponse" => {
24707                Some(Self::KEMsgGcStorePurchaseInitResponse)
24708            }
24709            "k_EMsgGCToGCBannedWordListUpdated" => {
24710                Some(Self::KEMsgGcToGcBannedWordListUpdated)
24711            }
24712            "k_EMsgGCToGCDirtySDOCache" => Some(Self::KEMsgGcToGcDirtySdoCache),
24713            "k_EMsgGCToGCUpdateSQLKeyValue" => Some(Self::KEMsgGcToGcUpdateSqlKeyValue),
24714            "k_EMsgGCToGCBroadcastConsoleCommand" => {
24715                Some(Self::KEMsgGcToGcBroadcastConsoleCommand)
24716            }
24717            "k_EMsgGCServerVersionUpdated" => Some(Self::KEMsgGcServerVersionUpdated),
24718            "k_EMsgGCApplyAutograph" => Some(Self::KEMsgGcApplyAutograph),
24719            "k_EMsgGCToGCWebAPIAccountChanged" => {
24720                Some(Self::KEMsgGcToGcWebApiAccountChanged)
24721            }
24722            "k_EMsgGCClientVersionUpdated" => Some(Self::KEMsgGcClientVersionUpdated),
24723            "k_EMsgGCToGCUpdateWelcomeMsg" => Some(Self::KEMsgGcToGcUpdateWelcomeMsg),
24724            "k_EMsgGCToGCPlayerStrangeCountAdjustments" => {
24725                Some(Self::KEMsgGcToGcPlayerStrangeCountAdjustments)
24726            }
24727            "k_EMsgGCRequestStoreSalesData" => Some(Self::KEMsgGcRequestStoreSalesData),
24728            "k_EMsgGCRequestStoreSalesDataResponse" => {
24729                Some(Self::KEMsgGcRequestStoreSalesDataResponse)
24730            }
24731            "k_EMsgGCRequestStoreSalesDataUpToDateResponse" => {
24732                Some(Self::KEMsgGcRequestStoreSalesDataUpToDateResponse)
24733            }
24734            "k_EMsgGCToGCPingRequest" => Some(Self::KEMsgGcToGcPingRequest),
24735            "k_EMsgGCToGCPingResponse" => Some(Self::KEMsgGcToGcPingResponse),
24736            "k_EMsgGCToGCGetUserSessionServer" => {
24737                Some(Self::KEMsgGcToGcGetUserSessionServer)
24738            }
24739            "k_EMsgGCToGCGetUserSessionServerResponse" => {
24740                Some(Self::KEMsgGcToGcGetUserSessionServerResponse)
24741            }
24742            "k_EMsgGCToGCGetUserServerMembers" => {
24743                Some(Self::KEMsgGcToGcGetUserServerMembers)
24744            }
24745            "k_EMsgGCToGCGetUserServerMembersResponse" => {
24746                Some(Self::KEMsgGcToGcGetUserServerMembersResponse)
24747            }
24748            "k_EMsgGCToGCCanUseDropRateBonus" => {
24749                Some(Self::KEMsgGcToGcCanUseDropRateBonus)
24750            }
24751            "k_EMsgSQLAddDropRateBonus" => Some(Self::KEMsgSqlAddDropRateBonus),
24752            "k_EMsgGCToGCRefreshSOCache" => Some(Self::KEMsgGcToGcRefreshSoCache),
24753            "k_EMsgGCToGCGrantAccountRolledItems" => {
24754                Some(Self::KEMsgGcToGcGrantAccountRolledItems)
24755            }
24756            "k_EMsgGCToGCGrantSelfMadeItemToAccount" => {
24757                Some(Self::KEMsgGcToGcGrantSelfMadeItemToAccount)
24758            }
24759            "k_EMsgGCToGCUnlockCrate" => Some(Self::KEMsgGcToGcUnlockCrate),
24760            "k_EMsgGCStatueCraft" => Some(Self::KEMsgGcStatueCraft),
24761            "k_EMsgGCRedeemCode" => Some(Self::KEMsgGcRedeemCode),
24762            "k_EMsgGCRedeemCodeResponse" => Some(Self::KEMsgGcRedeemCodeResponse),
24763            "k_EMsgGCToGCItemConsumptionRollback" => {
24764                Some(Self::KEMsgGcToGcItemConsumptionRollback)
24765            }
24766            "k_EMsgClientToGCWrapAndDeliverGift" => {
24767                Some(Self::KEMsgClientToGcWrapAndDeliverGift)
24768            }
24769            "k_EMsgClientToGCWrapAndDeliverGiftResponse" => {
24770                Some(Self::KEMsgClientToGcWrapAndDeliverGiftResponse)
24771            }
24772            "k_EMsgClientToGCUnpackBundleResponse" => {
24773                Some(Self::KEMsgClientToGcUnpackBundleResponse)
24774            }
24775            "k_EMsgGCToClientStoreTransactionCompleted" => {
24776                Some(Self::KEMsgGcToClientStoreTransactionCompleted)
24777            }
24778            "k_EMsgClientToGCEquipItems" => Some(Self::KEMsgClientToGcEquipItems),
24779            "k_EMsgClientToGCEquipItemsResponse" => {
24780                Some(Self::KEMsgClientToGcEquipItemsResponse)
24781            }
24782            "k_EMsgClientToGCUnlockItemStyle" => {
24783                Some(Self::KEMsgClientToGcUnlockItemStyle)
24784            }
24785            "k_EMsgClientToGCUnlockItemStyleResponse" => {
24786                Some(Self::KEMsgClientToGcUnlockItemStyleResponse)
24787            }
24788            "k_EMsgClientToGCSetItemInventoryCategory" => {
24789                Some(Self::KEMsgClientToGcSetItemInventoryCategory)
24790            }
24791            "k_EMsgClientToGCUnlockCrate" => Some(Self::KEMsgClientToGcUnlockCrate),
24792            "k_EMsgClientToGCUnlockCrateResponse" => {
24793                Some(Self::KEMsgClientToGcUnlockCrateResponse)
24794            }
24795            "k_EMsgClientToGCUnpackBundle" => Some(Self::KEMsgClientToGcUnpackBundle),
24796            "k_EMsgClientToGCSetItemStyle" => Some(Self::KEMsgClientToGcSetItemStyle),
24797            "k_EMsgClientToGCSetItemStyleResponse" => {
24798                Some(Self::KEMsgClientToGcSetItemStyleResponse)
24799            }
24800            "k_EMsgSQLGCToGCGrantBackpackSlots" => {
24801                Some(Self::KEMsgSqlgcToGcGrantBackpackSlots)
24802            }
24803            "k_EMsgClientToGCLookupAccountName" => {
24804                Some(Self::KEMsgClientToGcLookupAccountName)
24805            }
24806            "k_EMsgClientToGCLookupAccountNameResponse" => {
24807                Some(Self::KEMsgClientToGcLookupAccountNameResponse)
24808            }
24809            "k_EMsgClientToGCCreateStaticRecipe" => {
24810                Some(Self::KEMsgClientToGcCreateStaticRecipe)
24811            }
24812            "k_EMsgClientToGCCreateStaticRecipeResponse" => {
24813                Some(Self::KEMsgClientToGcCreateStaticRecipeResponse)
24814            }
24815            "k_EMsgGCToGCStoreProcessCDKeyTransaction" => {
24816                Some(Self::KEMsgGcToGcStoreProcessCdKeyTransaction)
24817            }
24818            "k_EMsgGCToGCStoreProcessCDKeyTransactionResponse" => {
24819                Some(Self::KEMsgGcToGcStoreProcessCdKeyTransactionResponse)
24820            }
24821            "k_EMsgGCToGCStoreProcessSettlement" => {
24822                Some(Self::KEMsgGcToGcStoreProcessSettlement)
24823            }
24824            "k_EMsgGCToGCStoreProcessSettlementResponse" => {
24825                Some(Self::KEMsgGcToGcStoreProcessSettlementResponse)
24826            }
24827            "k_EMsgGCToGCConsoleOutput" => Some(Self::KEMsgGcToGcConsoleOutput),
24828            "k_EMsgGCToClientItemAges" => Some(Self::KEMsgGcToClientItemAges),
24829            "k_EMsgGCToGCInternalTestMsg" => Some(Self::KEMsgGcToGcInternalTestMsg),
24830            "k_EMsgGCToGCClientServerVersionsUpdated" => {
24831                Some(Self::KEMsgGcToGcClientServerVersionsUpdated)
24832            }
24833            "k_EMsgGCUseMultipleItemsRequest" => {
24834                Some(Self::KEMsgGcUseMultipleItemsRequest)
24835            }
24836            "k_EMsgGCGetAccountSubscriptionItem" => {
24837                Some(Self::KEMsgGcGetAccountSubscriptionItem)
24838            }
24839            "k_EMsgGCGetAccountSubscriptionItemResponse" => {
24840                Some(Self::KEMsgGcGetAccountSubscriptionItemResponse)
24841            }
24842            "k_EMsgGCToGCBroadcastMessageFromSub" => {
24843                Some(Self::KEMsgGcToGcBroadcastMessageFromSub)
24844            }
24845            "k_EMsgGCToClientCurrencyPricePoints" => {
24846                Some(Self::KEMsgGcToClientCurrencyPricePoints)
24847            }
24848            "k_EMsgGCToGCAddSubscriptionTime" => {
24849                Some(Self::KEMsgGcToGcAddSubscriptionTime)
24850            }
24851            "k_EMsgGCToGCFlushSteamInventoryCache" => {
24852                Some(Self::KEMsgGcToGcFlushSteamInventoryCache)
24853            }
24854            "k_EMsgGCRequestCrateEscalationLevel" => {
24855                Some(Self::KEMsgGcRequestCrateEscalationLevel)
24856            }
24857            "k_EMsgGCRequestCrateEscalationLevelResponse" => {
24858                Some(Self::KEMsgGcRequestCrateEscalationLevelResponse)
24859            }
24860            "k_EMsgGCToGCUpdateSubscriptionItems" => {
24861                Some(Self::KEMsgGcToGcUpdateSubscriptionItems)
24862            }
24863            "k_EMsgGCToGCSelfPing" => Some(Self::KEMsgGcToGcSelfPing),
24864            "k_EMsgGCToGCGetInfuxIntervalStats" => {
24865                Some(Self::KEMsgGcToGcGetInfuxIntervalStats)
24866            }
24867            "k_EMsgGCToGCGetInfuxIntervalStatsResponse" => {
24868                Some(Self::KEMsgGcToGcGetInfuxIntervalStatsResponse)
24869            }
24870            "k_EMsgGCToGCPurchaseSucceeded" => Some(Self::KEMsgGcToGcPurchaseSucceeded),
24871            "k_EMsgClientToGCGetLimitedItemPurchaseQuantity" => {
24872                Some(Self::KEMsgClientToGcGetLimitedItemPurchaseQuantity)
24873            }
24874            "k_EMsgClientToGCGetLimitedItemPurchaseQuantityResponse" => {
24875                Some(Self::KEMsgClientToGcGetLimitedItemPurchaseQuantityResponse)
24876            }
24877            "k_EMsgGCToGCBetaDeleteItems" => Some(Self::KEMsgGcToGcBetaDeleteItems),
24878            "k_EMsgClientToGCGetInFlightItemCharges" => {
24879                Some(Self::KEMsgClientToGcGetInFlightItemCharges)
24880            }
24881            "k_EMsgClientToGCGetInFlightItemChargesResponse" => {
24882                Some(Self::KEMsgClientToGcGetInFlightItemChargesResponse)
24883            }
24884            "k_EMsgGCToClientInFlightChargesUpdated" => {
24885                Some(Self::KEMsgGcToClientInFlightChargesUpdated)
24886            }
24887            "k_EMsgClientToGCPurchaseChargeCostItems" => {
24888                Some(Self::KEMsgClientToGcPurchaseChargeCostItems)
24889            }
24890            "k_EMsgClientToGCPurchaseChargeCostItemsResponse" => {
24891                Some(Self::KEMsgClientToGcPurchaseChargeCostItemsResponse)
24892            }
24893            "k_EMsgClientToGCCancelUnfinalizedTransactions" => {
24894                Some(Self::KEMsgClientToGcCancelUnfinalizedTransactions)
24895            }
24896            "k_EMsgClientToGCCancelUnfinalizedTransactionsResponse" => {
24897                Some(Self::KEMsgClientToGcCancelUnfinalizedTransactionsResponse)
24898            }
24899            "k_EMsgClientToGCRecycleMultipleItems" => {
24900                Some(Self::KEMsgClientToGcRecycleMultipleItems)
24901            }
24902            "k_EMsgClientToGCRecycleMultipleItemsResponse" => {
24903                Some(Self::KEMsgClientToGcRecycleMultipleItemsResponse)
24904            }
24905            _ => None,
24906        }
24907    }
24908}
24909#[derive(serde::Serialize, serde::Deserialize)]
24910#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
24911#[repr(i32)]
24912pub enum EgcMsgInitiateTradeResponse {
24913    KEgcMsgInitiateTradeResponseAccepted = 0,
24914    KEgcMsgInitiateTradeResponseDeclined = 1,
24915    KEgcMsgInitiateTradeResponseVacBannedInitiator = 2,
24916    KEgcMsgInitiateTradeResponseVacBannedTarget = 3,
24917    KEgcMsgInitiateTradeResponseTargetAlreadyTrading = 4,
24918    KEgcMsgInitiateTradeResponseDisabled = 5,
24919    KEgcMsgInitiateTradeResponseNotLoggedIn = 6,
24920    KEgcMsgInitiateTradeResponseCancel = 7,
24921    KEgcMsgInitiateTradeResponseTooSoon = 8,
24922    KEgcMsgInitiateTradeResponseTooSoonPenalty = 9,
24923    KEgcMsgInitiateTradeResponseTradeBannedInitiator = 10,
24924    KEgcMsgInitiateTradeResponseTradeBannedTarget = 11,
24925    KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated = 12,
24926    KEgcMsgInitiateTradeResponseSharedAccountInitiator = 13,
24927    KEgcMsgInitiateTradeResponseServiceUnavailable = 14,
24928    KEgcMsgInitiateTradeResponseTargetBlocked = 15,
24929    KEgcMsgInitiateTradeResponseNeedVerifiedEmail = 16,
24930    KEgcMsgInitiateTradeResponseNeedSteamGuard = 17,
24931    KEgcMsgInitiateTradeResponseSteamGuardDuration = 18,
24932    KEgcMsgInitiateTradeResponseTheyCannotTrade = 19,
24933    KEgcMsgInitiateTradeResponseRecentPasswordReset = 20,
24934    KEgcMsgInitiateTradeResponseUsingNewDevice = 21,
24935    KEgcMsgInitiateTradeResponseSentInvalidCookie = 22,
24936    KEgcMsgInitiateTradeResponseTooRecentFriend = 23,
24937    KEgcMsgInitiateTradeResponseWalledFundsNotTrusted = 24,
24938}
24939impl EgcMsgInitiateTradeResponse {
24940    /// String value of the enum field names used in the ProtoBuf definition.
24941    ///
24942    /// The values are not transformed in any way and thus are considered stable
24943    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
24944    pub fn as_str_name(&self) -> &'static str {
24945        match self {
24946            Self::KEgcMsgInitiateTradeResponseAccepted => {
24947                "k_EGCMsgInitiateTradeResponse_Accepted"
24948            }
24949            Self::KEgcMsgInitiateTradeResponseDeclined => {
24950                "k_EGCMsgInitiateTradeResponse_Declined"
24951            }
24952            Self::KEgcMsgInitiateTradeResponseVacBannedInitiator => {
24953                "k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator"
24954            }
24955            Self::KEgcMsgInitiateTradeResponseVacBannedTarget => {
24956                "k_EGCMsgInitiateTradeResponse_VAC_Banned_Target"
24957            }
24958            Self::KEgcMsgInitiateTradeResponseTargetAlreadyTrading => {
24959                "k_EGCMsgInitiateTradeResponse_Target_Already_Trading"
24960            }
24961            Self::KEgcMsgInitiateTradeResponseDisabled => {
24962                "k_EGCMsgInitiateTradeResponse_Disabled"
24963            }
24964            Self::KEgcMsgInitiateTradeResponseNotLoggedIn => {
24965                "k_EGCMsgInitiateTradeResponse_NotLoggedIn"
24966            }
24967            Self::KEgcMsgInitiateTradeResponseCancel => {
24968                "k_EGCMsgInitiateTradeResponse_Cancel"
24969            }
24970            Self::KEgcMsgInitiateTradeResponseTooSoon => {
24971                "k_EGCMsgInitiateTradeResponse_TooSoon"
24972            }
24973            Self::KEgcMsgInitiateTradeResponseTooSoonPenalty => {
24974                "k_EGCMsgInitiateTradeResponse_TooSoonPenalty"
24975            }
24976            Self::KEgcMsgInitiateTradeResponseTradeBannedInitiator => {
24977                "k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator"
24978            }
24979            Self::KEgcMsgInitiateTradeResponseTradeBannedTarget => {
24980                "k_EGCMsgInitiateTradeResponse_Trade_Banned_Target"
24981            }
24982            Self::KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated => {
24983                "k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED"
24984            }
24985            Self::KEgcMsgInitiateTradeResponseSharedAccountInitiator => {
24986                "k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator"
24987            }
24988            Self::KEgcMsgInitiateTradeResponseServiceUnavailable => {
24989                "k_EGCMsgInitiateTradeResponse_Service_Unavailable"
24990            }
24991            Self::KEgcMsgInitiateTradeResponseTargetBlocked => {
24992                "k_EGCMsgInitiateTradeResponse_Target_Blocked"
24993            }
24994            Self::KEgcMsgInitiateTradeResponseNeedVerifiedEmail => {
24995                "k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail"
24996            }
24997            Self::KEgcMsgInitiateTradeResponseNeedSteamGuard => {
24998                "k_EGCMsgInitiateTradeResponse_NeedSteamGuard"
24999            }
25000            Self::KEgcMsgInitiateTradeResponseSteamGuardDuration => {
25001                "k_EGCMsgInitiateTradeResponse_SteamGuardDuration"
25002            }
25003            Self::KEgcMsgInitiateTradeResponseTheyCannotTrade => {
25004                "k_EGCMsgInitiateTradeResponse_TheyCannotTrade"
25005            }
25006            Self::KEgcMsgInitiateTradeResponseRecentPasswordReset => {
25007                "k_EGCMsgInitiateTradeResponse_Recent_Password_Reset"
25008            }
25009            Self::KEgcMsgInitiateTradeResponseUsingNewDevice => {
25010                "k_EGCMsgInitiateTradeResponse_Using_New_Device"
25011            }
25012            Self::KEgcMsgInitiateTradeResponseSentInvalidCookie => {
25013                "k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie"
25014            }
25015            Self::KEgcMsgInitiateTradeResponseTooRecentFriend => {
25016                "k_EGCMsgInitiateTradeResponse_TooRecentFriend"
25017            }
25018            Self::KEgcMsgInitiateTradeResponseWalledFundsNotTrusted => {
25019                "k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted"
25020            }
25021        }
25022    }
25023    /// Creates an enum from field names used in the ProtoBuf definition.
25024    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25025        match value {
25026            "k_EGCMsgInitiateTradeResponse_Accepted" => {
25027                Some(Self::KEgcMsgInitiateTradeResponseAccepted)
25028            }
25029            "k_EGCMsgInitiateTradeResponse_Declined" => {
25030                Some(Self::KEgcMsgInitiateTradeResponseDeclined)
25031            }
25032            "k_EGCMsgInitiateTradeResponse_VAC_Banned_Initiator" => {
25033                Some(Self::KEgcMsgInitiateTradeResponseVacBannedInitiator)
25034            }
25035            "k_EGCMsgInitiateTradeResponse_VAC_Banned_Target" => {
25036                Some(Self::KEgcMsgInitiateTradeResponseVacBannedTarget)
25037            }
25038            "k_EGCMsgInitiateTradeResponse_Target_Already_Trading" => {
25039                Some(Self::KEgcMsgInitiateTradeResponseTargetAlreadyTrading)
25040            }
25041            "k_EGCMsgInitiateTradeResponse_Disabled" => {
25042                Some(Self::KEgcMsgInitiateTradeResponseDisabled)
25043            }
25044            "k_EGCMsgInitiateTradeResponse_NotLoggedIn" => {
25045                Some(Self::KEgcMsgInitiateTradeResponseNotLoggedIn)
25046            }
25047            "k_EGCMsgInitiateTradeResponse_Cancel" => {
25048                Some(Self::KEgcMsgInitiateTradeResponseCancel)
25049            }
25050            "k_EGCMsgInitiateTradeResponse_TooSoon" => {
25051                Some(Self::KEgcMsgInitiateTradeResponseTooSoon)
25052            }
25053            "k_EGCMsgInitiateTradeResponse_TooSoonPenalty" => {
25054                Some(Self::KEgcMsgInitiateTradeResponseTooSoonPenalty)
25055            }
25056            "k_EGCMsgInitiateTradeResponse_Trade_Banned_Initiator" => {
25057                Some(Self::KEgcMsgInitiateTradeResponseTradeBannedInitiator)
25058            }
25059            "k_EGCMsgInitiateTradeResponse_Trade_Banned_Target" => {
25060                Some(Self::KEgcMsgInitiateTradeResponseTradeBannedTarget)
25061            }
25062            "k_EGCMsgInitiateTradeResponse_Free_Account_Initiator_DEPRECATED" => {
25063                Some(Self::KEgcMsgInitiateTradeResponseFreeAccountInitiatorDeprecated)
25064            }
25065            "k_EGCMsgInitiateTradeResponse_Shared_Account_Initiator" => {
25066                Some(Self::KEgcMsgInitiateTradeResponseSharedAccountInitiator)
25067            }
25068            "k_EGCMsgInitiateTradeResponse_Service_Unavailable" => {
25069                Some(Self::KEgcMsgInitiateTradeResponseServiceUnavailable)
25070            }
25071            "k_EGCMsgInitiateTradeResponse_Target_Blocked" => {
25072                Some(Self::KEgcMsgInitiateTradeResponseTargetBlocked)
25073            }
25074            "k_EGCMsgInitiateTradeResponse_NeedVerifiedEmail" => {
25075                Some(Self::KEgcMsgInitiateTradeResponseNeedVerifiedEmail)
25076            }
25077            "k_EGCMsgInitiateTradeResponse_NeedSteamGuard" => {
25078                Some(Self::KEgcMsgInitiateTradeResponseNeedSteamGuard)
25079            }
25080            "k_EGCMsgInitiateTradeResponse_SteamGuardDuration" => {
25081                Some(Self::KEgcMsgInitiateTradeResponseSteamGuardDuration)
25082            }
25083            "k_EGCMsgInitiateTradeResponse_TheyCannotTrade" => {
25084                Some(Self::KEgcMsgInitiateTradeResponseTheyCannotTrade)
25085            }
25086            "k_EGCMsgInitiateTradeResponse_Recent_Password_Reset" => {
25087                Some(Self::KEgcMsgInitiateTradeResponseRecentPasswordReset)
25088            }
25089            "k_EGCMsgInitiateTradeResponse_Using_New_Device" => {
25090                Some(Self::KEgcMsgInitiateTradeResponseUsingNewDevice)
25091            }
25092            "k_EGCMsgInitiateTradeResponse_Sent_Invalid_Cookie" => {
25093                Some(Self::KEgcMsgInitiateTradeResponseSentInvalidCookie)
25094            }
25095            "k_EGCMsgInitiateTradeResponse_TooRecentFriend" => {
25096                Some(Self::KEgcMsgInitiateTradeResponseTooRecentFriend)
25097            }
25098            "k_EGCMsgInitiateTradeResponse_WalledFundsNotTrusted" => {
25099                Some(Self::KEgcMsgInitiateTradeResponseWalledFundsNotTrusted)
25100            }
25101            _ => None,
25102        }
25103    }
25104}
25105#[derive(serde::Serialize, serde::Deserialize)]
25106#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25107pub struct CMsgTeArmorRicochet {
25108    #[prost(message, optional, tag = "1")]
25109    pub pos: ::core::option::Option<CMsgVector>,
25110    #[prost(message, optional, tag = "2")]
25111    pub dir: ::core::option::Option<CMsgVector>,
25112}
25113#[derive(serde::Serialize, serde::Deserialize)]
25114#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25115pub struct CMsgTeBaseBeam {
25116    #[prost(fixed64, optional, tag = "1")]
25117    pub modelindex: ::core::option::Option<u64>,
25118    #[prost(fixed64, optional, tag = "2")]
25119    pub haloindex: ::core::option::Option<u64>,
25120    #[prost(uint32, optional, tag = "3")]
25121    pub startframe: ::core::option::Option<u32>,
25122    #[prost(uint32, optional, tag = "4")]
25123    pub framerate: ::core::option::Option<u32>,
25124    #[prost(float, optional, tag = "5")]
25125    pub life: ::core::option::Option<f32>,
25126    #[prost(float, optional, tag = "6")]
25127    pub width: ::core::option::Option<f32>,
25128    #[prost(float, optional, tag = "7")]
25129    pub endwidth: ::core::option::Option<f32>,
25130    #[prost(uint32, optional, tag = "8")]
25131    pub fadelength: ::core::option::Option<u32>,
25132    #[prost(float, optional, tag = "9")]
25133    pub amplitude: ::core::option::Option<f32>,
25134    #[prost(fixed32, optional, tag = "10")]
25135    pub color: ::core::option::Option<u32>,
25136    #[prost(uint32, optional, tag = "11")]
25137    pub speed: ::core::option::Option<u32>,
25138    #[prost(uint32, optional, tag = "12")]
25139    pub flags: ::core::option::Option<u32>,
25140}
25141#[derive(serde::Serialize, serde::Deserialize)]
25142#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25143pub struct CMsgTeBeamEntPoint {
25144    #[prost(message, optional, tag = "1")]
25145    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25146    #[prost(uint32, optional, tag = "2")]
25147    pub startentity: ::core::option::Option<u32>,
25148    #[prost(uint32, optional, tag = "3")]
25149    pub endentity: ::core::option::Option<u32>,
25150    #[prost(message, optional, tag = "4")]
25151    pub start: ::core::option::Option<CMsgVector>,
25152    #[prost(message, optional, tag = "5")]
25153    pub end: ::core::option::Option<CMsgVector>,
25154}
25155#[derive(serde::Serialize, serde::Deserialize)]
25156#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25157pub struct CMsgTeBeamEnts {
25158    #[prost(message, optional, tag = "1")]
25159    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25160    #[prost(uint32, optional, tag = "2")]
25161    pub startentity: ::core::option::Option<u32>,
25162    #[prost(uint32, optional, tag = "3")]
25163    pub endentity: ::core::option::Option<u32>,
25164}
25165#[derive(serde::Serialize, serde::Deserialize)]
25166#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25167pub struct CMsgTeBeamPoints {
25168    #[prost(message, optional, tag = "1")]
25169    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25170    #[prost(message, optional, tag = "2")]
25171    pub start: ::core::option::Option<CMsgVector>,
25172    #[prost(message, optional, tag = "3")]
25173    pub end: ::core::option::Option<CMsgVector>,
25174}
25175#[derive(serde::Serialize, serde::Deserialize)]
25176#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25177pub struct CMsgTeBeamRing {
25178    #[prost(message, optional, tag = "1")]
25179    pub base: ::core::option::Option<CMsgTeBaseBeam>,
25180    #[prost(uint32, optional, tag = "2")]
25181    pub startentity: ::core::option::Option<u32>,
25182    #[prost(uint32, optional, tag = "3")]
25183    pub endentity: ::core::option::Option<u32>,
25184}
25185#[derive(serde::Serialize, serde::Deserialize)]
25186#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25187pub struct CMsgTeBubbles {
25188    #[prost(message, optional, tag = "1")]
25189    pub mins: ::core::option::Option<CMsgVector>,
25190    #[prost(message, optional, tag = "2")]
25191    pub maxs: ::core::option::Option<CMsgVector>,
25192    #[prost(float, optional, tag = "3")]
25193    pub height: ::core::option::Option<f32>,
25194    #[prost(uint32, optional, tag = "4")]
25195    pub count: ::core::option::Option<u32>,
25196    #[prost(float, optional, tag = "5")]
25197    pub speed: ::core::option::Option<f32>,
25198}
25199#[derive(serde::Serialize, serde::Deserialize)]
25200#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25201pub struct CMsgTeBubbleTrail {
25202    #[prost(message, optional, tag = "1")]
25203    pub mins: ::core::option::Option<CMsgVector>,
25204    #[prost(message, optional, tag = "2")]
25205    pub maxs: ::core::option::Option<CMsgVector>,
25206    #[prost(float, optional, tag = "3")]
25207    pub waterz: ::core::option::Option<f32>,
25208    #[prost(uint32, optional, tag = "4")]
25209    pub count: ::core::option::Option<u32>,
25210    #[prost(float, optional, tag = "5")]
25211    pub speed: ::core::option::Option<f32>,
25212}
25213#[derive(serde::Serialize, serde::Deserialize)]
25214#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25215pub struct CMsgTeDecal {
25216    #[prost(message, optional, tag = "1")]
25217    pub origin: ::core::option::Option<CMsgVector>,
25218    #[prost(message, optional, tag = "2")]
25219    pub start: ::core::option::Option<CMsgVector>,
25220    #[prost(int32, optional, tag = "3", default = "-1")]
25221    pub entity: ::core::option::Option<i32>,
25222    #[prost(uint32, optional, tag = "4")]
25223    pub hitbox: ::core::option::Option<u32>,
25224    #[prost(uint32, optional, tag = "5")]
25225    pub index: ::core::option::Option<u32>,
25226}
25227#[derive(serde::Serialize, serde::Deserialize)]
25228#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25229pub struct CMsgEffectData {
25230    #[prost(message, optional, tag = "1")]
25231    pub origin: ::core::option::Option<CMsgVector>,
25232    #[prost(message, optional, tag = "2")]
25233    pub start: ::core::option::Option<CMsgVector>,
25234    #[prost(message, optional, tag = "3")]
25235    pub normal: ::core::option::Option<CMsgVector>,
25236    #[prost(message, optional, tag = "4")]
25237    pub angles: ::core::option::Option<CMsgQAngle>,
25238    #[prost(fixed32, optional, tag = "5", default = "16777215")]
25239    pub entity: ::core::option::Option<u32>,
25240    #[prost(fixed32, optional, tag = "6", default = "16777215")]
25241    pub otherentity: ::core::option::Option<u32>,
25242    #[prost(float, optional, tag = "7")]
25243    pub scale: ::core::option::Option<f32>,
25244    #[prost(float, optional, tag = "8")]
25245    pub magnitude: ::core::option::Option<f32>,
25246    #[prost(float, optional, tag = "9")]
25247    pub radius: ::core::option::Option<f32>,
25248    #[prost(fixed32, optional, tag = "10")]
25249    pub surfaceprop: ::core::option::Option<u32>,
25250    #[prost(fixed64, optional, tag = "11")]
25251    pub effectindex: ::core::option::Option<u64>,
25252    #[prost(uint32, optional, tag = "12")]
25253    pub damagetype: ::core::option::Option<u32>,
25254    #[prost(uint32, optional, tag = "13")]
25255    pub material: ::core::option::Option<u32>,
25256    #[prost(uint32, optional, tag = "14")]
25257    pub hitbox: ::core::option::Option<u32>,
25258    #[prost(uint32, optional, tag = "15")]
25259    pub color: ::core::option::Option<u32>,
25260    #[prost(uint32, optional, tag = "16")]
25261    pub flags: ::core::option::Option<u32>,
25262    #[prost(int32, optional, tag = "17")]
25263    pub attachmentindex: ::core::option::Option<i32>,
25264    #[prost(uint32, optional, tag = "18")]
25265    pub effectname: ::core::option::Option<u32>,
25266    #[prost(uint32, optional, tag = "19", default = "0")]
25267    pub attachmentname: ::core::option::Option<u32>,
25268}
25269#[derive(serde::Serialize, serde::Deserialize)]
25270#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25271pub struct CMsgTeEffectDispatch {
25272    #[prost(message, optional, tag = "1")]
25273    pub effectdata: ::core::option::Option<CMsgEffectData>,
25274}
25275#[derive(serde::Serialize, serde::Deserialize)]
25276#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25277pub struct CMsgTeEnergySplash {
25278    #[prost(message, optional, tag = "1")]
25279    pub pos: ::core::option::Option<CMsgVector>,
25280    #[prost(message, optional, tag = "2")]
25281    pub dir: ::core::option::Option<CMsgVector>,
25282    #[prost(bool, optional, tag = "3")]
25283    pub explosive: ::core::option::Option<bool>,
25284}
25285#[derive(serde::Serialize, serde::Deserialize)]
25286#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25287pub struct CMsgTeFizz {
25288    #[prost(int32, optional, tag = "1", default = "-1")]
25289    pub entity: ::core::option::Option<i32>,
25290    #[prost(uint32, optional, tag = "2")]
25291    pub density: ::core::option::Option<u32>,
25292    #[prost(int32, optional, tag = "3")]
25293    pub current: ::core::option::Option<i32>,
25294}
25295#[derive(serde::Serialize, serde::Deserialize)]
25296#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25297pub struct CMsgTeShatterSurface {
25298    #[prost(message, optional, tag = "1")]
25299    pub origin: ::core::option::Option<CMsgVector>,
25300    #[prost(message, optional, tag = "2")]
25301    pub angles: ::core::option::Option<CMsgQAngle>,
25302    #[prost(message, optional, tag = "3")]
25303    pub force: ::core::option::Option<CMsgVector>,
25304    #[prost(message, optional, tag = "4")]
25305    pub forcepos: ::core::option::Option<CMsgVector>,
25306    #[prost(float, optional, tag = "5")]
25307    pub width: ::core::option::Option<f32>,
25308    #[prost(float, optional, tag = "6")]
25309    pub height: ::core::option::Option<f32>,
25310    #[prost(float, optional, tag = "7")]
25311    pub shardsize: ::core::option::Option<f32>,
25312    #[prost(uint32, optional, tag = "8")]
25313    pub surfacetype: ::core::option::Option<u32>,
25314    #[prost(fixed32, optional, tag = "9")]
25315    pub frontcolor: ::core::option::Option<u32>,
25316    #[prost(fixed32, optional, tag = "10")]
25317    pub backcolor: ::core::option::Option<u32>,
25318}
25319#[derive(serde::Serialize, serde::Deserialize)]
25320#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25321pub struct CMsgTeGlowSprite {
25322    #[prost(message, optional, tag = "1")]
25323    pub origin: ::core::option::Option<CMsgVector>,
25324    #[prost(float, optional, tag = "2")]
25325    pub scale: ::core::option::Option<f32>,
25326    #[prost(float, optional, tag = "3")]
25327    pub life: ::core::option::Option<f32>,
25328    #[prost(uint32, optional, tag = "4")]
25329    pub brightness: ::core::option::Option<u32>,
25330}
25331#[derive(serde::Serialize, serde::Deserialize)]
25332#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25333pub struct CMsgTeImpact {
25334    #[prost(message, optional, tag = "1")]
25335    pub origin: ::core::option::Option<CMsgVector>,
25336    #[prost(message, optional, tag = "2")]
25337    pub normal: ::core::option::Option<CMsgVector>,
25338    #[prost(uint32, optional, tag = "3")]
25339    pub r#type: ::core::option::Option<u32>,
25340}
25341#[derive(serde::Serialize, serde::Deserialize)]
25342#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25343pub struct CMsgTeMuzzleFlash {
25344    #[prost(message, optional, tag = "1")]
25345    pub origin: ::core::option::Option<CMsgVector>,
25346    #[prost(message, optional, tag = "2")]
25347    pub angles: ::core::option::Option<CMsgQAngle>,
25348    #[prost(float, optional, tag = "3")]
25349    pub scale: ::core::option::Option<f32>,
25350    #[prost(uint32, optional, tag = "4")]
25351    pub r#type: ::core::option::Option<u32>,
25352}
25353#[derive(serde::Serialize, serde::Deserialize)]
25354#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25355pub struct CMsgTeBloodStream {
25356    #[prost(message, optional, tag = "1")]
25357    pub origin: ::core::option::Option<CMsgVector>,
25358    #[prost(message, optional, tag = "2")]
25359    pub direction: ::core::option::Option<CMsgVector>,
25360    #[prost(fixed32, optional, tag = "3")]
25361    pub color: ::core::option::Option<u32>,
25362    #[prost(uint32, optional, tag = "4")]
25363    pub amount: ::core::option::Option<u32>,
25364}
25365#[derive(serde::Serialize, serde::Deserialize)]
25366#[derive(Clone, PartialEq, ::prost::Message)]
25367pub struct CMsgTeExplosion {
25368    #[prost(message, optional, tag = "1")]
25369    pub origin: ::core::option::Option<CMsgVector>,
25370    #[prost(uint32, optional, tag = "3")]
25371    pub flags: ::core::option::Option<u32>,
25372    #[prost(message, optional, tag = "4")]
25373    pub normal: ::core::option::Option<CMsgVector>,
25374    #[prost(uint32, optional, tag = "6")]
25375    pub radius: ::core::option::Option<u32>,
25376    #[prost(uint32, optional, tag = "7")]
25377    pub magnitude: ::core::option::Option<u32>,
25378    #[prost(bool, optional, tag = "9")]
25379    pub affect_ragdolls: ::core::option::Option<bool>,
25380    #[prost(string, optional, tag = "10")]
25381    pub sound_name: ::core::option::Option<::prost::alloc::string::String>,
25382    #[prost(uint32, optional, tag = "11")]
25383    pub explosion_type: ::core::option::Option<u32>,
25384    #[prost(uint32, optional, tag = "15", default = "0")]
25385    pub explosion_type_name: ::core::option::Option<u32>,
25386    #[prost(bool, optional, tag = "12")]
25387    pub create_debris: ::core::option::Option<bool>,
25388    #[prost(message, optional, tag = "13")]
25389    pub debris_origin: ::core::option::Option<CMsgVector>,
25390    #[prost(fixed32, optional, tag = "14")]
25391    pub debris_surfaceprop: ::core::option::Option<u32>,
25392}
25393#[derive(serde::Serialize, serde::Deserialize)]
25394#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25395pub struct CMsgTeDust {
25396    #[prost(message, optional, tag = "1")]
25397    pub origin: ::core::option::Option<CMsgVector>,
25398    #[prost(float, optional, tag = "2")]
25399    pub size: ::core::option::Option<f32>,
25400    #[prost(float, optional, tag = "3")]
25401    pub speed: ::core::option::Option<f32>,
25402    #[prost(message, optional, tag = "4")]
25403    pub direction: ::core::option::Option<CMsgVector>,
25404}
25405#[derive(serde::Serialize, serde::Deserialize)]
25406#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25407pub struct CMsgTeLargeFunnel {
25408    #[prost(message, optional, tag = "1")]
25409    pub origin: ::core::option::Option<CMsgVector>,
25410    #[prost(uint32, optional, tag = "2")]
25411    pub reversed: ::core::option::Option<u32>,
25412}
25413#[derive(serde::Serialize, serde::Deserialize)]
25414#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25415pub struct CMsgTeSparks {
25416    #[prost(message, optional, tag = "1")]
25417    pub origin: ::core::option::Option<CMsgVector>,
25418    #[prost(uint32, optional, tag = "2")]
25419    pub magnitude: ::core::option::Option<u32>,
25420    #[prost(uint32, optional, tag = "3")]
25421    pub length: ::core::option::Option<u32>,
25422    #[prost(message, optional, tag = "4")]
25423    pub direction: ::core::option::Option<CMsgVector>,
25424}
25425#[derive(serde::Serialize, serde::Deserialize)]
25426#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25427pub struct CMsgTePhysicsProp {
25428    #[prost(message, optional, tag = "1")]
25429    pub origin: ::core::option::Option<CMsgVector>,
25430    #[prost(message, optional, tag = "2")]
25431    pub velocity: ::core::option::Option<CMsgVector>,
25432    #[prost(message, optional, tag = "3")]
25433    pub angles: ::core::option::Option<CMsgQAngle>,
25434    #[prost(fixed32, optional, tag = "4", default = "0")]
25435    pub skin: ::core::option::Option<u32>,
25436    #[prost(uint32, optional, tag = "5")]
25437    pub flags: ::core::option::Option<u32>,
25438    #[prost(uint32, optional, tag = "6")]
25439    pub effects: ::core::option::Option<u32>,
25440    #[prost(fixed32, optional, tag = "7")]
25441    pub color: ::core::option::Option<u32>,
25442    #[prost(fixed64, optional, tag = "8")]
25443    pub modelindex: ::core::option::Option<u64>,
25444    #[prost(uint32, optional, tag = "9")]
25445    pub unused_breakmodelsnottomake: ::core::option::Option<u32>,
25446    #[prost(float, optional, tag = "10")]
25447    pub scale: ::core::option::Option<f32>,
25448    #[prost(message, optional, tag = "11")]
25449    pub dmgpos: ::core::option::Option<CMsgVector>,
25450    #[prost(message, optional, tag = "12")]
25451    pub dmgdir: ::core::option::Option<CMsgVector>,
25452    #[prost(int32, optional, tag = "13")]
25453    pub dmgtype: ::core::option::Option<i32>,
25454}
25455#[derive(serde::Serialize, serde::Deserialize)]
25456#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25457pub struct CMsgTeSmoke {
25458    #[prost(message, optional, tag = "1")]
25459    pub origin: ::core::option::Option<CMsgVector>,
25460    #[prost(float, optional, tag = "2")]
25461    pub scale: ::core::option::Option<f32>,
25462}
25463#[derive(serde::Serialize, serde::Deserialize)]
25464#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25465pub struct CMsgTeWorldDecal {
25466    #[prost(message, optional, tag = "1")]
25467    pub origin: ::core::option::Option<CMsgVector>,
25468    #[prost(message, optional, tag = "2")]
25469    pub normal: ::core::option::Option<CMsgVector>,
25470    #[prost(uint32, optional, tag = "3")]
25471    pub index: ::core::option::Option<u32>,
25472}
25473#[derive(serde::Serialize, serde::Deserialize)]
25474#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
25475#[repr(i32)]
25476pub enum EteProtobufIds {
25477    TeEffectDispatchId = 400,
25478    TeArmorRicochetId = 401,
25479    TeBeamEntPointId = 402,
25480    TeBeamEntsId = 403,
25481    TeBeamPointsId = 404,
25482    TeBeamRingId = 405,
25483    TeBubblesId = 408,
25484    TeBubbleTrailId = 409,
25485    TeDecalId = 410,
25486    TeWorldDecalId = 411,
25487    TeEnergySplashId = 412,
25488    TeFizzId = 413,
25489    TeShatterSurfaceId = 414,
25490    TeGlowSpriteId = 415,
25491    TeImpactId = 416,
25492    TeMuzzleFlashId = 417,
25493    TeBloodStreamId = 418,
25494    TeExplosionId = 419,
25495    TeDustId = 420,
25496    TeLargeFunnelId = 421,
25497    TeSparksId = 422,
25498    TePhysicsPropId = 423,
25499    TeSmokeId = 426,
25500}
25501impl EteProtobufIds {
25502    /// String value of the enum field names used in the ProtoBuf definition.
25503    ///
25504    /// The values are not transformed in any way and thus are considered stable
25505    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
25506    pub fn as_str_name(&self) -> &'static str {
25507        match self {
25508            Self::TeEffectDispatchId => "TE_EffectDispatchId",
25509            Self::TeArmorRicochetId => "TE_ArmorRicochetId",
25510            Self::TeBeamEntPointId => "TE_BeamEntPointId",
25511            Self::TeBeamEntsId => "TE_BeamEntsId",
25512            Self::TeBeamPointsId => "TE_BeamPointsId",
25513            Self::TeBeamRingId => "TE_BeamRingId",
25514            Self::TeBubblesId => "TE_BubblesId",
25515            Self::TeBubbleTrailId => "TE_BubbleTrailId",
25516            Self::TeDecalId => "TE_DecalId",
25517            Self::TeWorldDecalId => "TE_WorldDecalId",
25518            Self::TeEnergySplashId => "TE_EnergySplashId",
25519            Self::TeFizzId => "TE_FizzId",
25520            Self::TeShatterSurfaceId => "TE_ShatterSurfaceId",
25521            Self::TeGlowSpriteId => "TE_GlowSpriteId",
25522            Self::TeImpactId => "TE_ImpactId",
25523            Self::TeMuzzleFlashId => "TE_MuzzleFlashId",
25524            Self::TeBloodStreamId => "TE_BloodStreamId",
25525            Self::TeExplosionId => "TE_ExplosionId",
25526            Self::TeDustId => "TE_DustId",
25527            Self::TeLargeFunnelId => "TE_LargeFunnelId",
25528            Self::TeSparksId => "TE_SparksId",
25529            Self::TePhysicsPropId => "TE_PhysicsPropId",
25530            Self::TeSmokeId => "TE_SmokeId",
25531        }
25532    }
25533    /// Creates an enum from field names used in the ProtoBuf definition.
25534    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
25535        match value {
25536            "TE_EffectDispatchId" => Some(Self::TeEffectDispatchId),
25537            "TE_ArmorRicochetId" => Some(Self::TeArmorRicochetId),
25538            "TE_BeamEntPointId" => Some(Self::TeBeamEntPointId),
25539            "TE_BeamEntsId" => Some(Self::TeBeamEntsId),
25540            "TE_BeamPointsId" => Some(Self::TeBeamPointsId),
25541            "TE_BeamRingId" => Some(Self::TeBeamRingId),
25542            "TE_BubblesId" => Some(Self::TeBubblesId),
25543            "TE_BubbleTrailId" => Some(Self::TeBubbleTrailId),
25544            "TE_DecalId" => Some(Self::TeDecalId),
25545            "TE_WorldDecalId" => Some(Self::TeWorldDecalId),
25546            "TE_EnergySplashId" => Some(Self::TeEnergySplashId),
25547            "TE_FizzId" => Some(Self::TeFizzId),
25548            "TE_ShatterSurfaceId" => Some(Self::TeShatterSurfaceId),
25549            "TE_GlowSpriteId" => Some(Self::TeGlowSpriteId),
25550            "TE_ImpactId" => Some(Self::TeImpactId),
25551            "TE_MuzzleFlashId" => Some(Self::TeMuzzleFlashId),
25552            "TE_BloodStreamId" => Some(Self::TeBloodStreamId),
25553            "TE_ExplosionId" => Some(Self::TeExplosionId),
25554            "TE_DustId" => Some(Self::TeDustId),
25555            "TE_LargeFunnelId" => Some(Self::TeLargeFunnelId),
25556            "TE_SparksId" => Some(Self::TeSparksId),
25557            "TE_PhysicsPropId" => Some(Self::TePhysicsPropId),
25558            "TE_SmokeId" => Some(Self::TeSmokeId),
25559            _ => None,
25560        }
25561    }
25562}
25563#[derive(serde::Serialize, serde::Deserialize)]
25564#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25565pub struct CUserMessageAchievementEvent {
25566    #[prost(uint32, optional, tag = "1")]
25567    pub achievement: ::core::option::Option<u32>,
25568}
25569#[derive(serde::Serialize, serde::Deserialize)]
25570#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25571pub struct CUserMessageCloseCaption {
25572    #[prost(fixed32, optional, tag = "1")]
25573    pub hash: ::core::option::Option<u32>,
25574    #[prost(float, optional, tag = "2")]
25575    pub duration: ::core::option::Option<f32>,
25576    #[prost(bool, optional, tag = "3")]
25577    pub from_player: ::core::option::Option<bool>,
25578    #[prost(int32, optional, tag = "4", default = "-1")]
25579    pub ent_index: ::core::option::Option<i32>,
25580}
25581#[derive(serde::Serialize, serde::Deserialize)]
25582#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25583pub struct CUserMessageCloseCaptionDirect {
25584    #[prost(fixed32, optional, tag = "1")]
25585    pub hash: ::core::option::Option<u32>,
25586    #[prost(float, optional, tag = "2")]
25587    pub duration: ::core::option::Option<f32>,
25588    #[prost(bool, optional, tag = "3")]
25589    pub from_player: ::core::option::Option<bool>,
25590    #[prost(int32, optional, tag = "4", default = "-1")]
25591    pub ent_index: ::core::option::Option<i32>,
25592}
25593#[derive(serde::Serialize, serde::Deserialize)]
25594#[derive(Clone, PartialEq, ::prost::Message)]
25595pub struct CUserMessageCloseCaptionPlaceholder {
25596    #[prost(string, optional, tag = "1")]
25597    pub string: ::core::option::Option<::prost::alloc::string::String>,
25598    #[prost(float, optional, tag = "2")]
25599    pub duration: ::core::option::Option<f32>,
25600    #[prost(bool, optional, tag = "3")]
25601    pub from_player: ::core::option::Option<bool>,
25602    #[prost(int32, optional, tag = "4", default = "-1")]
25603    pub ent_index: ::core::option::Option<i32>,
25604}
25605#[derive(serde::Serialize, serde::Deserialize)]
25606#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25607pub struct CUserMessageCurrentTimescale {
25608    #[prost(float, optional, tag = "1")]
25609    pub current: ::core::option::Option<f32>,
25610}
25611#[derive(serde::Serialize, serde::Deserialize)]
25612#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25613pub struct CUserMessageDesiredTimescale {
25614    #[prost(float, optional, tag = "1")]
25615    pub desired: ::core::option::Option<f32>,
25616    #[prost(float, optional, tag = "2")]
25617    pub acceleration: ::core::option::Option<f32>,
25618    #[prost(float, optional, tag = "3")]
25619    pub minblendrate: ::core::option::Option<f32>,
25620    #[prost(float, optional, tag = "4")]
25621    pub blenddeltamultiplier: ::core::option::Option<f32>,
25622}
25623#[derive(serde::Serialize, serde::Deserialize)]
25624#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25625pub struct CUserMessageFade {
25626    #[prost(uint32, optional, tag = "1")]
25627    pub duration: ::core::option::Option<u32>,
25628    #[prost(uint32, optional, tag = "2")]
25629    pub hold_time: ::core::option::Option<u32>,
25630    #[prost(uint32, optional, tag = "3")]
25631    pub flags: ::core::option::Option<u32>,
25632    #[prost(fixed32, optional, tag = "4")]
25633    pub color: ::core::option::Option<u32>,
25634}
25635#[derive(serde::Serialize, serde::Deserialize)]
25636#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25637pub struct CUserMessageShake {
25638    #[prost(uint32, optional, tag = "1")]
25639    pub command: ::core::option::Option<u32>,
25640    #[prost(float, optional, tag = "2")]
25641    pub amplitude: ::core::option::Option<f32>,
25642    #[prost(float, optional, tag = "3")]
25643    pub frequency: ::core::option::Option<f32>,
25644    #[prost(float, optional, tag = "4")]
25645    pub duration: ::core::option::Option<f32>,
25646}
25647#[derive(serde::Serialize, serde::Deserialize)]
25648#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25649pub struct CUserMessageShakeDir {
25650    #[prost(message, optional, tag = "1")]
25651    pub shake: ::core::option::Option<CUserMessageShake>,
25652    #[prost(message, optional, tag = "2")]
25653    pub direction: ::core::option::Option<CMsgVector>,
25654}
25655#[derive(serde::Serialize, serde::Deserialize)]
25656#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25657pub struct CUserMessageWaterShake {
25658    #[prost(uint32, optional, tag = "1")]
25659    pub command: ::core::option::Option<u32>,
25660    #[prost(float, optional, tag = "2")]
25661    pub amplitude: ::core::option::Option<f32>,
25662    #[prost(float, optional, tag = "3")]
25663    pub frequency: ::core::option::Option<f32>,
25664    #[prost(float, optional, tag = "4")]
25665    pub duration: ::core::option::Option<f32>,
25666}
25667#[derive(serde::Serialize, serde::Deserialize)]
25668#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25669pub struct CUserMessageScreenTilt {
25670    #[prost(uint32, optional, tag = "1")]
25671    pub command: ::core::option::Option<u32>,
25672    #[prost(bool, optional, tag = "2")]
25673    pub ease_in_out: ::core::option::Option<bool>,
25674    #[prost(message, optional, tag = "3")]
25675    pub angle: ::core::option::Option<CMsgVector>,
25676    #[prost(float, optional, tag = "4")]
25677    pub duration: ::core::option::Option<f32>,
25678    #[prost(float, optional, tag = "5")]
25679    pub time: ::core::option::Option<f32>,
25680}
25681#[derive(serde::Serialize, serde::Deserialize)]
25682#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25683pub struct CUserMessageSayText {
25684    #[prost(int32, optional, tag = "1", default = "-1")]
25685    pub playerindex: ::core::option::Option<i32>,
25686    #[prost(string, optional, tag = "2")]
25687    pub text: ::core::option::Option<::prost::alloc::string::String>,
25688    #[prost(bool, optional, tag = "3")]
25689    pub chat: ::core::option::Option<bool>,
25690}
25691#[derive(serde::Serialize, serde::Deserialize)]
25692#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25693pub struct CUserMessageSayText2 {
25694    #[prost(int32, optional, tag = "1", default = "-1")]
25695    pub entityindex: ::core::option::Option<i32>,
25696    #[prost(bool, optional, tag = "2")]
25697    pub chat: ::core::option::Option<bool>,
25698    #[prost(string, optional, tag = "3")]
25699    pub messagename: ::core::option::Option<::prost::alloc::string::String>,
25700    #[prost(string, optional, tag = "4")]
25701    pub param1: ::core::option::Option<::prost::alloc::string::String>,
25702    #[prost(string, optional, tag = "5")]
25703    pub param2: ::core::option::Option<::prost::alloc::string::String>,
25704    #[prost(string, optional, tag = "6")]
25705    pub param3: ::core::option::Option<::prost::alloc::string::String>,
25706    #[prost(string, optional, tag = "7")]
25707    pub param4: ::core::option::Option<::prost::alloc::string::String>,
25708}
25709#[derive(serde::Serialize, serde::Deserialize)]
25710#[derive(Clone, PartialEq, ::prost::Message)]
25711pub struct CUserMessageHudMsg {
25712    #[prost(uint32, optional, tag = "1")]
25713    pub channel: ::core::option::Option<u32>,
25714    #[prost(float, optional, tag = "2")]
25715    pub x: ::core::option::Option<f32>,
25716    #[prost(float, optional, tag = "3")]
25717    pub y: ::core::option::Option<f32>,
25718    #[prost(fixed32, optional, tag = "4")]
25719    pub color1: ::core::option::Option<u32>,
25720    #[prost(fixed32, optional, tag = "5")]
25721    pub color2: ::core::option::Option<u32>,
25722    #[prost(uint32, optional, tag = "6")]
25723    pub effect: ::core::option::Option<u32>,
25724    #[prost(string, optional, tag = "11")]
25725    pub message: ::core::option::Option<::prost::alloc::string::String>,
25726}
25727#[derive(serde::Serialize, serde::Deserialize)]
25728#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25729pub struct CUserMessageHudText {
25730    #[prost(string, optional, tag = "1")]
25731    pub message: ::core::option::Option<::prost::alloc::string::String>,
25732}
25733#[derive(serde::Serialize, serde::Deserialize)]
25734#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25735pub struct CUserMessageTextMsg {
25736    #[prost(uint32, optional, tag = "1")]
25737    pub dest: ::core::option::Option<u32>,
25738    #[prost(string, repeated, tag = "2")]
25739    pub param: ::prost::alloc::vec::Vec<::prost::alloc::string::String>,
25740}
25741#[derive(serde::Serialize, serde::Deserialize)]
25742#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25743pub struct CUserMessageGameTitle {}
25744#[derive(serde::Serialize, serde::Deserialize)]
25745#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25746pub struct CUserMessageResetHud {}
25747#[derive(serde::Serialize, serde::Deserialize)]
25748#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25749pub struct CUserMessageSendAudio {
25750    #[prost(string, optional, tag = "1")]
25751    pub soundname: ::core::option::Option<::prost::alloc::string::String>,
25752    #[prost(bool, optional, tag = "2")]
25753    pub stop: ::core::option::Option<bool>,
25754}
25755#[derive(serde::Serialize, serde::Deserialize)]
25756#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25757pub struct CUserMessageAudioParameter {
25758    #[prost(uint32, optional, tag = "1")]
25759    pub parameter_type: ::core::option::Option<u32>,
25760    #[prost(uint32, optional, tag = "2")]
25761    pub name_hash_code: ::core::option::Option<u32>,
25762    #[prost(float, optional, tag = "3")]
25763    pub value: ::core::option::Option<f32>,
25764    #[prost(uint32, optional, tag = "4")]
25765    pub int_value: ::core::option::Option<u32>,
25766}
25767#[derive(serde::Serialize, serde::Deserialize)]
25768#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25769pub struct CUserMessageVoiceMask {
25770    #[prost(uint32, repeated, packed = "false", tag = "1")]
25771    pub gamerules_masks: ::prost::alloc::vec::Vec<u32>,
25772    #[prost(uint32, repeated, packed = "false", tag = "2")]
25773    pub ban_masks: ::prost::alloc::vec::Vec<u32>,
25774    #[prost(bool, optional, tag = "3")]
25775    pub mod_enable: ::core::option::Option<bool>,
25776}
25777#[derive(serde::Serialize, serde::Deserialize)]
25778#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25779pub struct CUserMessageRequestState {}
25780#[derive(serde::Serialize, serde::Deserialize)]
25781#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25782pub struct CUserMessageRumble {
25783    #[prost(int32, optional, tag = "1")]
25784    pub index: ::core::option::Option<i32>,
25785    #[prost(int32, optional, tag = "2")]
25786    pub data: ::core::option::Option<i32>,
25787    #[prost(int32, optional, tag = "3")]
25788    pub flags: ::core::option::Option<i32>,
25789}
25790#[derive(serde::Serialize, serde::Deserialize)]
25791#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25792pub struct CUserMessageSayTextChannel {
25793    #[prost(int32, optional, tag = "1")]
25794    pub player: ::core::option::Option<i32>,
25795    #[prost(int32, optional, tag = "2")]
25796    pub channel: ::core::option::Option<i32>,
25797    #[prost(string, optional, tag = "3")]
25798    pub text: ::core::option::Option<::prost::alloc::string::String>,
25799}
25800#[derive(serde::Serialize, serde::Deserialize)]
25801#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25802pub struct CUserMessageColoredText {
25803    #[prost(uint32, optional, tag = "1")]
25804    pub color: ::core::option::Option<u32>,
25805    #[prost(string, optional, tag = "2")]
25806    pub text: ::core::option::Option<::prost::alloc::string::String>,
25807    #[prost(bool, optional, tag = "3")]
25808    pub reset: ::core::option::Option<bool>,
25809    #[prost(int32, optional, tag = "4", default = "-1")]
25810    pub context_player_slot: ::core::option::Option<i32>,
25811    #[prost(int32, optional, tag = "5")]
25812    pub context_value: ::core::option::Option<i32>,
25813    #[prost(int32, optional, tag = "6")]
25814    pub context_team_id: ::core::option::Option<i32>,
25815}
25816#[derive(serde::Serialize, serde::Deserialize)]
25817#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25818pub struct CUserMessageItemPickup {
25819    #[prost(string, optional, tag = "1")]
25820    pub itemname: ::core::option::Option<::prost::alloc::string::String>,
25821}
25822#[derive(serde::Serialize, serde::Deserialize)]
25823#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25824pub struct CUserMessageAmmoDenied {
25825    #[prost(uint32, optional, tag = "1")]
25826    pub ammo_id: ::core::option::Option<u32>,
25827}
25828#[derive(serde::Serialize, serde::Deserialize)]
25829#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
25830pub struct CUserMessageShowMenu {
25831    #[prost(uint32, optional, tag = "1")]
25832    pub validslots: ::core::option::Option<u32>,
25833    #[prost(uint32, optional, tag = "2")]
25834    pub displaytime: ::core::option::Option<u32>,
25835    #[prost(bool, optional, tag = "3")]
25836    pub needmore: ::core::option::Option<bool>,
25837    #[prost(string, optional, tag = "4")]
25838    pub menustring: ::core::option::Option<::prost::alloc::string::String>,
25839}
25840#[derive(serde::Serialize, serde::Deserialize)]
25841#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25842pub struct CUserMessageCreditsMsg {
25843    #[prost(enumeration = "ERollType", optional, tag = "1", default = "RollNone")]
25844    pub rolltype: ::core::option::Option<i32>,
25845    #[prost(float, optional, tag = "2")]
25846    pub logo_length: ::core::option::Option<f32>,
25847}
25848#[derive(serde::Serialize, serde::Deserialize)]
25849#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25850pub struct CEntityMessagePlayJingle {
25851    #[prost(message, optional, tag = "1")]
25852    pub entity_msg: ::core::option::Option<CEntityMsg>,
25853}
25854#[derive(serde::Serialize, serde::Deserialize)]
25855#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25856pub struct CEntityMessageScreenOverlay {
25857    #[prost(bool, optional, tag = "1")]
25858    pub start_effect: ::core::option::Option<bool>,
25859    #[prost(message, optional, tag = "2")]
25860    pub entity_msg: ::core::option::Option<CEntityMsg>,
25861}
25862#[derive(serde::Serialize, serde::Deserialize)]
25863#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
25864pub struct CEntityMessageRemoveAllDecals {
25865    #[prost(bool, optional, tag = "1")]
25866    pub remove_decals: ::core::option::Option<bool>,
25867    #[prost(message, optional, tag = "2")]
25868    pub entity_msg: ::core::option::Option<CEntityMsg>,
25869}
25870#[derive(serde::Serialize, serde::Deserialize)]
25871#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25872pub struct CEntityMessagePropagateForce {
25873    #[prost(message, optional, tag = "1")]
25874    pub impulse: ::core::option::Option<CMsgVector>,
25875    #[prost(message, optional, tag = "2")]
25876    pub entity_msg: ::core::option::Option<CEntityMsg>,
25877}
25878#[derive(serde::Serialize, serde::Deserialize)]
25879#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25880pub struct CEntityMessageDoSpark {
25881    #[prost(message, optional, tag = "1")]
25882    pub origin: ::core::option::Option<CMsgVector>,
25883    #[prost(int32, optional, tag = "2", default = "-1")]
25884    pub entityindex: ::core::option::Option<i32>,
25885    #[prost(float, optional, tag = "3")]
25886    pub radius: ::core::option::Option<f32>,
25887    #[prost(fixed32, optional, tag = "4")]
25888    pub color: ::core::option::Option<u32>,
25889    #[prost(uint32, optional, tag = "5")]
25890    pub beams: ::core::option::Option<u32>,
25891    #[prost(float, optional, tag = "6")]
25892    pub thick: ::core::option::Option<f32>,
25893    #[prost(float, optional, tag = "7")]
25894    pub duration: ::core::option::Option<f32>,
25895    #[prost(message, optional, tag = "8")]
25896    pub entity_msg: ::core::option::Option<CEntityMsg>,
25897}
25898#[derive(serde::Serialize, serde::Deserialize)]
25899#[derive(Clone, Copy, PartialEq, ::prost::Message)]
25900pub struct CEntityMessageFixAngle {
25901    #[prost(bool, optional, tag = "1")]
25902    pub relative: ::core::option::Option<bool>,
25903    #[prost(message, optional, tag = "2")]
25904    pub angle: ::core::option::Option<CMsgQAngle>,
25905    #[prost(message, optional, tag = "3")]
25906    pub entity_msg: ::core::option::Option<CEntityMsg>,
25907}
25908#[derive(serde::Serialize, serde::Deserialize)]
25909#[derive(Clone, PartialEq, ::prost::Message)]
25910pub struct CUserMessageCameraTransition {
25911    #[prost(uint32, optional, tag = "1")]
25912    pub camera_type: ::core::option::Option<u32>,
25913    #[prost(float, optional, tag = "2")]
25914    pub duration: ::core::option::Option<f32>,
25915    #[prost(message, optional, tag = "3")]
25916    pub params_data_driven: ::core::option::Option<
25917        c_user_message_camera_transition::TransitionDataDriven,
25918    >,
25919}
25920/// Nested message and enum types in `CUserMessageCameraTransition`.
25921pub mod c_user_message_camera_transition {
25922    #[derive(serde::Serialize, serde::Deserialize)]
25923    #[derive(Clone, PartialEq, ::prost::Message)]
25924    pub struct TransitionDataDriven {
25925        #[prost(string, optional, tag = "1")]
25926        pub filename: ::core::option::Option<::prost::alloc::string::String>,
25927        #[prost(int32, optional, tag = "2", default = "-1")]
25928        pub attach_ent_index: ::core::option::Option<i32>,
25929        #[prost(float, optional, tag = "3")]
25930        pub duration: ::core::option::Option<f32>,
25931    }
25932}
25933#[derive(serde::Serialize, serde::Deserialize)]
25934#[derive(Clone, PartialEq, ::prost::Message)]
25935pub struct CUserMsgParticleManager {
25936    #[prost(
25937        enumeration = "ParticleMessage",
25938        optional,
25939        tag = "1",
25940        default = "GameParticleManagerEventCreate"
25941    )]
25942    pub r#type: ::core::option::Option<i32>,
25943    #[prost(uint32, optional, tag = "2")]
25944    pub index: ::core::option::Option<u32>,
25945    #[prost(message, optional, tag = "3")]
25946    pub release_particle_index: ::core::option::Option<
25947        c_user_msg_particle_manager::ReleaseParticleIndex,
25948    >,
25949    #[prost(message, optional, tag = "4")]
25950    pub create_particle: ::core::option::Option<
25951        c_user_msg_particle_manager::CreateParticle,
25952    >,
25953    #[prost(message, optional, tag = "5")]
25954    pub destroy_particle: ::core::option::Option<
25955        c_user_msg_particle_manager::DestroyParticle,
25956    >,
25957    #[prost(message, optional, tag = "6")]
25958    pub destroy_particle_involving: ::core::option::Option<
25959        c_user_msg_particle_manager::DestroyParticleInvolving,
25960    >,
25961    #[prost(message, optional, tag = "7")]
25962    pub update_particle: ::core::option::Option<
25963        c_user_msg_particle_manager::UpdateParticleObsolete,
25964    >,
25965    #[prost(message, optional, tag = "8")]
25966    pub update_particle_fwd: ::core::option::Option<
25967        c_user_msg_particle_manager::UpdateParticleFwdObsolete,
25968    >,
25969    #[prost(message, optional, tag = "9")]
25970    pub update_particle_orient: ::core::option::Option<
25971        c_user_msg_particle_manager::UpdateParticleOrientObsolete,
25972    >,
25973    #[prost(message, optional, tag = "10")]
25974    pub update_particle_fallback: ::core::option::Option<
25975        c_user_msg_particle_manager::UpdateParticleFallback,
25976    >,
25977    #[prost(message, optional, tag = "11")]
25978    pub update_particle_offset: ::core::option::Option<
25979        c_user_msg_particle_manager::UpdateParticleOffset,
25980    >,
25981    #[prost(message, optional, tag = "12")]
25982    pub update_particle_ent: ::core::option::Option<
25983        c_user_msg_particle_manager::UpdateParticleEnt,
25984    >,
25985    #[prost(message, optional, tag = "14")]
25986    pub update_particle_should_draw: ::core::option::Option<
25987        c_user_msg_particle_manager::UpdateParticleShouldDraw,
25988    >,
25989    #[prost(message, optional, tag = "15")]
25990    pub update_particle_set_frozen: ::core::option::Option<
25991        c_user_msg_particle_manager::UpdateParticleSetFrozen,
25992    >,
25993    #[prost(message, optional, tag = "16")]
25994    pub change_control_point_attachment: ::core::option::Option<
25995        c_user_msg_particle_manager::ChangeControlPointAttachment,
25996    >,
25997    #[prost(message, optional, tag = "17")]
25998    pub update_entity_position: ::core::option::Option<
25999        c_user_msg_particle_manager::UpdateEntityPosition,
26000    >,
26001    #[prost(message, optional, tag = "18")]
26002    pub set_particle_fow_properties: ::core::option::Option<
26003        c_user_msg_particle_manager::SetParticleFoWProperties,
26004    >,
26005    #[prost(message, optional, tag = "19")]
26006    pub set_particle_text: ::core::option::Option<
26007        c_user_msg_particle_manager::SetParticleText,
26008    >,
26009    #[prost(message, optional, tag = "20")]
26010    pub set_particle_should_check_fow: ::core::option::Option<
26011        c_user_msg_particle_manager::SetParticleShouldCheckFoW,
26012    >,
26013    #[prost(message, optional, tag = "21")]
26014    pub set_control_point_model: ::core::option::Option<
26015        c_user_msg_particle_manager::SetControlPointModel,
26016    >,
26017    #[prost(message, optional, tag = "22")]
26018    pub set_control_point_snapshot: ::core::option::Option<
26019        c_user_msg_particle_manager::SetControlPointSnapshot,
26020    >,
26021    #[prost(message, optional, tag = "23")]
26022    pub set_texture_attribute: ::core::option::Option<
26023        c_user_msg_particle_manager::SetTextureAttribute,
26024    >,
26025    #[prost(message, optional, tag = "24")]
26026    pub set_scene_object_generic_flag: ::core::option::Option<
26027        c_user_msg_particle_manager::SetSceneObjectGenericFlag,
26028    >,
26029    #[prost(message, optional, tag = "25")]
26030    pub set_scene_object_tint_and_desat: ::core::option::Option<
26031        c_user_msg_particle_manager::SetSceneObjectTintAndDesat,
26032    >,
26033    #[prost(message, optional, tag = "26")]
26034    pub destroy_particle_named: ::core::option::Option<
26035        c_user_msg_particle_manager::DestroyParticleNamed,
26036    >,
26037    #[prost(message, optional, tag = "27")]
26038    pub particle_skip_to_time: ::core::option::Option<
26039        c_user_msg_particle_manager::ParticleSkipToTime,
26040    >,
26041    #[prost(message, optional, tag = "28")]
26042    pub particle_can_freeze: ::core::option::Option<
26043        c_user_msg_particle_manager::ParticleCanFreeze,
26044    >,
26045    #[prost(message, optional, tag = "29")]
26046    pub set_named_value_context: ::core::option::Option<
26047        c_user_msg_particle_manager::SetParticleNamedValueContext,
26048    >,
26049    #[prost(message, optional, tag = "30")]
26050    pub update_particle_transform: ::core::option::Option<
26051        c_user_msg_particle_manager::UpdateParticleTransform,
26052    >,
26053    #[prost(message, optional, tag = "31")]
26054    pub particle_freeze_transition_override: ::core::option::Option<
26055        c_user_msg_particle_manager::ParticleFreezeTransitionOverride,
26056    >,
26057    #[prost(message, optional, tag = "32")]
26058    pub freeze_particle_involving: ::core::option::Option<
26059        c_user_msg_particle_manager::FreezeParticleInvolving,
26060    >,
26061    #[prost(message, optional, tag = "33")]
26062    pub add_modellist_override_element: ::core::option::Option<
26063        c_user_msg_particle_manager::AddModellistOverrideElement,
26064    >,
26065    #[prost(message, optional, tag = "34")]
26066    pub clear_modellist_override: ::core::option::Option<
26067        c_user_msg_particle_manager::ClearModellistOverride,
26068    >,
26069    #[prost(message, optional, tag = "35")]
26070    pub create_physics_sim: ::core::option::Option<
26071        c_user_msg_particle_manager::CreatePhysicsSim,
26072    >,
26073    #[prost(message, optional, tag = "36")]
26074    pub destroy_physics_sim: ::core::option::Option<
26075        c_user_msg_particle_manager::DestroyPhysicsSim,
26076    >,
26077    #[prost(message, optional, tag = "37")]
26078    pub set_vdata: ::core::option::Option<c_user_msg_particle_manager::SetVData>,
26079    #[prost(message, optional, tag = "38")]
26080    pub set_material_override: ::core::option::Option<
26081        c_user_msg_particle_manager::SetMaterialOverride,
26082    >,
26083    #[prost(message, optional, tag = "39")]
26084    pub add_fan: ::core::option::Option<c_user_msg_particle_manager::AddFan>,
26085    #[prost(message, optional, tag = "40")]
26086    pub update_fan: ::core::option::Option<c_user_msg_particle_manager::UpdateFan>,
26087    #[prost(message, optional, tag = "41")]
26088    pub set_particle_cluster_growth: ::core::option::Option<
26089        c_user_msg_particle_manager::SetParticleClusterGrowth,
26090    >,
26091    #[prost(message, optional, tag = "42")]
26092    pub remove_fan: ::core::option::Option<c_user_msg_particle_manager::RemoveFan>,
26093}
26094/// Nested message and enum types in `CUserMsg_ParticleManager`.
26095pub mod c_user_msg_particle_manager {
26096    #[derive(serde::Serialize, serde::Deserialize)]
26097    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26098    pub struct ReleaseParticleIndex {}
26099    #[derive(serde::Serialize, serde::Deserialize)]
26100    #[derive(Clone, PartialEq, ::prost::Message)]
26101    pub struct CreateParticle {
26102        #[prost(fixed64, optional, tag = "1")]
26103        pub particle_name_index: ::core::option::Option<u64>,
26104        #[prost(int32, optional, tag = "2")]
26105        pub attach_type: ::core::option::Option<i32>,
26106        #[prost(uint32, optional, tag = "3", default = "16777215")]
26107        pub entity_handle: ::core::option::Option<u32>,
26108        #[prost(uint32, optional, tag = "4", default = "16777215")]
26109        pub entity_handle_for_modifiers: ::core::option::Option<u32>,
26110        #[prost(bool, optional, tag = "5")]
26111        pub apply_voice_ban_rules: ::core::option::Option<bool>,
26112        #[prost(int32, optional, tag = "6")]
26113        pub team_behavior: ::core::option::Option<i32>,
26114        #[prost(string, optional, tag = "7")]
26115        pub control_point_configuration: ::core::option::Option<
26116            ::prost::alloc::string::String,
26117        >,
26118        #[prost(bool, optional, tag = "8")]
26119        pub cluster: ::core::option::Option<bool>,
26120        #[prost(float, optional, tag = "9")]
26121        pub endcap_time: ::core::option::Option<f32>,
26122        #[prost(message, optional, tag = "10")]
26123        pub aggregation_position: ::core::option::Option<super::CMsgVector>,
26124    }
26125    #[derive(serde::Serialize, serde::Deserialize)]
26126    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26127    pub struct DestroyParticle {
26128        #[prost(bool, optional, tag = "1")]
26129        pub destroy_immediately: ::core::option::Option<bool>,
26130    }
26131    #[derive(serde::Serialize, serde::Deserialize)]
26132    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26133    pub struct DestroyParticleInvolving {
26134        #[prost(bool, optional, tag = "1")]
26135        pub destroy_immediately: ::core::option::Option<bool>,
26136        #[prost(uint32, optional, tag = "3", default = "16777215")]
26137        pub entity_handle: ::core::option::Option<u32>,
26138    }
26139    #[derive(serde::Serialize, serde::Deserialize)]
26140    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26141    pub struct DestroyParticleNamed {
26142        #[prost(fixed64, optional, tag = "1")]
26143        pub particle_name_index: ::core::option::Option<u64>,
26144        #[prost(uint32, optional, tag = "2", default = "16777215")]
26145        pub entity_handle: ::core::option::Option<u32>,
26146        #[prost(bool, optional, tag = "3")]
26147        pub destroy_immediately: ::core::option::Option<bool>,
26148        #[prost(bool, optional, tag = "4")]
26149        pub play_endcap: ::core::option::Option<bool>,
26150    }
26151    #[derive(serde::Serialize, serde::Deserialize)]
26152    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26153    pub struct UpdateParticleObsolete {
26154        #[prost(int32, optional, tag = "1")]
26155        pub control_point: ::core::option::Option<i32>,
26156        #[prost(message, optional, tag = "2")]
26157        pub position: ::core::option::Option<super::CMsgVector>,
26158    }
26159    #[derive(serde::Serialize, serde::Deserialize)]
26160    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26161    pub struct UpdateParticleFwdObsolete {
26162        #[prost(int32, optional, tag = "1")]
26163        pub control_point: ::core::option::Option<i32>,
26164        #[prost(message, optional, tag = "2")]
26165        pub forward: ::core::option::Option<super::CMsgVector>,
26166    }
26167    #[derive(serde::Serialize, serde::Deserialize)]
26168    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26169    pub struct UpdateParticleOrientObsolete {
26170        #[prost(int32, optional, tag = "1")]
26171        pub control_point: ::core::option::Option<i32>,
26172        #[prost(message, optional, tag = "2")]
26173        pub forward: ::core::option::Option<super::CMsgVector>,
26174        #[prost(message, optional, tag = "3")]
26175        pub deprecated_right: ::core::option::Option<super::CMsgVector>,
26176        #[prost(message, optional, tag = "4")]
26177        pub up: ::core::option::Option<super::CMsgVector>,
26178        #[prost(message, optional, tag = "5")]
26179        pub left: ::core::option::Option<super::CMsgVector>,
26180    }
26181    #[derive(serde::Serialize, serde::Deserialize)]
26182    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26183    pub struct UpdateParticleTransform {
26184        #[prost(int32, optional, tag = "1")]
26185        pub control_point: ::core::option::Option<i32>,
26186        #[prost(message, optional, tag = "2")]
26187        pub position: ::core::option::Option<super::CMsgVector>,
26188        #[prost(message, optional, tag = "3")]
26189        pub orientation: ::core::option::Option<super::CMsgQuaternion>,
26190        #[prost(float, optional, tag = "4")]
26191        pub interpolation_interval: ::core::option::Option<f32>,
26192    }
26193    #[derive(serde::Serialize, serde::Deserialize)]
26194    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26195    pub struct UpdateParticleFallback {
26196        #[prost(int32, optional, tag = "1")]
26197        pub control_point: ::core::option::Option<i32>,
26198        #[prost(message, optional, tag = "2")]
26199        pub position: ::core::option::Option<super::CMsgVector>,
26200    }
26201    #[derive(serde::Serialize, serde::Deserialize)]
26202    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26203    pub struct UpdateParticleOffset {
26204        #[prost(int32, optional, tag = "1")]
26205        pub control_point: ::core::option::Option<i32>,
26206        #[prost(message, optional, tag = "2")]
26207        pub origin_offset: ::core::option::Option<super::CMsgVector>,
26208        #[prost(message, optional, tag = "3")]
26209        pub angle_offset: ::core::option::Option<super::CMsgQAngle>,
26210    }
26211    #[derive(serde::Serialize, serde::Deserialize)]
26212    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26213    pub struct UpdateParticleEnt {
26214        #[prost(int32, optional, tag = "1")]
26215        pub control_point: ::core::option::Option<i32>,
26216        #[prost(uint32, optional, tag = "2", default = "16777215")]
26217        pub entity_handle: ::core::option::Option<u32>,
26218        #[prost(int32, optional, tag = "3")]
26219        pub attach_type: ::core::option::Option<i32>,
26220        #[prost(int32, optional, tag = "4")]
26221        pub attachment: ::core::option::Option<i32>,
26222        #[prost(message, optional, tag = "5")]
26223        pub fallback_position: ::core::option::Option<super::CMsgVector>,
26224        #[prost(bool, optional, tag = "6")]
26225        pub include_wearables: ::core::option::Option<bool>,
26226        #[prost(message, optional, tag = "7")]
26227        pub offset_position: ::core::option::Option<super::CMsgVector>,
26228        #[prost(message, optional, tag = "8")]
26229        pub offset_angles: ::core::option::Option<super::CMsgQAngle>,
26230    }
26231    #[derive(serde::Serialize, serde::Deserialize)]
26232    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26233    pub struct UpdateParticleSetFrozen {
26234        #[prost(bool, optional, tag = "1")]
26235        pub set_frozen: ::core::option::Option<bool>,
26236        #[prost(float, optional, tag = "2")]
26237        pub transition_duration: ::core::option::Option<f32>,
26238    }
26239    #[derive(serde::Serialize, serde::Deserialize)]
26240    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26241    pub struct UpdateParticleShouldDraw {
26242        #[prost(bool, optional, tag = "1")]
26243        pub should_draw: ::core::option::Option<bool>,
26244    }
26245    #[derive(serde::Serialize, serde::Deserialize)]
26246    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26247    pub struct ChangeControlPointAttachment {
26248        #[prost(int32, optional, tag = "1")]
26249        pub attachment_old: ::core::option::Option<i32>,
26250        #[prost(int32, optional, tag = "2")]
26251        pub attachment_new: ::core::option::Option<i32>,
26252        #[prost(uint32, optional, tag = "3", default = "16777215")]
26253        pub entity_handle: ::core::option::Option<u32>,
26254    }
26255    #[derive(serde::Serialize, serde::Deserialize)]
26256    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26257    pub struct UpdateEntityPosition {
26258        #[prost(uint32, optional, tag = "1", default = "16777215")]
26259        pub entity_handle: ::core::option::Option<u32>,
26260        #[prost(message, optional, tag = "2")]
26261        pub position: ::core::option::Option<super::CMsgVector>,
26262    }
26263    #[derive(serde::Serialize, serde::Deserialize)]
26264    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26265    pub struct SetParticleFoWProperties {
26266        #[prost(int32, optional, tag = "1")]
26267        pub fow_control_point: ::core::option::Option<i32>,
26268        #[prost(int32, optional, tag = "2")]
26269        pub fow_control_point2: ::core::option::Option<i32>,
26270        #[prost(float, optional, tag = "3")]
26271        pub fow_radius: ::core::option::Option<f32>,
26272    }
26273    #[derive(serde::Serialize, serde::Deserialize)]
26274    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26275    pub struct SetParticleShouldCheckFoW {
26276        #[prost(bool, optional, tag = "1")]
26277        pub check_fow: ::core::option::Option<bool>,
26278    }
26279    #[derive(serde::Serialize, serde::Deserialize)]
26280    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26281    pub struct SetControlPointModel {
26282        #[prost(int32, optional, tag = "1")]
26283        pub control_point: ::core::option::Option<i32>,
26284        #[prost(string, optional, tag = "2")]
26285        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
26286    }
26287    #[derive(serde::Serialize, serde::Deserialize)]
26288    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26289    pub struct SetControlPointSnapshot {
26290        #[prost(int32, optional, tag = "1")]
26291        pub control_point: ::core::option::Option<i32>,
26292        #[prost(string, optional, tag = "2")]
26293        pub snapshot_name: ::core::option::Option<::prost::alloc::string::String>,
26294    }
26295    #[derive(serde::Serialize, serde::Deserialize)]
26296    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26297    pub struct SetParticleText {
26298        #[prost(string, optional, tag = "1")]
26299        pub text: ::core::option::Option<::prost::alloc::string::String>,
26300        #[prost(bool, optional, tag = "2")]
26301        pub localize: ::core::option::Option<bool>,
26302    }
26303    #[derive(serde::Serialize, serde::Deserialize)]
26304    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26305    pub struct SetTextureAttribute {
26306        #[prost(string, optional, tag = "1")]
26307        pub attribute_name: ::core::option::Option<::prost::alloc::string::String>,
26308        #[prost(string, optional, tag = "2")]
26309        pub texture_name: ::core::option::Option<::prost::alloc::string::String>,
26310    }
26311    #[derive(serde::Serialize, serde::Deserialize)]
26312    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26313    pub struct SetSceneObjectGenericFlag {
26314        #[prost(bool, optional, tag = "1")]
26315        pub flag_value: ::core::option::Option<bool>,
26316    }
26317    #[derive(serde::Serialize, serde::Deserialize)]
26318    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26319    pub struct SetSceneObjectTintAndDesat {
26320        #[prost(fixed32, optional, tag = "1")]
26321        pub tint: ::core::option::Option<u32>,
26322        #[prost(float, optional, tag = "2")]
26323        pub desat: ::core::option::Option<f32>,
26324    }
26325    #[derive(serde::Serialize, serde::Deserialize)]
26326    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26327    pub struct ParticleSkipToTime {
26328        #[prost(float, optional, tag = "1")]
26329        pub skip_to_time: ::core::option::Option<f32>,
26330    }
26331    #[derive(serde::Serialize, serde::Deserialize)]
26332    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26333    pub struct ParticleCanFreeze {
26334        #[prost(bool, optional, tag = "1")]
26335        pub can_freeze: ::core::option::Option<bool>,
26336    }
26337    #[derive(serde::Serialize, serde::Deserialize)]
26338    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26339    pub struct ParticleFreezeTransitionOverride {
26340        #[prost(float, optional, tag = "1")]
26341        pub freeze_transition_override: ::core::option::Option<f32>,
26342    }
26343    #[derive(serde::Serialize, serde::Deserialize)]
26344    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26345    pub struct FreezeParticleInvolving {
26346        #[prost(bool, optional, tag = "1")]
26347        pub set_frozen: ::core::option::Option<bool>,
26348        #[prost(float, optional, tag = "2")]
26349        pub transition_duration: ::core::option::Option<f32>,
26350        #[prost(uint32, optional, tag = "3", default = "16777215")]
26351        pub entity_handle: ::core::option::Option<u32>,
26352    }
26353    #[derive(serde::Serialize, serde::Deserialize)]
26354    #[derive(Clone, PartialEq, ::prost::Message)]
26355    pub struct AddModellistOverrideElement {
26356        #[prost(string, optional, tag = "1")]
26357        pub model_name: ::core::option::Option<::prost::alloc::string::String>,
26358        #[prost(float, optional, tag = "2")]
26359        pub spawn_probability: ::core::option::Option<f32>,
26360        #[prost(uint32, optional, tag = "3")]
26361        pub groupid: ::core::option::Option<u32>,
26362    }
26363    #[derive(serde::Serialize, serde::Deserialize)]
26364    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26365    pub struct ClearModellistOverride {
26366        #[prost(uint32, optional, tag = "1")]
26367        pub groupid: ::core::option::Option<u32>,
26368    }
26369    #[derive(serde::Serialize, serde::Deserialize)]
26370    #[derive(Clone, PartialEq, ::prost::Message)]
26371    pub struct SetParticleNamedValueContext {
26372        #[prost(message, repeated, tag = "1")]
26373        pub float_values: ::prost::alloc::vec::Vec<
26374            set_particle_named_value_context::FloatContextValue,
26375        >,
26376        #[prost(message, repeated, tag = "2")]
26377        pub vector_values: ::prost::alloc::vec::Vec<
26378            set_particle_named_value_context::VectorContextValue,
26379        >,
26380        #[prost(message, repeated, tag = "3")]
26381        pub transform_values: ::prost::alloc::vec::Vec<
26382            set_particle_named_value_context::TransformContextValue,
26383        >,
26384        #[prost(message, repeated, tag = "4")]
26385        pub ehandle_values: ::prost::alloc::vec::Vec<
26386            set_particle_named_value_context::EHandleContext,
26387        >,
26388    }
26389    /// Nested message and enum types in `SetParticleNamedValueContext`.
26390    pub mod set_particle_named_value_context {
26391        #[derive(serde::Serialize, serde::Deserialize)]
26392        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26393        pub struct FloatContextValue {
26394            #[prost(uint32, optional, tag = "1")]
26395            pub value_name_hash: ::core::option::Option<u32>,
26396            #[prost(float, optional, tag = "2")]
26397            pub value: ::core::option::Option<f32>,
26398        }
26399        #[derive(serde::Serialize, serde::Deserialize)]
26400        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26401        pub struct VectorContextValue {
26402            #[prost(uint32, optional, tag = "1")]
26403            pub value_name_hash: ::core::option::Option<u32>,
26404            #[prost(message, optional, tag = "2")]
26405            pub value: ::core::option::Option<super::super::CMsgVector>,
26406        }
26407        #[derive(serde::Serialize, serde::Deserialize)]
26408        #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26409        pub struct TransformContextValue {
26410            #[prost(uint32, optional, tag = "1")]
26411            pub value_name_hash: ::core::option::Option<u32>,
26412            #[prost(message, optional, tag = "2")]
26413            pub angles: ::core::option::Option<super::super::CMsgQAngle>,
26414            #[prost(message, optional, tag = "3")]
26415            pub translation: ::core::option::Option<super::super::CMsgVector>,
26416        }
26417        #[derive(serde::Serialize, serde::Deserialize)]
26418        #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26419        pub struct EHandleContext {
26420            #[prost(uint32, optional, tag = "1")]
26421            pub value_name_hash: ::core::option::Option<u32>,
26422            #[prost(uint32, optional, tag = "2", default = "16777215")]
26423            pub ent_index: ::core::option::Option<u32>,
26424        }
26425    }
26426    #[derive(serde::Serialize, serde::Deserialize)]
26427    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26428    pub struct CreatePhysicsSim {
26429        #[prost(string, optional, tag = "1")]
26430        pub prop_group_name: ::core::option::Option<::prost::alloc::string::String>,
26431        #[prost(bool, optional, tag = "2")]
26432        pub use_high_quality_simulation: ::core::option::Option<bool>,
26433        #[prost(uint32, optional, tag = "3")]
26434        pub max_particle_count: ::core::option::Option<u32>,
26435    }
26436    #[derive(serde::Serialize, serde::Deserialize)]
26437    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26438    pub struct DestroyPhysicsSim {}
26439    #[derive(serde::Serialize, serde::Deserialize)]
26440    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26441    pub struct SetVData {
26442        #[prost(string, optional, tag = "1")]
26443        pub vdata_name: ::core::option::Option<::prost::alloc::string::String>,
26444    }
26445    #[derive(serde::Serialize, serde::Deserialize)]
26446    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26447    pub struct SetMaterialOverride {
26448        #[prost(string, optional, tag = "1")]
26449        pub material_name: ::core::option::Option<::prost::alloc::string::String>,
26450        #[prost(bool, optional, tag = "2")]
26451        pub include_children: ::core::option::Option<bool>,
26452    }
26453    #[derive(serde::Serialize, serde::Deserialize)]
26454    #[derive(Clone, PartialEq, ::prost::Message)]
26455    pub struct AddFan {
26456        #[prost(bool, optional, tag = "1")]
26457        pub active: ::core::option::Option<bool>,
26458        #[prost(message, optional, tag = "2")]
26459        pub bounds_mins: ::core::option::Option<super::CMsgVector>,
26460        #[prost(message, optional, tag = "3")]
26461        pub bounds_maxs: ::core::option::Option<super::CMsgVector>,
26462        #[prost(message, optional, tag = "4")]
26463        pub fan_origin: ::core::option::Option<super::CMsgVector>,
26464        #[prost(message, optional, tag = "5")]
26465        pub fan_origin_offset: ::core::option::Option<super::CMsgVector>,
26466        #[prost(message, optional, tag = "6")]
26467        pub fan_direction: ::core::option::Option<super::CMsgVector>,
26468        #[prost(float, optional, tag = "7")]
26469        pub force: ::core::option::Option<f32>,
26470        #[prost(string, optional, tag = "8")]
26471        pub fan_force_curve: ::core::option::Option<::prost::alloc::string::String>,
26472        #[prost(bool, optional, tag = "9")]
26473        pub falloff: ::core::option::Option<bool>,
26474        #[prost(bool, optional, tag = "10")]
26475        pub pull_towards_point: ::core::option::Option<bool>,
26476        #[prost(float, optional, tag = "11")]
26477        pub curve_min_dist: ::core::option::Option<f32>,
26478        #[prost(float, optional, tag = "12")]
26479        pub curve_max_dist: ::core::option::Option<f32>,
26480        #[prost(uint32, optional, tag = "13")]
26481        pub fan_type: ::core::option::Option<u32>,
26482        #[prost(float, optional, tag = "14")]
26483        pub cone_start_radius: ::core::option::Option<f32>,
26484        #[prost(float, optional, tag = "15")]
26485        pub cone_end_radius: ::core::option::Option<f32>,
26486        #[prost(float, optional, tag = "16")]
26487        pub cone_length: ::core::option::Option<f32>,
26488        #[prost(uint32, optional, tag = "17", default = "16777215")]
26489        pub entity_handle: ::core::option::Option<u32>,
26490        #[prost(string, optional, tag = "18")]
26491        pub attachment_name: ::core::option::Option<::prost::alloc::string::String>,
26492    }
26493    #[derive(serde::Serialize, serde::Deserialize)]
26494    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26495    pub struct UpdateFan {
26496        #[prost(bool, optional, tag = "1")]
26497        pub active: ::core::option::Option<bool>,
26498        #[prost(message, optional, tag = "2")]
26499        pub fan_origin: ::core::option::Option<super::CMsgVector>,
26500        #[prost(message, optional, tag = "3")]
26501        pub fan_origin_offset: ::core::option::Option<super::CMsgVector>,
26502        #[prost(message, optional, tag = "4")]
26503        pub fan_direction: ::core::option::Option<super::CMsgVector>,
26504        #[prost(float, optional, tag = "7")]
26505        pub fan_ramp_ratio: ::core::option::Option<f32>,
26506        #[prost(message, optional, tag = "5")]
26507        pub bounds_mins: ::core::option::Option<super::CMsgVector>,
26508        #[prost(message, optional, tag = "6")]
26509        pub bounds_maxs: ::core::option::Option<super::CMsgVector>,
26510    }
26511    #[derive(serde::Serialize, serde::Deserialize)]
26512    #[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26513    pub struct RemoveFan {}
26514    #[derive(serde::Serialize, serde::Deserialize)]
26515    #[derive(Clone, Copy, PartialEq, ::prost::Message)]
26516    pub struct SetParticleClusterGrowth {
26517        #[prost(float, optional, tag = "1")]
26518        pub duration: ::core::option::Option<f32>,
26519        #[prost(message, optional, tag = "2")]
26520        pub origin: ::core::option::Option<super::CMsgVector>,
26521    }
26522}
26523#[derive(serde::Serialize, serde::Deserialize)]
26524#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26525pub struct CUserMsgHudError {
26526    #[prost(int32, optional, tag = "1")]
26527    pub order_id: ::core::option::Option<i32>,
26528}
26529#[derive(serde::Serialize, serde::Deserialize)]
26530#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26531pub struct CUserMsgCustomGameEvent {
26532    #[prost(string, optional, tag = "1")]
26533    pub event_name: ::core::option::Option<::prost::alloc::string::String>,
26534    #[prost(bytes = "vec", optional, tag = "2")]
26535    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26536}
26537#[derive(serde::Serialize, serde::Deserialize)]
26538#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26539pub struct CUserMessageHapticsManagerPulse {
26540    #[prost(int32, optional, tag = "1")]
26541    pub hand_id: ::core::option::Option<i32>,
26542    #[prost(float, optional, tag = "2")]
26543    pub effect_amplitude: ::core::option::Option<f32>,
26544    #[prost(float, optional, tag = "3")]
26545    pub effect_frequency: ::core::option::Option<f32>,
26546    #[prost(float, optional, tag = "4")]
26547    pub effect_duration: ::core::option::Option<f32>,
26548}
26549#[derive(serde::Serialize, serde::Deserialize)]
26550#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26551pub struct CUserMessageHapticsManagerEffect {
26552    #[prost(int32, optional, tag = "1")]
26553    pub hand_id: ::core::option::Option<i32>,
26554    #[prost(uint32, optional, tag = "2")]
26555    pub effect_name_hash_code: ::core::option::Option<u32>,
26556    #[prost(float, optional, tag = "3")]
26557    pub effect_scale: ::core::option::Option<f32>,
26558}
26559#[derive(serde::Serialize, serde::Deserialize)]
26560#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26561pub struct CUserMessageAnimStateGraphState {
26562    #[prost(int32, optional, tag = "1")]
26563    pub entity_index: ::core::option::Option<i32>,
26564    #[prost(bytes = "vec", optional, tag = "2")]
26565    pub data: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26566}
26567#[derive(serde::Serialize, serde::Deserialize)]
26568#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26569pub struct CUserMessageUpdateCssClasses {
26570    #[prost(int32, optional, tag = "1")]
26571    pub target_world_panel: ::core::option::Option<i32>,
26572    #[prost(string, optional, tag = "2")]
26573    pub css_classes: ::core::option::Option<::prost::alloc::string::String>,
26574    #[prost(bool, optional, tag = "3")]
26575    pub is_add: ::core::option::Option<bool>,
26576}
26577#[derive(serde::Serialize, serde::Deserialize)]
26578#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26579pub struct CUserMessageServerFrameTime {
26580    #[prost(float, optional, tag = "1")]
26581    pub frame_time: ::core::option::Option<f32>,
26582}
26583#[derive(serde::Serialize, serde::Deserialize)]
26584#[derive(Clone, Copy, PartialEq, ::prost::Message)]
26585pub struct CUserMessageLagCompensationError {
26586    #[prost(float, optional, tag = "1")]
26587    pub distance: ::core::option::Option<f32>,
26588}
26589#[derive(serde::Serialize, serde::Deserialize)]
26590#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26591pub struct CUserMessageRequestDllStatus {
26592    #[prost(string, optional, tag = "1")]
26593    pub dll_action: ::core::option::Option<::prost::alloc::string::String>,
26594    #[prost(bool, optional, tag = "2")]
26595    pub full_report: ::core::option::Option<bool>,
26596}
26597#[derive(serde::Serialize, serde::Deserialize)]
26598#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26599pub struct CUserMessageRequestUtilAction {
26600    #[prost(int32, optional, tag = "2")]
26601    pub util1: ::core::option::Option<i32>,
26602    #[prost(int32, optional, tag = "3")]
26603    pub util2: ::core::option::Option<i32>,
26604    #[prost(int32, optional, tag = "4")]
26605    pub util3: ::core::option::Option<i32>,
26606    #[prost(int32, optional, tag = "5")]
26607    pub util4: ::core::option::Option<i32>,
26608    #[prost(int32, optional, tag = "6")]
26609    pub util5: ::core::option::Option<i32>,
26610}
26611#[derive(serde::Serialize, serde::Deserialize)]
26612#[derive(Clone, PartialEq, ::prost::Message)]
26613pub struct CUserMessageUtilMsgResponse {
26614    #[prost(fixed32, optional, tag = "1")]
26615    pub crc: ::core::option::Option<u32>,
26616    #[prost(int32, optional, tag = "2")]
26617    pub item_count: ::core::option::Option<i32>,
26618    #[prost(fixed32, optional, tag = "3")]
26619    pub crc2: ::core::option::Option<u32>,
26620    #[prost(int32, optional, tag = "4")]
26621    pub item_count2: ::core::option::Option<i32>,
26622    #[prost(int32, repeated, packed = "false", tag = "5")]
26623    pub crc_part: ::prost::alloc::vec::Vec<i32>,
26624    #[prost(int32, repeated, packed = "false", tag = "6")]
26625    pub crc_part2: ::prost::alloc::vec::Vec<i32>,
26626    #[prost(int32, optional, tag = "7")]
26627    pub client_timestamp: ::core::option::Option<i32>,
26628    #[prost(int32, optional, tag = "8")]
26629    pub platform: ::core::option::Option<i32>,
26630    #[prost(message, repeated, tag = "9")]
26631    pub itemdetails: ::prost::alloc::vec::Vec<
26632        c_user_message_util_msg_response::ItemDetail,
26633    >,
26634    #[prost(int32, optional, tag = "10")]
26635    pub itemgroup: ::core::option::Option<i32>,
26636    #[prost(int32, optional, tag = "11")]
26637    pub total_count: ::core::option::Option<i32>,
26638    #[prost(int32, optional, tag = "12")]
26639    pub total_count2: ::core::option::Option<i32>,
26640}
26641/// Nested message and enum types in `CUserMessage_UtilMsg_Response`.
26642pub mod c_user_message_util_msg_response {
26643    #[derive(serde::Serialize, serde::Deserialize)]
26644    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26645    pub struct ItemDetail {
26646        #[prost(int32, optional, tag = "1")]
26647        pub index: ::core::option::Option<i32>,
26648        #[prost(int32, optional, tag = "2")]
26649        pub hash: ::core::option::Option<i32>,
26650        #[prost(int32, optional, tag = "3")]
26651        pub crc: ::core::option::Option<i32>,
26652        #[prost(string, optional, tag = "4")]
26653        pub name: ::core::option::Option<::prost::alloc::string::String>,
26654    }
26655}
26656#[derive(serde::Serialize, serde::Deserialize)]
26657#[derive(Clone, PartialEq, ::prost::Message)]
26658pub struct CUserMessageDllStatus {
26659    #[prost(string, optional, tag = "1")]
26660    pub file_report: ::core::option::Option<::prost::alloc::string::String>,
26661    #[prost(string, optional, tag = "2")]
26662    pub command_line: ::core::option::Option<::prost::alloc::string::String>,
26663    #[prost(uint32, optional, tag = "3")]
26664    pub total_files: ::core::option::Option<u32>,
26665    #[prost(uint32, optional, tag = "4")]
26666    pub process_id: ::core::option::Option<u32>,
26667    #[prost(int32, optional, tag = "5")]
26668    pub osversion: ::core::option::Option<i32>,
26669    #[prost(uint64, optional, tag = "6")]
26670    pub client_time: ::core::option::Option<u64>,
26671    #[prost(message, repeated, tag = "7")]
26672    pub diagnostics: ::prost::alloc::vec::Vec<c_user_message_dll_status::CvDiagnostic>,
26673    #[prost(message, repeated, tag = "8")]
26674    pub modules: ::prost::alloc::vec::Vec<c_user_message_dll_status::CModule>,
26675}
26676/// Nested message and enum types in `CUserMessage_DllStatus`.
26677pub mod c_user_message_dll_status {
26678    #[derive(serde::Serialize, serde::Deserialize)]
26679    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26680    pub struct CvDiagnostic {
26681        #[prost(uint32, optional, tag = "1")]
26682        pub id: ::core::option::Option<u32>,
26683        #[prost(uint32, optional, tag = "2")]
26684        pub extended: ::core::option::Option<u32>,
26685        #[prost(uint64, optional, tag = "3")]
26686        pub value: ::core::option::Option<u64>,
26687        #[prost(string, optional, tag = "4")]
26688        pub string_value: ::core::option::Option<::prost::alloc::string::String>,
26689    }
26690    #[derive(serde::Serialize, serde::Deserialize)]
26691    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26692    pub struct CModule {
26693        #[prost(uint64, optional, tag = "1")]
26694        pub base_addr: ::core::option::Option<u64>,
26695        #[prost(string, optional, tag = "2")]
26696        pub name: ::core::option::Option<::prost::alloc::string::String>,
26697        #[prost(uint32, optional, tag = "3")]
26698        pub size: ::core::option::Option<u32>,
26699        #[prost(uint32, optional, tag = "4")]
26700        pub timestamp: ::core::option::Option<u32>,
26701    }
26702}
26703#[derive(serde::Serialize, serde::Deserialize)]
26704#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
26705pub struct CUserMessageRequestInventory {
26706    #[prost(int32, optional, tag = "1")]
26707    pub inventory: ::core::option::Option<i32>,
26708    #[prost(int32, optional, tag = "2")]
26709    pub offset: ::core::option::Option<i32>,
26710    #[prost(int32, optional, tag = "3")]
26711    pub options: ::core::option::Option<i32>,
26712}
26713#[derive(serde::Serialize, serde::Deserialize)]
26714#[derive(Clone, PartialEq, ::prost::Message)]
26715pub struct CUserMessageInventoryResponse {
26716    #[prost(fixed32, optional, tag = "1")]
26717    pub crc: ::core::option::Option<u32>,
26718    #[prost(int32, optional, tag = "2")]
26719    pub item_count: ::core::option::Option<i32>,
26720    #[prost(int32, optional, tag = "5")]
26721    pub osversion: ::core::option::Option<i32>,
26722    #[prost(int32, optional, tag = "6")]
26723    pub perf_time: ::core::option::Option<i32>,
26724    #[prost(int32, optional, tag = "7")]
26725    pub client_timestamp: ::core::option::Option<i32>,
26726    #[prost(int32, optional, tag = "8")]
26727    pub platform: ::core::option::Option<i32>,
26728    #[prost(message, repeated, tag = "9")]
26729    pub inventories: ::prost::alloc::vec::Vec<
26730        c_user_message_inventory_response::InventoryDetail,
26731    >,
26732    #[prost(message, repeated, tag = "10")]
26733    pub inventories2: ::prost::alloc::vec::Vec<
26734        c_user_message_inventory_response::InventoryDetail,
26735    >,
26736    #[prost(message, repeated, tag = "14")]
26737    pub inventories3: ::prost::alloc::vec::Vec<
26738        c_user_message_inventory_response::InventoryDetail,
26739    >,
26740    #[prost(int32, optional, tag = "11")]
26741    pub inv_type: ::core::option::Option<i32>,
26742    #[prost(int32, optional, tag = "12")]
26743    pub build_version: ::core::option::Option<i32>,
26744    #[prost(int32, optional, tag = "13")]
26745    pub instance: ::core::option::Option<i32>,
26746    #[prost(int64, optional, tag = "15")]
26747    pub start_time: ::core::option::Option<i64>,
26748}
26749/// Nested message and enum types in `CUserMessage_Inventory_Response`.
26750pub mod c_user_message_inventory_response {
26751    #[derive(serde::Serialize, serde::Deserialize)]
26752    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26753    pub struct InventoryDetail {
26754        #[prost(int32, optional, tag = "1")]
26755        pub index: ::core::option::Option<i32>,
26756        #[prost(int64, optional, tag = "2")]
26757        pub primary: ::core::option::Option<i64>,
26758        #[prost(int64, optional, tag = "3")]
26759        pub offset: ::core::option::Option<i64>,
26760        #[prost(int64, optional, tag = "4")]
26761        pub first: ::core::option::Option<i64>,
26762        #[prost(int64, optional, tag = "5")]
26763        pub base: ::core::option::Option<i64>,
26764        #[prost(string, optional, tag = "6")]
26765        pub name: ::core::option::Option<::prost::alloc::string::String>,
26766        #[prost(string, optional, tag = "7")]
26767        pub base_name: ::core::option::Option<::prost::alloc::string::String>,
26768        #[prost(int32, optional, tag = "8")]
26769        pub base_detail: ::core::option::Option<i32>,
26770        #[prost(int32, optional, tag = "9")]
26771        pub base_time: ::core::option::Option<i32>,
26772        #[prost(int32, optional, tag = "10")]
26773        pub base_hash: ::core::option::Option<i32>,
26774    }
26775}
26776#[derive(serde::Serialize, serde::Deserialize)]
26777#[derive(Clone, PartialEq, ::prost::Message)]
26778pub struct CUserMessageRequestDiagnostic {
26779    #[prost(message, repeated, tag = "1")]
26780    pub diagnostics: ::prost::alloc::vec::Vec<
26781        c_user_message_request_diagnostic::Diagnostic,
26782    >,
26783}
26784/// Nested message and enum types in `CUserMessageRequestDiagnostic`.
26785pub mod c_user_message_request_diagnostic {
26786    #[derive(serde::Serialize, serde::Deserialize)]
26787    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26788    pub struct Diagnostic {
26789        #[prost(int32, optional, tag = "1")]
26790        pub index: ::core::option::Option<i32>,
26791        #[prost(int64, optional, tag = "2")]
26792        pub offset: ::core::option::Option<i64>,
26793        #[prost(int32, optional, tag = "3")]
26794        pub param: ::core::option::Option<i32>,
26795        #[prost(int32, optional, tag = "4")]
26796        pub length: ::core::option::Option<i32>,
26797        #[prost(int32, optional, tag = "5")]
26798        pub r#type: ::core::option::Option<i32>,
26799        #[prost(int64, optional, tag = "6")]
26800        pub base: ::core::option::Option<i64>,
26801        #[prost(int64, optional, tag = "7")]
26802        pub range: ::core::option::Option<i64>,
26803        #[prost(int64, optional, tag = "8")]
26804        pub extent: ::core::option::Option<i64>,
26805        #[prost(int64, optional, tag = "9")]
26806        pub detail: ::core::option::Option<i64>,
26807        #[prost(string, optional, tag = "10")]
26808        pub name: ::core::option::Option<::prost::alloc::string::String>,
26809        #[prost(string, optional, tag = "11")]
26810        pub alias: ::core::option::Option<::prost::alloc::string::String>,
26811        #[prost(bytes = "vec", optional, tag = "12")]
26812        pub vardetail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26813        #[prost(int32, optional, tag = "13")]
26814        pub context: ::core::option::Option<i32>,
26815    }
26816}
26817#[derive(serde::Serialize, serde::Deserialize)]
26818#[derive(Clone, PartialEq, ::prost::Message)]
26819pub struct CUserMessageDiagnosticResponse {
26820    #[prost(message, repeated, tag = "1")]
26821    pub diagnostics: ::prost::alloc::vec::Vec<
26822        c_user_message_diagnostic_response::Diagnostic,
26823    >,
26824    #[prost(int32, optional, tag = "2")]
26825    pub build_version: ::core::option::Option<i32>,
26826    #[prost(int32, optional, tag = "3")]
26827    pub instance: ::core::option::Option<i32>,
26828    #[prost(int64, optional, tag = "4")]
26829    pub start_time: ::core::option::Option<i64>,
26830    #[prost(int32, optional, tag = "5")]
26831    pub osversion: ::core::option::Option<i32>,
26832    #[prost(int32, optional, tag = "6")]
26833    pub platform: ::core::option::Option<i32>,
26834}
26835/// Nested message and enum types in `CUserMessage_Diagnostic_Response`.
26836pub mod c_user_message_diagnostic_response {
26837    #[derive(serde::Serialize, serde::Deserialize)]
26838    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26839    pub struct Diagnostic {
26840        #[prost(int32, optional, tag = "1")]
26841        pub index: ::core::option::Option<i32>,
26842        #[prost(int64, optional, tag = "2")]
26843        pub offset: ::core::option::Option<i64>,
26844        #[prost(int32, optional, tag = "3")]
26845        pub param: ::core::option::Option<i32>,
26846        #[prost(int32, optional, tag = "4")]
26847        pub length: ::core::option::Option<i32>,
26848        #[prost(bytes = "vec", optional, tag = "5")]
26849        pub detail: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26850        #[prost(int64, optional, tag = "6")]
26851        pub base: ::core::option::Option<i64>,
26852        #[prost(int64, optional, tag = "7")]
26853        pub range: ::core::option::Option<i64>,
26854        #[prost(int32, optional, tag = "8")]
26855        pub r#type: ::core::option::Option<i32>,
26856        #[prost(string, optional, tag = "10")]
26857        pub name: ::core::option::Option<::prost::alloc::string::String>,
26858        #[prost(string, optional, tag = "11")]
26859        pub alias: ::core::option::Option<::prost::alloc::string::String>,
26860        #[prost(bytes = "vec", optional, tag = "12")]
26861        pub backup: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
26862        #[prost(int32, optional, tag = "13")]
26863        pub context: ::core::option::Option<i32>,
26864        #[prost(int64, optional, tag = "14")]
26865        pub control: ::core::option::Option<i64>,
26866        #[prost(int64, optional, tag = "15")]
26867        pub augment: ::core::option::Option<i64>,
26868        #[prost(int64, optional, tag = "16")]
26869        pub placebo: ::core::option::Option<i64>,
26870    }
26871}
26872#[derive(serde::Serialize, serde::Deserialize)]
26873#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26874pub struct CUserMessageExtraUserData {
26875    #[prost(int32, optional, tag = "1")]
26876    pub item: ::core::option::Option<i32>,
26877    #[prost(int64, optional, tag = "2")]
26878    pub value1: ::core::option::Option<i64>,
26879    #[prost(int64, optional, tag = "3")]
26880    pub value2: ::core::option::Option<i64>,
26881    #[prost(bytes = "vec", repeated, tag = "4")]
26882    pub detail1: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
26883    #[prost(bytes = "vec", repeated, tag = "5")]
26884    pub detail2: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec<u8>>,
26885}
26886#[derive(serde::Serialize, serde::Deserialize)]
26887#[derive(Clone, PartialEq, ::prost::Message)]
26888pub struct CUserMessageNotifyResponseFound {
26889    #[prost(int32, optional, tag = "1", default = "-1")]
26890    pub ent_index: ::core::option::Option<i32>,
26891    #[prost(string, optional, tag = "2")]
26892    pub rule_name: ::core::option::Option<::prost::alloc::string::String>,
26893    #[prost(string, optional, tag = "3")]
26894    pub response_value: ::core::option::Option<::prost::alloc::string::String>,
26895    #[prost(string, optional, tag = "4")]
26896    pub response_concept: ::core::option::Option<::prost::alloc::string::String>,
26897    #[prost(message, repeated, tag = "5")]
26898    pub criteria: ::prost::alloc::vec::Vec<
26899        c_user_message_notify_response_found::Criteria,
26900    >,
26901    #[prost(uint32, repeated, tag = "6")]
26902    pub int_criteria_names: ::prost::alloc::vec::Vec<u32>,
26903    #[prost(int32, repeated, tag = "7")]
26904    pub int_criteria_values: ::prost::alloc::vec::Vec<i32>,
26905    #[prost(uint32, repeated, tag = "8")]
26906    pub float_criteria_names: ::prost::alloc::vec::Vec<u32>,
26907    #[prost(float, repeated, packed = "false", tag = "9")]
26908    pub float_criteria_values: ::prost::alloc::vec::Vec<f32>,
26909    #[prost(uint32, repeated, tag = "10")]
26910    pub symbol_criteria_names: ::prost::alloc::vec::Vec<u32>,
26911    #[prost(uint32, repeated, tag = "11")]
26912    pub symbol_criteria_values: ::prost::alloc::vec::Vec<u32>,
26913    #[prost(int32, optional, tag = "12")]
26914    pub speak_result: ::core::option::Option<i32>,
26915}
26916/// Nested message and enum types in `CUserMessage_NotifyResponseFound`.
26917pub mod c_user_message_notify_response_found {
26918    #[derive(serde::Serialize, serde::Deserialize)]
26919    #[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
26920    pub struct Criteria {
26921        #[prost(uint32, optional, tag = "1")]
26922        pub name_symbol: ::core::option::Option<u32>,
26923        #[prost(string, optional, tag = "2")]
26924        pub value: ::core::option::Option<::prost::alloc::string::String>,
26925    }
26926}
26927#[derive(serde::Serialize, serde::Deserialize)]
26928#[derive(Clone, PartialEq, ::prost::Message)]
26929pub struct CUserMessagePlayResponseConditional {
26930    #[prost(int32, optional, tag = "1", default = "-1")]
26931    pub ent_index: ::core::option::Option<i32>,
26932    #[prost(int32, repeated, packed = "false", tag = "2")]
26933    pub player_slots: ::prost::alloc::vec::Vec<i32>,
26934    #[prost(string, optional, tag = "3")]
26935    pub response: ::core::option::Option<::prost::alloc::string::String>,
26936    #[prost(message, optional, tag = "4")]
26937    pub ent_origin: ::core::option::Option<CMsgVector>,
26938    #[prost(float, optional, tag = "5")]
26939    pub pre_delay: ::core::option::Option<f32>,
26940    #[prost(int32, optional, tag = "6")]
26941    pub mix_priority: ::core::option::Option<i32>,
26942}
26943#[derive(serde::Serialize, serde::Deserialize)]
26944#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
26945#[repr(i32)]
26946pub enum EBaseUserMessages {
26947    UmAchievementEvent = 101,
26948    UmCloseCaption = 102,
26949    UmCloseCaptionDirect = 103,
26950    UmCurrentTimescale = 104,
26951    UmDesiredTimescale = 105,
26952    UmFade = 106,
26953    UmGameTitle = 107,
26954    UmHudMsg = 110,
26955    UmHudText = 111,
26956    UmColoredText = 113,
26957    UmRequestState = 114,
26958    UmResetHud = 115,
26959    UmRumble = 116,
26960    UmSayText = 117,
26961    UmSayText2 = 118,
26962    UmSayTextChannel = 119,
26963    UmShake = 120,
26964    UmShakeDir = 121,
26965    UmWaterShake = 122,
26966    UmTextMsg = 124,
26967    UmScreenTilt = 125,
26968    UmVoiceMask = 128,
26969    UmSendAudio = 130,
26970    UmItemPickup = 131,
26971    UmAmmoDenied = 132,
26972    UmShowMenu = 134,
26973    UmCreditsMsg = 135,
26974    UmCloseCaptionPlaceholder = 142,
26975    UmCameraTransition = 143,
26976    UmAudioParameter = 144,
26977    UmParticleManager = 145,
26978    UmHudError = 146,
26979    UmCustomGameEvent = 148,
26980    UmAnimGraphUpdate = 149,
26981    UmHapticsManagerPulse = 150,
26982    UmHapticsManagerEffect = 151,
26983    UmUpdateCssClasses = 153,
26984    UmServerFrameTime = 154,
26985    UmLagCompensationError = 155,
26986    UmRequestDllStatus = 156,
26987    UmRequestUtilAction = 157,
26988    UmUtilActionResponse = 158,
26989    UmDllStatusResponse = 159,
26990    UmRequestInventory = 160,
26991    UmInventoryResponse = 161,
26992    UmRequestDiagnostic = 162,
26993    UmDiagnosticResponse = 163,
26994    UmExtraUserData = 164,
26995    UmNotifyResponseFound = 165,
26996    UmPlayResponseConditional = 166,
26997    UmMaxBase = 200,
26998}
26999impl EBaseUserMessages {
27000    /// String value of the enum field names used in the ProtoBuf definition.
27001    ///
27002    /// The values are not transformed in any way and thus are considered stable
27003    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27004    pub fn as_str_name(&self) -> &'static str {
27005        match self {
27006            Self::UmAchievementEvent => "UM_AchievementEvent",
27007            Self::UmCloseCaption => "UM_CloseCaption",
27008            Self::UmCloseCaptionDirect => "UM_CloseCaptionDirect",
27009            Self::UmCurrentTimescale => "UM_CurrentTimescale",
27010            Self::UmDesiredTimescale => "UM_DesiredTimescale",
27011            Self::UmFade => "UM_Fade",
27012            Self::UmGameTitle => "UM_GameTitle",
27013            Self::UmHudMsg => "UM_HudMsg",
27014            Self::UmHudText => "UM_HudText",
27015            Self::UmColoredText => "UM_ColoredText",
27016            Self::UmRequestState => "UM_RequestState",
27017            Self::UmResetHud => "UM_ResetHUD",
27018            Self::UmRumble => "UM_Rumble",
27019            Self::UmSayText => "UM_SayText",
27020            Self::UmSayText2 => "UM_SayText2",
27021            Self::UmSayTextChannel => "UM_SayTextChannel",
27022            Self::UmShake => "UM_Shake",
27023            Self::UmShakeDir => "UM_ShakeDir",
27024            Self::UmWaterShake => "UM_WaterShake",
27025            Self::UmTextMsg => "UM_TextMsg",
27026            Self::UmScreenTilt => "UM_ScreenTilt",
27027            Self::UmVoiceMask => "UM_VoiceMask",
27028            Self::UmSendAudio => "UM_SendAudio",
27029            Self::UmItemPickup => "UM_ItemPickup",
27030            Self::UmAmmoDenied => "UM_AmmoDenied",
27031            Self::UmShowMenu => "UM_ShowMenu",
27032            Self::UmCreditsMsg => "UM_CreditsMsg",
27033            Self::UmCloseCaptionPlaceholder => "UM_CloseCaptionPlaceholder",
27034            Self::UmCameraTransition => "UM_CameraTransition",
27035            Self::UmAudioParameter => "UM_AudioParameter",
27036            Self::UmParticleManager => "UM_ParticleManager",
27037            Self::UmHudError => "UM_HudError",
27038            Self::UmCustomGameEvent => "UM_CustomGameEvent",
27039            Self::UmAnimGraphUpdate => "UM_AnimGraphUpdate",
27040            Self::UmHapticsManagerPulse => "UM_HapticsManagerPulse",
27041            Self::UmHapticsManagerEffect => "UM_HapticsManagerEffect",
27042            Self::UmUpdateCssClasses => "UM_UpdateCssClasses",
27043            Self::UmServerFrameTime => "UM_ServerFrameTime",
27044            Self::UmLagCompensationError => "UM_LagCompensationError",
27045            Self::UmRequestDllStatus => "UM_RequestDllStatus",
27046            Self::UmRequestUtilAction => "UM_RequestUtilAction",
27047            Self::UmUtilActionResponse => "UM_UtilActionResponse",
27048            Self::UmDllStatusResponse => "UM_DllStatusResponse",
27049            Self::UmRequestInventory => "UM_RequestInventory",
27050            Self::UmInventoryResponse => "UM_InventoryResponse",
27051            Self::UmRequestDiagnostic => "UM_RequestDiagnostic",
27052            Self::UmDiagnosticResponse => "UM_DiagnosticResponse",
27053            Self::UmExtraUserData => "UM_ExtraUserData",
27054            Self::UmNotifyResponseFound => "UM_NotifyResponseFound",
27055            Self::UmPlayResponseConditional => "UM_PlayResponseConditional",
27056            Self::UmMaxBase => "UM_MAX_BASE",
27057        }
27058    }
27059    /// Creates an enum from field names used in the ProtoBuf definition.
27060    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27061        match value {
27062            "UM_AchievementEvent" => Some(Self::UmAchievementEvent),
27063            "UM_CloseCaption" => Some(Self::UmCloseCaption),
27064            "UM_CloseCaptionDirect" => Some(Self::UmCloseCaptionDirect),
27065            "UM_CurrentTimescale" => Some(Self::UmCurrentTimescale),
27066            "UM_DesiredTimescale" => Some(Self::UmDesiredTimescale),
27067            "UM_Fade" => Some(Self::UmFade),
27068            "UM_GameTitle" => Some(Self::UmGameTitle),
27069            "UM_HudMsg" => Some(Self::UmHudMsg),
27070            "UM_HudText" => Some(Self::UmHudText),
27071            "UM_ColoredText" => Some(Self::UmColoredText),
27072            "UM_RequestState" => Some(Self::UmRequestState),
27073            "UM_ResetHUD" => Some(Self::UmResetHud),
27074            "UM_Rumble" => Some(Self::UmRumble),
27075            "UM_SayText" => Some(Self::UmSayText),
27076            "UM_SayText2" => Some(Self::UmSayText2),
27077            "UM_SayTextChannel" => Some(Self::UmSayTextChannel),
27078            "UM_Shake" => Some(Self::UmShake),
27079            "UM_ShakeDir" => Some(Self::UmShakeDir),
27080            "UM_WaterShake" => Some(Self::UmWaterShake),
27081            "UM_TextMsg" => Some(Self::UmTextMsg),
27082            "UM_ScreenTilt" => Some(Self::UmScreenTilt),
27083            "UM_VoiceMask" => Some(Self::UmVoiceMask),
27084            "UM_SendAudio" => Some(Self::UmSendAudio),
27085            "UM_ItemPickup" => Some(Self::UmItemPickup),
27086            "UM_AmmoDenied" => Some(Self::UmAmmoDenied),
27087            "UM_ShowMenu" => Some(Self::UmShowMenu),
27088            "UM_CreditsMsg" => Some(Self::UmCreditsMsg),
27089            "UM_CloseCaptionPlaceholder" => Some(Self::UmCloseCaptionPlaceholder),
27090            "UM_CameraTransition" => Some(Self::UmCameraTransition),
27091            "UM_AudioParameter" => Some(Self::UmAudioParameter),
27092            "UM_ParticleManager" => Some(Self::UmParticleManager),
27093            "UM_HudError" => Some(Self::UmHudError),
27094            "UM_CustomGameEvent" => Some(Self::UmCustomGameEvent),
27095            "UM_AnimGraphUpdate" => Some(Self::UmAnimGraphUpdate),
27096            "UM_HapticsManagerPulse" => Some(Self::UmHapticsManagerPulse),
27097            "UM_HapticsManagerEffect" => Some(Self::UmHapticsManagerEffect),
27098            "UM_UpdateCssClasses" => Some(Self::UmUpdateCssClasses),
27099            "UM_ServerFrameTime" => Some(Self::UmServerFrameTime),
27100            "UM_LagCompensationError" => Some(Self::UmLagCompensationError),
27101            "UM_RequestDllStatus" => Some(Self::UmRequestDllStatus),
27102            "UM_RequestUtilAction" => Some(Self::UmRequestUtilAction),
27103            "UM_UtilActionResponse" => Some(Self::UmUtilActionResponse),
27104            "UM_DllStatusResponse" => Some(Self::UmDllStatusResponse),
27105            "UM_RequestInventory" => Some(Self::UmRequestInventory),
27106            "UM_InventoryResponse" => Some(Self::UmInventoryResponse),
27107            "UM_RequestDiagnostic" => Some(Self::UmRequestDiagnostic),
27108            "UM_DiagnosticResponse" => Some(Self::UmDiagnosticResponse),
27109            "UM_ExtraUserData" => Some(Self::UmExtraUserData),
27110            "UM_NotifyResponseFound" => Some(Self::UmNotifyResponseFound),
27111            "UM_PlayResponseConditional" => Some(Self::UmPlayResponseConditional),
27112            "UM_MAX_BASE" => Some(Self::UmMaxBase),
27113            _ => None,
27114        }
27115    }
27116}
27117#[derive(serde::Serialize, serde::Deserialize)]
27118#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27119#[repr(i32)]
27120pub enum EBaseEntityMessages {
27121    EmPlayJingle = 136,
27122    EmScreenOverlay = 137,
27123    EmRemoveAllDecals = 138,
27124    EmPropagateForce = 139,
27125    EmDoSpark = 140,
27126    EmFixAngle = 141,
27127}
27128impl EBaseEntityMessages {
27129    /// String value of the enum field names used in the ProtoBuf definition.
27130    ///
27131    /// The values are not transformed in any way and thus are considered stable
27132    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27133    pub fn as_str_name(&self) -> &'static str {
27134        match self {
27135            Self::EmPlayJingle => "EM_PlayJingle",
27136            Self::EmScreenOverlay => "EM_ScreenOverlay",
27137            Self::EmRemoveAllDecals => "EM_RemoveAllDecals",
27138            Self::EmPropagateForce => "EM_PropagateForce",
27139            Self::EmDoSpark => "EM_DoSpark",
27140            Self::EmFixAngle => "EM_FixAngle",
27141        }
27142    }
27143    /// Creates an enum from field names used in the ProtoBuf definition.
27144    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27145        match value {
27146            "EM_PlayJingle" => Some(Self::EmPlayJingle),
27147            "EM_ScreenOverlay" => Some(Self::EmScreenOverlay),
27148            "EM_RemoveAllDecals" => Some(Self::EmRemoveAllDecals),
27149            "EM_PropagateForce" => Some(Self::EmPropagateForce),
27150            "EM_DoSpark" => Some(Self::EmDoSpark),
27151            "EM_FixAngle" => Some(Self::EmFixAngle),
27152            _ => None,
27153        }
27154    }
27155}
27156#[derive(serde::Serialize, serde::Deserialize)]
27157#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27158#[repr(i32)]
27159pub enum ERollType {
27160    RollNone = -1,
27161    RollStats = 0,
27162    RollCredits = 1,
27163    RollLateJoinLogo = 2,
27164    RollOuttro = 3,
27165}
27166impl ERollType {
27167    /// String value of the enum field names used in the ProtoBuf definition.
27168    ///
27169    /// The values are not transformed in any way and thus are considered stable
27170    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27171    pub fn as_str_name(&self) -> &'static str {
27172        match self {
27173            Self::RollNone => "ROLL_NONE",
27174            Self::RollStats => "ROLL_STATS",
27175            Self::RollCredits => "ROLL_CREDITS",
27176            Self::RollLateJoinLogo => "ROLL_LATE_JOIN_LOGO",
27177            Self::RollOuttro => "ROLL_OUTTRO",
27178        }
27179    }
27180    /// Creates an enum from field names used in the ProtoBuf definition.
27181    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27182        match value {
27183            "ROLL_NONE" => Some(Self::RollNone),
27184            "ROLL_STATS" => Some(Self::RollStats),
27185            "ROLL_CREDITS" => Some(Self::RollCredits),
27186            "ROLL_LATE_JOIN_LOGO" => Some(Self::RollLateJoinLogo),
27187            "ROLL_OUTTRO" => Some(Self::RollOuttro),
27188            _ => None,
27189        }
27190    }
27191}
27192#[derive(serde::Serialize, serde::Deserialize)]
27193#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27194#[repr(i32)]
27195pub enum ParticleMessage {
27196    GameParticleManagerEventCreate = 0,
27197    GameParticleManagerEventUpdate = 1,
27198    GameParticleManagerEventUpdateForward = 2,
27199    GameParticleManagerEventUpdateOrientation = 3,
27200    GameParticleManagerEventUpdateFallback = 4,
27201    GameParticleManagerEventUpdateEnt = 5,
27202    GameParticleManagerEventUpdateOffset = 6,
27203    GameParticleManagerEventDestroy = 7,
27204    GameParticleManagerEventDestroyInvolving = 8,
27205    GameParticleManagerEventRelease = 9,
27206    GameParticleManagerEventLatency = 10,
27207    GameParticleManagerEventShouldDraw = 11,
27208    GameParticleManagerEventFrozen = 12,
27209    GameParticleManagerEventChangeControlPointAttachment = 13,
27210    GameParticleManagerEventUpdateEntityPosition = 14,
27211    GameParticleManagerEventSetFowProperties = 15,
27212    GameParticleManagerEventSetText = 16,
27213    GameParticleManagerEventSetShouldCheckFow = 17,
27214    GameParticleManagerEventSetControlPointModel = 18,
27215    GameParticleManagerEventSetControlPointSnapshot = 19,
27216    GameParticleManagerEventSetTextureAttribute = 20,
27217    GameParticleManagerEventSetSceneObjectGenericFlag = 21,
27218    GameParticleManagerEventSetSceneObjectTintAndDesat = 22,
27219    GameParticleManagerEventDestroyNamed = 23,
27220    GameParticleManagerEventSkipToTime = 24,
27221    GameParticleManagerEventCanFreeze = 25,
27222    GameParticleManagerEventSetNamedValueContext = 26,
27223    GameParticleManagerEventUpdateTransform = 27,
27224    GameParticleManagerEventFreezeTransitionOverride = 28,
27225    GameParticleManagerEventFreezeInvolving = 29,
27226    GameParticleManagerEventAddModellistOverrideElement = 30,
27227    GameParticleManagerEventClearModellistOverride = 31,
27228    GameParticleManagerEventCreatePhysicsSim = 32,
27229    GameParticleManagerEventDestroyPhysicsSim = 33,
27230    GameParticleManagerEventSetVdata = 34,
27231    GameParticleManagerEventSetMaterialOverride = 35,
27232    GameParticleManagerEventAddFan = 36,
27233    GameParticleManagerEventUpdateFan = 37,
27234    GameParticleManagerEventSetClusterGrowth = 38,
27235    GameParticleManagerEventRemoveFan = 39,
27236}
27237impl ParticleMessage {
27238    /// String value of the enum field names used in the ProtoBuf definition.
27239    ///
27240    /// The values are not transformed in any way and thus are considered stable
27241    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27242    pub fn as_str_name(&self) -> &'static str {
27243        match self {
27244            Self::GameParticleManagerEventCreate => "GAME_PARTICLE_MANAGER_EVENT_CREATE",
27245            Self::GameParticleManagerEventUpdate => "GAME_PARTICLE_MANAGER_EVENT_UPDATE",
27246            Self::GameParticleManagerEventUpdateForward => {
27247                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD"
27248            }
27249            Self::GameParticleManagerEventUpdateOrientation => {
27250                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION"
27251            }
27252            Self::GameParticleManagerEventUpdateFallback => {
27253                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK"
27254            }
27255            Self::GameParticleManagerEventUpdateEnt => {
27256                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT"
27257            }
27258            Self::GameParticleManagerEventUpdateOffset => {
27259                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET"
27260            }
27261            Self::GameParticleManagerEventDestroy => {
27262                "GAME_PARTICLE_MANAGER_EVENT_DESTROY"
27263            }
27264            Self::GameParticleManagerEventDestroyInvolving => {
27265                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING"
27266            }
27267            Self::GameParticleManagerEventRelease => {
27268                "GAME_PARTICLE_MANAGER_EVENT_RELEASE"
27269            }
27270            Self::GameParticleManagerEventLatency => {
27271                "GAME_PARTICLE_MANAGER_EVENT_LATENCY"
27272            }
27273            Self::GameParticleManagerEventShouldDraw => {
27274                "GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW"
27275            }
27276            Self::GameParticleManagerEventFrozen => "GAME_PARTICLE_MANAGER_EVENT_FROZEN",
27277            Self::GameParticleManagerEventChangeControlPointAttachment => {
27278                "GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT"
27279            }
27280            Self::GameParticleManagerEventUpdateEntityPosition => {
27281                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION"
27282            }
27283            Self::GameParticleManagerEventSetFowProperties => {
27284                "GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES"
27285            }
27286            Self::GameParticleManagerEventSetText => {
27287                "GAME_PARTICLE_MANAGER_EVENT_SET_TEXT"
27288            }
27289            Self::GameParticleManagerEventSetShouldCheckFow => {
27290                "GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW"
27291            }
27292            Self::GameParticleManagerEventSetControlPointModel => {
27293                "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL"
27294            }
27295            Self::GameParticleManagerEventSetControlPointSnapshot => {
27296                "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT"
27297            }
27298            Self::GameParticleManagerEventSetTextureAttribute => {
27299                "GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE"
27300            }
27301            Self::GameParticleManagerEventSetSceneObjectGenericFlag => {
27302                "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG"
27303            }
27304            Self::GameParticleManagerEventSetSceneObjectTintAndDesat => {
27305                "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT"
27306            }
27307            Self::GameParticleManagerEventDestroyNamed => {
27308                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED"
27309            }
27310            Self::GameParticleManagerEventSkipToTime => {
27311                "GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME"
27312            }
27313            Self::GameParticleManagerEventCanFreeze => {
27314                "GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE"
27315            }
27316            Self::GameParticleManagerEventSetNamedValueContext => {
27317                "GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT"
27318            }
27319            Self::GameParticleManagerEventUpdateTransform => {
27320                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM"
27321            }
27322            Self::GameParticleManagerEventFreezeTransitionOverride => {
27323                "GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE"
27324            }
27325            Self::GameParticleManagerEventFreezeInvolving => {
27326                "GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING"
27327            }
27328            Self::GameParticleManagerEventAddModellistOverrideElement => {
27329                "GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT"
27330            }
27331            Self::GameParticleManagerEventClearModellistOverride => {
27332                "GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE"
27333            }
27334            Self::GameParticleManagerEventCreatePhysicsSim => {
27335                "GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM"
27336            }
27337            Self::GameParticleManagerEventDestroyPhysicsSim => {
27338                "GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM"
27339            }
27340            Self::GameParticleManagerEventSetVdata => {
27341                "GAME_PARTICLE_MANAGER_EVENT_SET_VDATA"
27342            }
27343            Self::GameParticleManagerEventSetMaterialOverride => {
27344                "GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE"
27345            }
27346            Self::GameParticleManagerEventAddFan => "GAME_PARTICLE_MANAGER_EVENT_ADD_FAN",
27347            Self::GameParticleManagerEventUpdateFan => {
27348                "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FAN"
27349            }
27350            Self::GameParticleManagerEventSetClusterGrowth => {
27351                "GAME_PARTICLE_MANAGER_EVENT_SET_CLUSTER_GROWTH"
27352            }
27353            Self::GameParticleManagerEventRemoveFan => {
27354                "GAME_PARTICLE_MANAGER_EVENT_REMOVE_FAN"
27355            }
27356        }
27357    }
27358    /// Creates an enum from field names used in the ProtoBuf definition.
27359    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27360        match value {
27361            "GAME_PARTICLE_MANAGER_EVENT_CREATE" => {
27362                Some(Self::GameParticleManagerEventCreate)
27363            }
27364            "GAME_PARTICLE_MANAGER_EVENT_UPDATE" => {
27365                Some(Self::GameParticleManagerEventUpdate)
27366            }
27367            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FORWARD" => {
27368                Some(Self::GameParticleManagerEventUpdateForward)
27369            }
27370            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ORIENTATION" => {
27371                Some(Self::GameParticleManagerEventUpdateOrientation)
27372            }
27373            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FALLBACK" => {
27374                Some(Self::GameParticleManagerEventUpdateFallback)
27375            }
27376            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENT" => {
27377                Some(Self::GameParticleManagerEventUpdateEnt)
27378            }
27379            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_OFFSET" => {
27380                Some(Self::GameParticleManagerEventUpdateOffset)
27381            }
27382            "GAME_PARTICLE_MANAGER_EVENT_DESTROY" => {
27383                Some(Self::GameParticleManagerEventDestroy)
27384            }
27385            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_INVOLVING" => {
27386                Some(Self::GameParticleManagerEventDestroyInvolving)
27387            }
27388            "GAME_PARTICLE_MANAGER_EVENT_RELEASE" => {
27389                Some(Self::GameParticleManagerEventRelease)
27390            }
27391            "GAME_PARTICLE_MANAGER_EVENT_LATENCY" => {
27392                Some(Self::GameParticleManagerEventLatency)
27393            }
27394            "GAME_PARTICLE_MANAGER_EVENT_SHOULD_DRAW" => {
27395                Some(Self::GameParticleManagerEventShouldDraw)
27396            }
27397            "GAME_PARTICLE_MANAGER_EVENT_FROZEN" => {
27398                Some(Self::GameParticleManagerEventFrozen)
27399            }
27400            "GAME_PARTICLE_MANAGER_EVENT_CHANGE_CONTROL_POINT_ATTACHMENT" => {
27401                Some(Self::GameParticleManagerEventChangeControlPointAttachment)
27402            }
27403            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_ENTITY_POSITION" => {
27404                Some(Self::GameParticleManagerEventUpdateEntityPosition)
27405            }
27406            "GAME_PARTICLE_MANAGER_EVENT_SET_FOW_PROPERTIES" => {
27407                Some(Self::GameParticleManagerEventSetFowProperties)
27408            }
27409            "GAME_PARTICLE_MANAGER_EVENT_SET_TEXT" => {
27410                Some(Self::GameParticleManagerEventSetText)
27411            }
27412            "GAME_PARTICLE_MANAGER_EVENT_SET_SHOULD_CHECK_FOW" => {
27413                Some(Self::GameParticleManagerEventSetShouldCheckFow)
27414            }
27415            "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_MODEL" => {
27416                Some(Self::GameParticleManagerEventSetControlPointModel)
27417            }
27418            "GAME_PARTICLE_MANAGER_EVENT_SET_CONTROL_POINT_SNAPSHOT" => {
27419                Some(Self::GameParticleManagerEventSetControlPointSnapshot)
27420            }
27421            "GAME_PARTICLE_MANAGER_EVENT_SET_TEXTURE_ATTRIBUTE" => {
27422                Some(Self::GameParticleManagerEventSetTextureAttribute)
27423            }
27424            "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_GENERIC_FLAG" => {
27425                Some(Self::GameParticleManagerEventSetSceneObjectGenericFlag)
27426            }
27427            "GAME_PARTICLE_MANAGER_EVENT_SET_SCENE_OBJECT_TINT_AND_DESAT" => {
27428                Some(Self::GameParticleManagerEventSetSceneObjectTintAndDesat)
27429            }
27430            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_NAMED" => {
27431                Some(Self::GameParticleManagerEventDestroyNamed)
27432            }
27433            "GAME_PARTICLE_MANAGER_EVENT_SKIP_TO_TIME" => {
27434                Some(Self::GameParticleManagerEventSkipToTime)
27435            }
27436            "GAME_PARTICLE_MANAGER_EVENT_CAN_FREEZE" => {
27437                Some(Self::GameParticleManagerEventCanFreeze)
27438            }
27439            "GAME_PARTICLE_MANAGER_EVENT_SET_NAMED_VALUE_CONTEXT" => {
27440                Some(Self::GameParticleManagerEventSetNamedValueContext)
27441            }
27442            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_TRANSFORM" => {
27443                Some(Self::GameParticleManagerEventUpdateTransform)
27444            }
27445            "GAME_PARTICLE_MANAGER_EVENT_FREEZE_TRANSITION_OVERRIDE" => {
27446                Some(Self::GameParticleManagerEventFreezeTransitionOverride)
27447            }
27448            "GAME_PARTICLE_MANAGER_EVENT_FREEZE_INVOLVING" => {
27449                Some(Self::GameParticleManagerEventFreezeInvolving)
27450            }
27451            "GAME_PARTICLE_MANAGER_EVENT_ADD_MODELLIST_OVERRIDE_ELEMENT" => {
27452                Some(Self::GameParticleManagerEventAddModellistOverrideElement)
27453            }
27454            "GAME_PARTICLE_MANAGER_EVENT_CLEAR_MODELLIST_OVERRIDE" => {
27455                Some(Self::GameParticleManagerEventClearModellistOverride)
27456            }
27457            "GAME_PARTICLE_MANAGER_EVENT_CREATE_PHYSICS_SIM" => {
27458                Some(Self::GameParticleManagerEventCreatePhysicsSim)
27459            }
27460            "GAME_PARTICLE_MANAGER_EVENT_DESTROY_PHYSICS_SIM" => {
27461                Some(Self::GameParticleManagerEventDestroyPhysicsSim)
27462            }
27463            "GAME_PARTICLE_MANAGER_EVENT_SET_VDATA" => {
27464                Some(Self::GameParticleManagerEventSetVdata)
27465            }
27466            "GAME_PARTICLE_MANAGER_EVENT_SET_MATERIAL_OVERRIDE" => {
27467                Some(Self::GameParticleManagerEventSetMaterialOverride)
27468            }
27469            "GAME_PARTICLE_MANAGER_EVENT_ADD_FAN" => {
27470                Some(Self::GameParticleManagerEventAddFan)
27471            }
27472            "GAME_PARTICLE_MANAGER_EVENT_UPDATE_FAN" => {
27473                Some(Self::GameParticleManagerEventUpdateFan)
27474            }
27475            "GAME_PARTICLE_MANAGER_EVENT_SET_CLUSTER_GROWTH" => {
27476                Some(Self::GameParticleManagerEventSetClusterGrowth)
27477            }
27478            "GAME_PARTICLE_MANAGER_EVENT_REMOVE_FAN" => {
27479                Some(Self::GameParticleManagerEventRemoveFan)
27480            }
27481            _ => None,
27482        }
27483    }
27484}
27485#[derive(serde::Serialize, serde::Deserialize)]
27486#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
27487#[repr(i32)]
27488pub enum EHapticPulseType {
27489    VrHandHapticPulseLight = 0,
27490    VrHandHapticPulseMedium = 1,
27491    VrHandHapticPulseStrong = 2,
27492}
27493impl EHapticPulseType {
27494    /// String value of the enum field names used in the ProtoBuf definition.
27495    ///
27496    /// The values are not transformed in any way and thus are considered stable
27497    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
27498    pub fn as_str_name(&self) -> &'static str {
27499        match self {
27500            Self::VrHandHapticPulseLight => "VR_HAND_HAPTIC_PULSE_LIGHT",
27501            Self::VrHandHapticPulseMedium => "VR_HAND_HAPTIC_PULSE_MEDIUM",
27502            Self::VrHandHapticPulseStrong => "VR_HAND_HAPTIC_PULSE_STRONG",
27503        }
27504    }
27505    /// Creates an enum from field names used in the ProtoBuf definition.
27506    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
27507        match value {
27508            "VR_HAND_HAPTIC_PULSE_LIGHT" => Some(Self::VrHandHapticPulseLight),
27509            "VR_HAND_HAPTIC_PULSE_MEDIUM" => Some(Self::VrHandHapticPulseMedium),
27510            "VR_HAND_HAPTIC_PULSE_STRONG" => Some(Self::VrHandHapticPulseStrong),
27511            _ => None,
27512        }
27513    }
27514}