// This file is @generated by prost-build.
/// From: bdaction.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ActionPlayerStateInfo {
    #[prost(int32, optional, tag = "1")]
    pub r#type: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub seq: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "3")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(message, optional, tag = "4")]
    pub player_position: ::core::option::Option<PlayerPosition>,
    #[prost(message, optional, tag = "5")]
    pub player_vector: ::core::option::Option<PlayerVector>,
    #[prost(message, optional, tag = "6")]
    pub knockback_info: ::core::option::Option<KnockbackInfo>,
    #[prost(float, optional, tag = "7")]
    pub speed: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "8")]
    pub delta_time: ::core::option::Option<f32>,
    #[prost(int64, optional, tag = "9")]
    pub send_time: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "10")]
    pub health: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "11")]
    pub stamina: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "12")]
    pub recovery_count: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "13")]
    pub skill_id: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "14")]
    pub hit_info: ::core::option::Option<PlayerHitInfo>,
    #[prost(message, repeated, tag = "15")]
    pub buff_infos: ::prost::alloc::vec::Vec<BuffInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ActionMonsterStateInfo {
    #[prost(int32, optional, tag = "1")]
    pub r#type: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub seq: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub monster_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub monster_index: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "5")]
    pub monster_position: ::core::option::Option<PlayerPosition>,
    #[prost(message, optional, tag = "6")]
    pub monster_vector: ::core::option::Option<PlayerVector>,
    #[prost(float, optional, tag = "7")]
    pub speed: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "8")]
    pub delta_time: ::core::option::Option<f32>,
    #[prost(int64, optional, tag = "9")]
    pub send_time: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "10")]
    pub health: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "11")]
    pub rage_value: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "12")]
    pub groggy_value: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "13")]
    pub state: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "14")]
    pub pattern_info: ::core::option::Option<MonsterPatternInfo>,
    #[prost(message, optional, tag = "15")]
    pub hit_info: ::core::option::Option<MonsterHitInfo>,
    #[prost(message, repeated, tag = "16")]
    pub parts_info: ::prost::alloc::vec::Vec<MonsterPartsInfo>,
    #[prost(message, repeated, tag = "17")]
    pub buff_infos: ::prost::alloc::vec::Vec<BuffInfo>,
    #[prost(int32, optional, tag = "18")]
    pub attack_skill_id: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PlayerPosition {
    #[prost(float, optional, tag = "1")]
    pub x: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "2")]
    pub y: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "3")]
    pub z: ::core::option::Option<f32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PlayerVector {
    #[prost(float, optional, tag = "1")]
    pub x: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "2")]
    pub y: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "3")]
    pub z: ::core::option::Option<f32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ActionUserInfo {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub action_char_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub client_state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub network_state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub network_ping: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub calc_state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScActionGameStartRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub start_time: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "3")]
    pub host_owner_index: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "4")]
    pub room_user_info: ::prost::alloc::vec::Vec<ActionUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScActionGameEndRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub end_time: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionReconnectRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsActionReconnectResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "4")]
    pub client_state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub room_state: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "6")]
    pub player_sync_info: ::prost::alloc::vec::Vec<ActionPlayerStateInfo>,
    #[prost(message, optional, tag = "7")]
    pub monster_sync_info: ::core::option::Option<ActionMonsterStateInfo>,
    #[prost(int64, optional, tag = "8")]
    pub host_owner_index: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScActionChangeHostRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub host_owner_index: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsActionRelayRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub network_ping: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "4")]
    pub action_relay_user_info: ::prost::alloc::vec::Vec<ActionRelayUserInfo>,
    #[prost(message, optional, tag = "5")]
    pub monster_sync_info: ::core::option::Option<ActionMonsterStateInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScActionStateUpdateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub action_user_info: ::prost::alloc::vec::Vec<ActionUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCheatChangeHostRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MonsterPatternInfo {
    #[prost(int64, optional, tag = "1")]
    pub target_owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub pattern_id: ::core::option::Option<i32>,
    #[prost(float, optional, tag = "3")]
    pub distance_to_attack: ::core::option::Option<f32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct MonsterHitInfo {
    #[prost(int32, optional, tag = "1")]
    pub rage_value: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub groggy_value: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub target_parts_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub target_attack_type: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub damage: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "6")]
    pub attack_owner_index: ::core::option::Option<i64>,
    #[prost(message, optional, tag = "7")]
    pub contact_point: ::core::option::Option<PlayerPosition>,
    #[prost(int32, optional, tag = "8")]
    pub display_attack_count: ::core::option::Option<i32>,
    #[prost(bool, optional, tag = "9")]
    pub is_critical: ::core::option::Option<bool>,
    #[prost(bool, optional, tag = "10")]
    pub is_weak: ::core::option::Option<bool>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MonsterPartsInfo {
    #[prost(int32, optional, tag = "1")]
    pub parts_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub parts_health: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PlayerHitInfo {
    #[prost(int32, optional, tag = "1")]
    pub attack_char_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub attack_skill_id: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "3")]
    pub contact_point: ::core::option::Option<PlayerPosition>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct KnockbackInfo {
    #[prost(message, optional, tag = "1")]
    pub knockback_dir: ::core::option::Option<PlayerVector>,
    #[prost(float, optional, tag = "2")]
    pub knockback_value: ::core::option::Option<f32>,
    #[prost(float, optional, tag = "3")]
    pub knockback_speed: ::core::option::Option<f32>,
    #[prost(bool, optional, tag = "4")]
    pub is_guard: ::core::option::Option<bool>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct BuffInfo {
    #[prost(int32, optional, tag = "1")]
    pub buff_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub caster_char_id: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "3")]
    pub start_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionGameExitRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionGameExitResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScActionGameExitRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ActionRelayUserInfo {
    #[prost(message, optional, tag = "1")]
    pub action_user_info: ::core::option::Option<ActionUserInfo>,
    #[prost(message, optional, tag = "2")]
    pub player_sync_info: ::core::option::Option<ActionPlayerStateInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionUserApplicationPauseRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionUserApplicationPauseResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScActionUserApplicationPauseRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, optional, tag = "2")]
    pub action_user_info: ::core::option::Option<ActionUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionOtherUserHitRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub hit_owner_index: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsActionOtherUserHitResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
/// From: charawakedbinfo.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CharAwakeDbInfo {
    #[prost(int32, optional, tag = "1")]
    pub unique_char_id: ::core::option::Option<i32>,
    #[prost(bool, optional, tag = "2")]
    pub is_awake: ::core::option::Option<bool>,
    #[prost(int32, optional, tag = "3")]
    pub imprint_slot_1_level: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub imprint_slot_2_level: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub imprint_slot_3_level: ::core::option::Option<i32>,
}
/// From: chardbinfo.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CharDbInfo {
    #[prost(int64, optional, tag = "1")]
    pub inven_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub id: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "3")]
    pub hp: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "4")]
    pub level: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub costume_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub exp: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "7")]
    pub use_costume: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "8")]
    pub talent_level: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "9")]
    pub talent_exp: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "10")]
    pub solidarity_reward: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "11")]
    pub expiry_time: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "12")]
    pub pictorialbook_info: ::prost::alloc::vec::Vec<PictorialBookDbInfo>,
    #[prost(int32, optional, tag = "13")]
    pub connect_potential_costume: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct PictorialBookDbInfo {
    #[prost(int32, optional, tag = "1")]
    pub id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub group_id: ::core::option::Option<i32>,
}
/// From: chat.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsChatMessageRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "3")]
    pub message: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsChatMessageResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScChatBroadcastRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "3")]
    pub message: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScChatBroadcastResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScDirectMessageRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(enumeration = "ECommonType", optional, tag = "3")]
    pub r#type: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScDirectMessageResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
/// From: common.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CommonHeader {
    #[prost(int64, optional, tag = "1")]
    pub now: ::core::option::Option<i64>,
    #[prost(enumeration = "EErrorCode", optional, tag = "2")]
    pub code: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "3")]
    pub user_info: ::core::option::Option<UserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsPingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub id: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub message: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsPingResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScNoticeRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub notice: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScNoticeResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsUserInfoUpdateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsUserInfoUpdateResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct UserInfo {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "2")]
    pub guild_id: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "3")]
    pub desc: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub owner_name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "5")]
    pub portrait_costume_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub portrait_costume_design_id: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScConnectCloseRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(enumeration = "RemovalReason", optional, tag = "2")]
    pub reason: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub message: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub stack: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScConnectCloseResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
/// From: costumedbinfo.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CostumeDbInfo {
    #[prost(int64, optional, tag = "1")]
    pub inven_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub level: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "4")]
    pub use_char: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "5")]
    pub pictorialbook_info: ::prost::alloc::vec::Vec<PictorialBookDbInfo>,
    #[prost(int32, optional, tag = "6")]
    pub sort_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "7")]
    pub use_my_room_count: ::core::option::Option<i32>,
    #[prost(int32, repeated, packed = "false", tag = "8")]
    pub potential_id: ::prost::alloc::vec::Vec<i32>,
    #[prost(int32, optional, tag = "9")]
    pub design_id: ::core::option::Option<i32>,
}
/// From: equipdbinfo.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EquipDbInfo {
    #[prost(int64, optional, tag = "1")]
    pub inven_index: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "2")]
    pub use_char: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub keep_flag: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub lock_flag: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "5")]
    pub base_info: ::core::option::Option<EquipBaseInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct EquipBaseInfo {
    #[prost(int32, optional, tag = "1")]
    pub id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub level: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "3")]
    pub main_option: ::prost::alloc::vec::Vec<EquipOptionInfo>,
    #[prost(message, repeated, tag = "4")]
    pub sub_option: ::prost::alloc::vec::Vec<EquipOptionInfo>,
    #[prost(message, optional, tag = "5")]
    pub private_option: ::core::option::Option<EquipOptionInfo>,
    #[prost(int32, repeated, packed = "false", tag = "6")]
    pub rank: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct EquipOptionInfo {
    #[prost(int32, optional, tag = "1")]
    pub group_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub id: ::core::option::Option<i32>,
}
/// From: guild.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GuildMessage {
    #[prost(string, optional, tag = "1")]
    pub message: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GuildEmotion {
    #[prost(int32, optional, tag = "1")]
    pub emoji_id: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GuildDeck {
    #[prost(message, repeated, tag = "1")]
    pub deck_message_info: ::prost::alloc::vec::Vec<DeckMessageInfo>,
    #[prost(string, optional, tag = "2")]
    pub deck_name: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub deck_icon_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub deck_icon_color_id: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "5")]
    pub deck_msg_collection_info: ::prost::alloc::vec::Vec<PictorialBuffStatDbInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct GuildStateChange {
    #[prost(message, optional, tag = "1")]
    pub user_info: ::core::option::Option<UserInfo>,
    #[prost(enumeration = "EGuildRoll", optional, tag = "2")]
    pub before: ::core::option::Option<i32>,
    #[prost(enumeration = "EGuildRoll", optional, tag = "3")]
    pub after: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct SupporterChange {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub slot_index: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct GuildNotify {
    #[prost(enumeration = "EGuildNotifyType", optional, tag = "1")]
    pub r#type: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "2")]
    pub state_change: ::prost::alloc::vec::Vec<GuildStateChange>,
    #[prost(message, optional, tag = "3")]
    pub supporter_change: ::core::option::Option<SupporterChange>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DeckMessageInfo {
    #[prost(message, optional, tag = "1")]
    pub char_info: ::core::option::Option<CharDbInfo>,
    #[prost(message, repeated, tag = "2")]
    pub equip_info: ::prost::alloc::vec::Vec<EquipDbInfo>,
    #[prost(message, repeated, tag = "3")]
    pub costume_info: ::prost::alloc::vec::Vec<CostumeDbInfo>,
    #[prost(message, optional, tag = "4")]
    pub char_awake_info: ::core::option::Option<CharAwakeDbInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGuildMessageLoadRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsGuildMessageLoadResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub datas: ::prost::alloc::vec::Vec<CsGuildMessageRequest>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsGuildMessageRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(enumeration = "EGuildMsgType", optional, tag = "2")]
    pub r#type: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "3")]
    pub message: ::core::option::Option<GuildMessage>,
    #[prost(message, optional, tag = "4")]
    pub emotion: ::core::option::Option<GuildEmotion>,
    #[prost(message, optional, tag = "5")]
    pub deck: ::core::option::Option<GuildDeck>,
    #[prost(message, optional, tag = "6")]
    pub notify: ::core::option::Option<GuildNotify>,
    #[prost(int64, optional, tag = "7")]
    pub server_now: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGuildMessageResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScGuildBroadcastRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(enumeration = "EGuildMsgType", optional, tag = "2")]
    pub r#type: ::core::option::Option<i32>,
    #[prost(message, optional, tag = "3")]
    pub message: ::core::option::Option<GuildMessage>,
    #[prost(message, optional, tag = "4")]
    pub emotion: ::core::option::Option<GuildEmotion>,
    #[prost(message, optional, tag = "5")]
    pub deck: ::core::option::Option<GuildDeck>,
    #[prost(message, optional, tag = "6")]
    pub notify: ::core::option::Option<GuildNotify>,
    #[prost(int64, optional, tag = "7")]
    pub server_now: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGuildBroadcastResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
/// From: matching.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SsGameMatchingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub game_clear_type: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "5")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "6")]
    pub magic_value: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "7")]
    pub region_info: ::prost::alloc::vec::Vec<ServerPingInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct MatchingClientInfo {
    #[prost(message, optional, tag = "1")]
    pub user_info: ::core::option::Option<UserInfo>,
    #[prost(bool, optional, tag = "2")]
    pub is_room_master: ::core::option::Option<bool>,
    #[prost(int64, optional, tag = "3")]
    pub enter_time: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "4")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScGameMatchingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub matching_user_info: ::prost::alloc::vec::Vec<MatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGameMatchingAddUserRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, optional, tag = "2")]
    pub matching_user_info: ::core::option::Option<MatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGameMatchingExitUserRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub exit_user: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "3")]
    pub new_room_master: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScGameMatchingCompleteRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub matching_user_info: ::prost::alloc::vec::Vec<MatchingClientInfo>,
    #[prost(string, optional, tag = "4")]
    pub server_ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "5")]
    pub server_tcp_port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "6")]
    pub server_udp_port: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameMatchingExitUserRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameMatchingExitUserResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SsCreateRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub user_list: ::prost::alloc::vec::Vec<MatchingClientInfo>,
    #[prost(int32, optional, tag = "3")]
    pub game_clear_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "4")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "5")]
    pub magic_value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct SsCreateRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub user_list: ::prost::alloc::vec::Vec<MatchingClientInfo>,
    #[prost(string, optional, tag = "5")]
    pub magic_value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameForceStartRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameForceStartResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RelayServerInfo {
    #[prost(string, optional, tag = "1")]
    pub region: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub port: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameRelayServerInfoRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameRelayServerInfoResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub server_info: ::prost::alloc::vec::Vec<RelayServerInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ServerPingInfo {
    #[prost(string, optional, tag = "1")]
    pub region: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "2")]
    pub ping: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameDefenseMatchingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub event_schedule_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "4")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "5")]
    pub region_info: ::prost::alloc::vec::Vec<ServerPingInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameDefenseMatchingResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub matching_user_info: ::prost::alloc::vec::Vec<MatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameMatchingReconnectRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsGameMatchingReconnectResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub matching_user_info: ::prost::alloc::vec::Vec<MatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ActionMatchingClientInfo {
    #[prost(message, optional, tag = "1")]
    pub user_info: ::core::option::Option<UserInfo>,
    #[prost(bool, optional, tag = "2")]
    pub is_room_master: ::core::option::Option<bool>,
    #[prost(int64, optional, tag = "3")]
    pub enter_time: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "4")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "5")]
    pub action_char: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameActionMatchingCreateRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub event_schedule_id: ::core::option::Option<i32>,
    #[prost(message, repeated, tag = "3")]
    pub region_info: ::prost::alloc::vec::Vec<ServerPingInfo>,
    #[prost(int32, optional, tag = "4")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub action_char: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub action_monster: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameActionMatchingCreateRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingExitRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingExitRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScMiniGameActionMatchingExitRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub exit_user: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "3")]
    pub new_room_master: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingJoinRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub action_char: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub action_monster: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameActionMatchingJoinRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
    #[prost(int32, optional, tag = "5")]
    pub action_monster: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScMiniGameActionMatchingJoinRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingAutoMatchRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameActionMatchingAutoMatchResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingCancelAutoMatchRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingCancelAutoMatchResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingChangeSettingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub action_char: ::core::option::Option<i32>,
    #[prost(int32, repeated, packed = "false", tag = "3")]
    pub action_monster: ::prost::alloc::vec::Vec<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingChangeSettingResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScMiniGameActionMatchingChangeSettingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
    #[prost(int32, optional, tag = "3")]
    pub action_monster: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingStartRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingStartRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScMiniGameActionMatchingStartRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScMiniGameActionMatchingCompleteRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
    #[prost(string, optional, tag = "4")]
    pub server_ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "5")]
    pub server_tcp_port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "6")]
    pub server_udp_port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "7")]
    pub action_monster: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsMiniGameActionMatchingReconnectRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsMiniGameActionMatchingReconnectResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub matching_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "3")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "4")]
    pub action_matching_user_info: ::prost::alloc::vec::Vec<ActionMatchingClientInfo>,
    #[prost(int32, optional, tag = "5")]
    pub action_monster: ::core::option::Option<i32>,
}
/// From: pictorialbuffstatdbinfo.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct PictorialBuffStatDbInfo {
    #[prost(int32, optional, tag = "1")]
    pub stat_type: ::core::option::Option<i32>,
    #[prost(double, optional, tag = "2")]
    pub stat_value: ::core::option::Option<f64>,
}
/// From: randomdefense.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsDefenseStateUpdateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub enemy_count: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub wave: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub total_enemy_kill_count: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "7")]
    pub network_ping: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DefenseUserInfo {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "3")]
    pub enemy_count: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "4")]
    pub wave: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub total_enemy_kill_count: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "6")]
    pub network_state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "7")]
    pub network_ping: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScDefensePlayerStateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub user_info: ::prost::alloc::vec::Vec<DefenseUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScDefenseGameEndRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub user_info: ::prost::alloc::vec::Vec<DefenseUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DefenseViewerSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(bool, optional, tag = "2")]
    pub is_viewer: ::core::option::Option<bool>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DefenseMonsterInfo {
    #[prost(int32, optional, tag = "1")]
    pub monster_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub monster_index: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "3")]
    pub spawn_ticks: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "4")]
    pub despwan_ticks: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "5")]
    pub health: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DefenseMonsterBatchSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "2")]
    pub monster_infos: ::prost::alloc::vec::Vec<DefenseMonsterInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DefenseMonsterSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "2")]
    pub monster_info: ::prost::alloc::vec::Vec<DefenseMonsterInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DefenseUnitInfo {
    #[prost(int32, optional, tag = "1")]
    pub unit_id: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "2")]
    pub unit_index: ::core::option::Option<i32>,
    #[prost(int64, optional, tag = "3")]
    pub spawn_ticks: ::core::option::Option<i64>,
    #[prost(int64, optional, tag = "4")]
    pub despwan_ticks: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "5")]
    pub element_level: ::core::option::Option<i32>,
    #[prost(float, optional, tag = "6")]
    pub cool_time: ::core::option::Option<f32>,
    #[prost(int32, optional, tag = "7")]
    pub grid_index: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct DefenseUnitBatchSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "2")]
    pub unit_infos: ::prost::alloc::vec::Vec<DefenseUnitInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, ::prost::Message)]
pub struct DefenseUnitSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(message, optional, tag = "2")]
    pub unit_info: ::core::option::Option<DefenseUnitInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScDefenseGameStartRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub start_time: ::core::option::Option<i64>,
    #[prost(message, repeated, tag = "3")]
    pub user_info: ::prost::alloc::vec::Vec<DefenseUserInfo>,
    #[prost(message, repeated, tag = "4")]
    pub room_user_info: ::prost::alloc::vec::Vec<RoomClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DefenseEmoticonSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "2")]
    pub emoticon_id: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsDefenseReconnectRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsDefenseReconnectResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "4")]
    pub client_state: ::core::option::Option<i32>,
    #[prost(int32, optional, tag = "5")]
    pub room_state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, Copy, PartialEq, Eq, Hash, ::prost::Message)]
pub struct DefenseReconnectSync {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
}
/// From: relay.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScRelayUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayToUserUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub recv_owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "4")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScRelayToUserUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScRelayRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayToUserRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub recv_owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "4")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScRelayToUserRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(bytes = "vec", optional, tag = "3")]
    pub bytes: ::core::option::Option<::prost::alloc::vec::Vec<u8>>,
}
/// From: stun.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCreateSessionRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub nat_type: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCreateSessionResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RoomUserInfo {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "4")]
    pub nat_type: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRoomUserUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsRoomUserUdpResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub user_info: ::prost::alloc::vec::Vec<RoomUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct ScRoomUserUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, repeated, tag = "2")]
    pub user_info: ::prost::alloc::vec::Vec<RoomUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsStunUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsStunUdpResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsNatUpdateUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub nat_type: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsNatUpdateUdpResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, optional, tag = "2")]
    pub user_info: ::core::option::Option<RoomUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScNatUpdateUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(message, optional, tag = "2")]
    pub user_info: ::core::option::Option<RoomUserInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct RoomClientInfo {
    #[prost(int64, optional, tag = "1")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub enter_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCreateRoomRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, repeated, packed = "false", tag = "2")]
    pub owner_index: ::prost::alloc::vec::Vec<i64>,
    #[prost(int32, optional, tag = "3")]
    pub game_clear_type: ::core::option::Option<i32>,
    #[prost(string, optional, tag = "4")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "5")]
    pub magic_value: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, ::prost::Message)]
pub struct CsCreateRoomResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(message, repeated, tag = "3")]
    pub user: ::prost::alloc::vec::Vec<RoomClientInfo>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsSetNetworkStateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsSetNetworkStateResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameReadyRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScStateUpdateRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGameStartRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub start_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameExitRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsGameExitResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int32, optional, tag = "2")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGameExitRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct ScGameReadyRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub owner_index: ::core::option::Option<i64>,
    #[prost(int32, optional, tag = "3")]
    pub state: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCreateSessionUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub room_code: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int32, optional, tag = "3")]
    pub nat_type: ::core::option::Option<i32>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsCreateSessionUdpResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub ip: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "3")]
    pub port: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(string, optional, tag = "4")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayServerPingRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub send_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayServerPingResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub send_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayServerPingUdpRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
    #[prost(int64, optional, tag = "3")]
    pub send_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsRelayServerPingUdpResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(int64, optional, tag = "2")]
    pub send_time: ::core::option::Option<i64>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsudpVerifyRequest {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
    #[prost(string, optional, tag = "2")]
    pub guid: ::core::option::Option<::prost::alloc::string::String>,
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[serde(default)]
#[derive(Clone, PartialEq, Eq, Hash, ::prost::Message)]
pub struct CsudpVerifyResponse {
    #[prost(message, optional, tag = "1")]
    pub header: ::core::option::Option<CommonHeader>,
}
/// From: ecommontype.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ECommonType {
    None = 0,
    GuildJoinRequest = 1,
    GuildAccept = 2,
}
impl ECommonType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::None => "NONE",
            Self::GuildJoinRequest => "GUILD_JOIN_REQUEST",
            Self::GuildAccept => "GUILD_ACCEPT",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "NONE" => Some(Self::None),
            "GUILD_JOIN_REQUEST" => Some(Self::GuildJoinRequest),
            "GUILD_ACCEPT" => Some(Self::GuildAccept),
            _ => None,
        }
    }
}
/// From: eguildmsgtype.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EGuildMsgType {
    GuildMessage = 0,
    GuildEmotion = 1,
    GuildDeck = 2,
    GuildNotify = 3,
}
impl EGuildMsgType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::GuildMessage => "GUILD_MESSAGE",
            Self::GuildEmotion => "GUILD_EMOTION",
            Self::GuildDeck => "GUILD_DECK",
            Self::GuildNotify => "GUILD_NOTIFY",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "GUILD_MESSAGE" => Some(Self::GuildMessage),
            "GUILD_EMOTION" => Some(Self::GuildEmotion),
            "GUILD_DECK" => Some(Self::GuildDeck),
            "GUILD_NOTIFY" => Some(Self::GuildNotify),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EGuildNotifyType {
    GuildNotifyJoin = 0,
    GuildNotifyLeave = 1,
    GuildNotifyBan = 2,
    GuildNotifyRoleChange = 3,
    GuildNotifySupportChanged = 4,
    GuildNotifyUserNameChanged = 5,
    GuildNotifyNoticeInfo = 6,
}
impl EGuildNotifyType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::GuildNotifyJoin => "GUILD_NOTIFY_JOIN",
            Self::GuildNotifyLeave => "GUILD_NOTIFY_LEAVE",
            Self::GuildNotifyBan => "GUILD_NOTIFY_BAN",
            Self::GuildNotifyRoleChange => "GUILD_NOTIFY_ROLE_CHANGE",
            Self::GuildNotifySupportChanged => "GUILD_NOTIFY_SUPPORT_CHANGED",
            Self::GuildNotifyUserNameChanged => "GUILD_NOTIFY_USER_NAME_CHANGED",
            Self::GuildNotifyNoticeInfo => "GUILD_NOTIFY_NOTICE_INFO",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "GUILD_NOTIFY_JOIN" => Some(Self::GuildNotifyJoin),
            "GUILD_NOTIFY_LEAVE" => Some(Self::GuildNotifyLeave),
            "GUILD_NOTIFY_BAN" => Some(Self::GuildNotifyBan),
            "GUILD_NOTIFY_ROLE_CHANGE" => Some(Self::GuildNotifyRoleChange),
            "GUILD_NOTIFY_SUPPORT_CHANGED" => Some(Self::GuildNotifySupportChanged),
            "GUILD_NOTIFY_USER_NAME_CHANGED" => Some(Self::GuildNotifyUserNameChanged),
            "GUILD_NOTIFY_NOTICE_INFO" => Some(Self::GuildNotifyNoticeInfo),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EGuildRoll {
    RollNone = 0,
    RollAdmin = 1,
    RollSubadmin = 2,
    RollMember = 3,
}
impl EGuildRoll {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::RollNone => "ROLL_NONE",
            Self::RollAdmin => "ROLL_ADMIN",
            Self::RollSubadmin => "ROLL_SUBADMIN",
            Self::RollMember => "ROLL_MEMBER",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ROLL_NONE" => Some(Self::RollNone),
            "ROLL_ADMIN" => Some(Self::RollAdmin),
            "ROLL_SUBADMIN" => Some(Self::RollSubadmin),
            "ROLL_MEMBER" => Some(Self::RollMember),
            _ => None,
        }
    }
}
/// From: ematchingtype.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EMatchingType {
    EmtNone = 0,
    EmtAutoMatching = 1,
    EmtCreateRoom = 2,
    EmtJoinRoom = 3,
    EmtSingle = 4,
}
impl EMatchingType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EmtNone => "EMT_NONE",
            Self::EmtAutoMatching => "EMT_AUTO_MATCHING",
            Self::EmtCreateRoom => "EMT_CREATE_ROOM",
            Self::EmtJoinRoom => "EMT_JOIN_ROOM",
            Self::EmtSingle => "EMT_SINGLE",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EMT_NONE" => Some(Self::EmtNone),
            "EMT_AUTO_MATCHING" => Some(Self::EmtAutoMatching),
            "EMT_CREATE_ROOM" => Some(Self::EmtCreateRoom),
            "EMT_JOIN_ROOM" => Some(Self::EmtJoinRoom),
            "EMT_SINGLE" => Some(Self::EmtSingle),
            _ => None,
        }
    }
}
/// From: enetmsg.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EErrorCode {
    ENone = 0,
    EQuery = 1,
    EParam = 2,
    ENotFoundRoom = 3,
    ENotFoundClient = 4,
    ENotFoundMatching = 5,
    EAlreadyMatchingComplete = 6,
    ENotFoundMatchingRoom = 7,
    ECannotCreateRoom = 8,
    ENotRoomMaster = 9,
    ECannotRecoverMatching = 10,
    EMatchingRoomOverUserCount = 11,
    EWrongRoomMatchingType = 12,
    EServerDoesNotExist = 13,
    ETwiceRequestMatching = 14,
    EWrongGameClearType = 15,
}
impl EErrorCode {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::ENone => "E_None",
            Self::EQuery => "E_Query",
            Self::EParam => "E_Param",
            Self::ENotFoundRoom => "E_Not_Found_Room",
            Self::ENotFoundClient => "E_Not_Found_Client",
            Self::ENotFoundMatching => "E_Not_Found_Matching",
            Self::EAlreadyMatchingComplete => "E_Already_Matching_Complete",
            Self::ENotFoundMatchingRoom => "E_Not_Found_Matching_Room",
            Self::ECannotCreateRoom => "E_Cannot_Create_Room",
            Self::ENotRoomMaster => "E_Not_Room_Master",
            Self::ECannotRecoverMatching => "E_Cannot_Recover_Matching",
            Self::EMatchingRoomOverUserCount => "E_Matching_Room_Over_User_Count",
            Self::EWrongRoomMatchingType => "E_Wrong_Room_Matching_Type",
            Self::EServerDoesNotExist => "E_SERVER_DOES_NOT_EXIST",
            Self::ETwiceRequestMatching => "E_Twice_Request_Matching",
            Self::EWrongGameClearType => "E_Wrong_Game_Clear_Type",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "E_None" => Some(Self::ENone),
            "E_Query" => Some(Self::EQuery),
            "E_Param" => Some(Self::EParam),
            "E_Not_Found_Room" => Some(Self::ENotFoundRoom),
            "E_Not_Found_Client" => Some(Self::ENotFoundClient),
            "E_Not_Found_Matching" => Some(Self::ENotFoundMatching),
            "E_Already_Matching_Complete" => Some(Self::EAlreadyMatchingComplete),
            "E_Not_Found_Matching_Room" => Some(Self::ENotFoundMatchingRoom),
            "E_Cannot_Create_Room" => Some(Self::ECannotCreateRoom),
            "E_Not_Room_Master" => Some(Self::ENotRoomMaster),
            "E_Cannot_Recover_Matching" => Some(Self::ECannotRecoverMatching),
            "E_Matching_Room_Over_User_Count" => Some(Self::EMatchingRoomOverUserCount),
            "E_Wrong_Room_Matching_Type" => Some(Self::EWrongRoomMatchingType),
            "E_SERVER_DOES_NOT_EXIST" => Some(Self::EServerDoesNotExist),
            "E_Twice_Request_Matching" => Some(Self::ETwiceRequestMatching),
            "E_Wrong_Game_Clear_Type" => Some(Self::EWrongGameClearType),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum RemovalReason {
    Expired = 0,
    CapacityExceeded = 1,
    DirectRemoval = 2,
    KeyNotFound = 3,
    Exception = 4,
    ZeroBuffer = 5,
}
impl RemovalReason {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::Expired => "EXPIRED",
            Self::CapacityExceeded => "CAPACITY_EXCEEDED",
            Self::DirectRemoval => "DIRECT_REMOVAL",
            Self::KeyNotFound => "KEY_NOT_FOUND",
            Self::Exception => "EXCEPTION",
            Self::ZeroBuffer => "ZERO_BUFFER",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EXPIRED" => Some(Self::Expired),
            "CAPACITY_EXCEEDED" => Some(Self::CapacityExceeded),
            "DIRECT_REMOVAL" => Some(Self::DirectRemoval),
            "KEY_NOT_FOUND" => Some(Self::KeyNotFound),
            "EXCEPTION" => Some(Self::Exception),
            "ZERO_BUFFER" => Some(Self::ZeroBuffer),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ENetMsg {
    None = 0,
    CSPingRequest = 1,
    CSPingResponse = 2,
    CSChatMessageRequest = 3,
    CSChatMessageResponse = 4,
    CSDeviceInfoRequest = 5,
    CSDeviceInfoResponse = 6,
    SCNoticeRequest = 7,
    SCNoticeResponse = 8,
    SCChatBroadcastRequest = 9,
    SCChatBroadcastResponse = 10,
    CSUserInfoUpdateRequest = 11,
    CSUserInfoUpdateResponse = 12,
    CSGuildMessageLoadRequest = 13,
    CSGuildMessageLoadResponse = 14,
    CSGuildMessageRequest = 15,
    CSGuildMessageResponse = 16,
    SCGuildBroadcastRequest = 17,
    SCGuildBroadcastResponse = 18,
    SCDirectMessageRequest = 19,
    SCDirectMessageResponse = 20,
    SCConnectCloseRequest = 21,
    SCConnectCloseResponse = 22,
    CSCreateSessionRequest = 23,
    CSCreateSessionResponse = 24,
    CSRoomUserUdpRequest = 25,
    CSRoomUserUdpResponse = 26,
    CSRelayUdpRequest = 27,
    SCRelayUdpRequest = 28,
    SCRoomUserUdpRequest = 29,
    CSRelayToUserUdpRequest = 30,
    SCRelayToUserUdpRequest = 31,
    CSStunUdpRequest = 32,
    CSStunUdpResponse = 33,
    CSNatUpdateUdpRequest = 34,
    CSNatUpdateUdpResponse = 35,
    SCNatUpdateUdpRequest = 36,
    CSDefenseReconnectRequest = 37,
    CSDefenseReconnectResponse = 38,
    CSCreateRoomRequest = 39,
    CSCreateRoomResponse = 40,
    CSJoinRoomRequest = 41,
    CSJoinRoomResponse = 42,
    CSSetNetworkStateRequest = 43,
    CSSetNetworkStateResponse = 44,
    CSGameReadyRequest = 45,
    SCGameReadyRequest = 46,
    SCDefenseGameStartRequest = 47,
    CSDefenseStateUpdateRequest = 48,
    SCDefensePlayerStateRequest = 49,
    SCStateUpdateRequest = 50,
    SCDefenseGameEndRequest = 51,
    CSGameExitRequest = 52,
    CSGameExitResponse = 53,
    SCGameExitRequest = 54,
    CSCreateSessionUdpRequest = 55,
    CSCreateSessionUdpResponse = 56,
    SSGameMatchingRequest = 57,
    SCGameMatchingRequest = 58,
    SSCreateRoomRequest = 59,
    SSCreateRoomResponse = 60,
    SCGameMatchingAddUserRequest = 61,
    SCGameMatchingExitUserRequest = 62,
    SCGameMatchingCompleteRequest = 63,
    CSGameMatchingExitUserRequest = 64,
    CSGameMatchingExitUserResponse = 65,
    CSRelayServerPingRequest = 66,
    CSRelayServerPingResponse = 67,
    CSRelayServerPingUdpRequest = 68,
    CSRelayServerPingUdpResponse = 69,
    CSRelayRequest = 70,
    SCRelayRequest = 71,
    CSRelayToUserRequest = 72,
    SCRelayToUserRequest = 73,
    CSGameForceStartRequest = 74,
    CSGameForceStartResponse = 75,
    CSMiniGameDefenseMatchingRequest = 76,
    CSMiniGameDefenseMatchingResponse = 77,
    CSMiniGameRelayServerInfoRequest = 78,
    CSMiniGameRelayServerInfoResponse = 79,
    CSGameMatchingReconnectRequest = 80,
    CSGameMatchingReconnectResponse = 81,
    CSMiniGameActionMatchingCreateRoomRequest = 82,
    CSMiniGameActionMatchingCreateRoomResponse = 83,
    CSUdpVerifyRequest = 84,
    CSUdpVerifyResponse = 85,
    CSMiniGameActionMatchingExitRoomRequest = 87,
    CSMiniGameActionMatchingExitRoomResponse = 88,
    SCMiniGameActionMatchingExitRoomRequest = 89,
    CSMiniGameActionMatchingJoinRoomRequest = 90,
    CSMiniGameActionMatchingJoinRoomResponse = 91,
    SCMiniGameActionMatchingJoinRoomRequest = 92,
    CSMiniGameActionMatchingAutoMatchRequest = 93,
    CSMiniGameActionMatchingAutoMatchResponse = 94,
    CSMiniGameActionMatchingCancelAutoMatchRequest = 95,
    CSMiniGameActionMatchingCancelAutoMatchResponse = 96,
    CSMiniGameActionMatchingChangeSettingRequest = 97,
    CSMiniGameActionMatchingChangeSettingResponse = 98,
    SCMiniGameActionMatchingChangeSettingRequest = 99,
    SCMiniGameActionMatchingStartRoomRequest = 100,
    SCMiniGameActionMatchingCompleteRequest = 101,
    CSMiniGameActionMatchingReconnectRequest = 102,
    CSMiniGameActionMatchingReconnectResponse = 103,
    CSMiniGameActionMatchingStartRoomRequest = 104,
    CSMiniGameActionMatchingStartRoomResponse = 105,
    SCActionGameStartRequest = 106,
    SCActionChangeHostRequest = 107,
    SCActionGameEndRequest = 108,
    CSActionReconnectRequest = 109,
    CSActionReconnectResponse = 110,
    CSActionRelayRequest = 111,
    SCActionStateUpdateRequest = 112,
    CSCheatChangeHostRequest = 113,
    CSActionGameExitRequest = 114,
    CSActionGameExitResponse = 115,
    SCActionGameExitRequest = 116,
    CSActionUserApplicationPauseRequest = 117,
    CSActionUserApplicationPauseResponse = 118,
    SCActionUserApplicationPauseRequest = 119,
    CSActionOtherUserHitRequest = 120,
    CSActionOtherUserHitResponse = 121,
    Max = 122,
}
impl ENetMsg {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::None => "None",
            Self::CSPingRequest => "C_S_Ping_Request",
            Self::CSPingResponse => "C_S_Ping_Response",
            Self::CSChatMessageRequest => "C_S_ChatMessage_Request",
            Self::CSChatMessageResponse => "C_S_ChatMessage_Response",
            Self::CSDeviceInfoRequest => "C_S_DeviceInfo_Request",
            Self::CSDeviceInfoResponse => "C_S_DeviceInfo_Response",
            Self::SCNoticeRequest => "S_C_Notice_Request",
            Self::SCNoticeResponse => "S_C_Notice_Response",
            Self::SCChatBroadcastRequest => "S_C_ChatBroadcast_Request",
            Self::SCChatBroadcastResponse => "S_C_ChatBroadcast_Response",
            Self::CSUserInfoUpdateRequest => "C_S_UserInfoUpdate_Request",
            Self::CSUserInfoUpdateResponse => "C_S_UserInfoUpdate_Response",
            Self::CSGuildMessageLoadRequest => "C_S_GuildMessageLoad_Request",
            Self::CSGuildMessageLoadResponse => "C_S_GuildMessageLoad_Response",
            Self::CSGuildMessageRequest => "C_S_GuildMessage_Request",
            Self::CSGuildMessageResponse => "C_S_GuildMessage_Response",
            Self::SCGuildBroadcastRequest => "S_C_GuildBroadcast_Request",
            Self::SCGuildBroadcastResponse => "S_C_GuildBroadcast_Response",
            Self::SCDirectMessageRequest => "S_C_DirectMessage_Request",
            Self::SCDirectMessageResponse => "S_C_DirectMessage_Response",
            Self::SCConnectCloseRequest => "S_C_ConnectClose_Request",
            Self::SCConnectCloseResponse => "S_C_ConnectClose_Response",
            Self::CSCreateSessionRequest => "C_S_Create_Session_Request",
            Self::CSCreateSessionResponse => "C_S_Create_Session_Response",
            Self::CSRoomUserUdpRequest => "C_S_Room_User_UDP_Request",
            Self::CSRoomUserUdpResponse => "C_S_Room_User_UDP_Response",
            Self::CSRelayUdpRequest => "C_S_Relay_UDP_Request",
            Self::SCRelayUdpRequest => "S_C_Relay_UDP_Request",
            Self::SCRoomUserUdpRequest => "S_C_Room_User_UDP_Request",
            Self::CSRelayToUserUdpRequest => "C_S_Relay_To_User_UDP_Request",
            Self::SCRelayToUserUdpRequest => "S_C_Relay_To_User_UDP_Request",
            Self::CSStunUdpRequest => "C_S_Stun_UDP_Request",
            Self::CSStunUdpResponse => "C_S_Stun_UDP_Response",
            Self::CSNatUpdateUdpRequest => "C_S_Nat_Update_UDP_Request",
            Self::CSNatUpdateUdpResponse => "C_S_Nat_Update_UDP_Response",
            Self::SCNatUpdateUdpRequest => "S_C_Nat_Update_UDP_Request",
            Self::CSDefenseReconnectRequest => "C_S_Defense_Reconnect_Request",
            Self::CSDefenseReconnectResponse => "C_S_Defense_Reconnect_Response",
            Self::CSCreateRoomRequest => "C_S_Create_Room_Request",
            Self::CSCreateRoomResponse => "C_S_Create_Room_Response",
            Self::CSJoinRoomRequest => "C_S_Join_Room_Request",
            Self::CSJoinRoomResponse => "C_S_Join_Room_Response",
            Self::CSSetNetworkStateRequest => "C_S_Set_Network_State_Request",
            Self::CSSetNetworkStateResponse => "C_S_Set_Network_State_Response",
            Self::CSGameReadyRequest => "C_S_Game_Ready_Request",
            Self::SCGameReadyRequest => "S_C_Game_Ready_Request",
            Self::SCDefenseGameStartRequest => "S_C_Defense_Game_Start_Request",
            Self::CSDefenseStateUpdateRequest => "C_S_Defense_State_Update_Request",
            Self::SCDefensePlayerStateRequest => "S_C_Defense_Player_State_Request",
            Self::SCStateUpdateRequest => "S_C_State_Update_Request",
            Self::SCDefenseGameEndRequest => "S_C_Defense_Game_End_Request",
            Self::CSGameExitRequest => "C_S_Game_Exit_Request",
            Self::CSGameExitResponse => "C_S_Game_Exit_Response",
            Self::SCGameExitRequest => "S_C_Game_Exit_Request",
            Self::CSCreateSessionUdpRequest => "C_S_Create_Session_UDP_Request",
            Self::CSCreateSessionUdpResponse => "C_S_Create_Session_UDP_Response",
            Self::SSGameMatchingRequest => "S_S_Game_Matching_Request",
            Self::SCGameMatchingRequest => "S_C_Game_Matching_Request",
            Self::SSCreateRoomRequest => "S_S_Create_Room_Request",
            Self::SSCreateRoomResponse => "S_S_Create_Room_Response",
            Self::SCGameMatchingAddUserRequest => "S_C_Game_Matching_Add_User_Request",
            Self::SCGameMatchingExitUserRequest => "S_C_Game_Matching_Exit_User_Request",
            Self::SCGameMatchingCompleteRequest => "S_C_Game_Matching_Complete_Request",
            Self::CSGameMatchingExitUserRequest => "C_S_Game_Matching_Exit_User_Request",
            Self::CSGameMatchingExitUserResponse => {
                "C_S_Game_Matching_Exit_User_Response"
            }
            Self::CSRelayServerPingRequest => "C_S_Relay_Server_Ping_Request",
            Self::CSRelayServerPingResponse => "C_S_Relay_Server_Ping_Response",
            Self::CSRelayServerPingUdpRequest => "C_S_Relay_Server_Ping_UDP_Request",
            Self::CSRelayServerPingUdpResponse => "C_S_Relay_Server_Ping_UDP_Response",
            Self::CSRelayRequest => "C_S_Relay_Request",
            Self::SCRelayRequest => "S_C_Relay_Request",
            Self::CSRelayToUserRequest => "C_S_Relay_To_User_Request",
            Self::SCRelayToUserRequest => "S_C_Relay_To_User_Request",
            Self::CSGameForceStartRequest => "C_S_Game_Force_Start_Request",
            Self::CSGameForceStartResponse => "C_S_Game_Force_Start_Response",
            Self::CSMiniGameDefenseMatchingRequest => {
                "C_S_MiniGameDefenseMatching_Request"
            }
            Self::CSMiniGameDefenseMatchingResponse => {
                "C_S_MiniGameDefenseMatching_Response"
            }
            Self::CSMiniGameRelayServerInfoRequest => {
                "C_S_MiniGameRelayServerInfo_Request"
            }
            Self::CSMiniGameRelayServerInfoResponse => {
                "C_S_MiniGameRelayServerInfo_Response"
            }
            Self::CSGameMatchingReconnectRequest => "C_S_Game_Matching_Reconnect_Request",
            Self::CSGameMatchingReconnectResponse => {
                "C_S_Game_Matching_Reconnect_Response"
            }
            Self::CSMiniGameActionMatchingCreateRoomRequest => {
                "C_S_Mini_Game_Action_Matching_Create_Room_Request"
            }
            Self::CSMiniGameActionMatchingCreateRoomResponse => {
                "C_S_Mini_Game_Action_Matching_Create_Room_Response"
            }
            Self::CSUdpVerifyRequest => "C_S_UDP_Verify_Request",
            Self::CSUdpVerifyResponse => "C_S_UDP_Verify_Response",
            Self::CSMiniGameActionMatchingExitRoomRequest => {
                "C_S_Mini_Game_Action_Matching_Exit_Room_Request"
            }
            Self::CSMiniGameActionMatchingExitRoomResponse => {
                "C_S_Mini_Game_Action_Matching_Exit_Room_Response"
            }
            Self::SCMiniGameActionMatchingExitRoomRequest => {
                "S_C_Mini_Game_Action_Matching_Exit_Room_Request"
            }
            Self::CSMiniGameActionMatchingJoinRoomRequest => {
                "C_S_Mini_Game_Action_Matching_Join_Room_Request"
            }
            Self::CSMiniGameActionMatchingJoinRoomResponse => {
                "C_S_Mini_Game_Action_Matching_Join_Room_Response"
            }
            Self::SCMiniGameActionMatchingJoinRoomRequest => {
                "S_C_Mini_Game_Action_Matching_Join_Room_Request"
            }
            Self::CSMiniGameActionMatchingAutoMatchRequest => {
                "C_S_Mini_Game_Action_Matching_Auto_Match_Request"
            }
            Self::CSMiniGameActionMatchingAutoMatchResponse => {
                "C_S_Mini_Game_Action_Matching_Auto_Match_Response"
            }
            Self::CSMiniGameActionMatchingCancelAutoMatchRequest => {
                "C_S_Mini_Game_Action_Matching_Cancel_Auto_Match_Request"
            }
            Self::CSMiniGameActionMatchingCancelAutoMatchResponse => {
                "C_S_Mini_Game_Action_Matching_Cancel_Auto_Match_Response"
            }
            Self::CSMiniGameActionMatchingChangeSettingRequest => {
                "C_S_Mini_Game_Action_Matching_Change_Setting_Request"
            }
            Self::CSMiniGameActionMatchingChangeSettingResponse => {
                "C_S_Mini_Game_Action_Matching_Change_Setting_Response"
            }
            Self::SCMiniGameActionMatchingChangeSettingRequest => {
                "S_C_Mini_Game_Action_Matching_Change_Setting_Request"
            }
            Self::SCMiniGameActionMatchingStartRoomRequest => {
                "S_C_Mini_Game_Action_Matching_Start_Room_Request"
            }
            Self::SCMiniGameActionMatchingCompleteRequest => {
                "S_C_Mini_Game_Action_Matching_Complete_Request"
            }
            Self::CSMiniGameActionMatchingReconnectRequest => {
                "C_S_Mini_Game_Action_Matching_Reconnect_Request"
            }
            Self::CSMiniGameActionMatchingReconnectResponse => {
                "C_S_Mini_Game_Action_Matching_Reconnect_Response"
            }
            Self::CSMiniGameActionMatchingStartRoomRequest => {
                "C_S_Mini_Game_Action_Matching_Start_Room_Request"
            }
            Self::CSMiniGameActionMatchingStartRoomResponse => {
                "C_S_Mini_Game_Action_Matching_Start_Room_Response"
            }
            Self::SCActionGameStartRequest => "S_C_Action_Game_Start_Request",
            Self::SCActionChangeHostRequest => "S_C_Action_Change_Host_Request",
            Self::SCActionGameEndRequest => "S_C_Action_Game_End_Request",
            Self::CSActionReconnectRequest => "C_S_Action_Reconnect_Request",
            Self::CSActionReconnectResponse => "C_S_Action_Reconnect_Response",
            Self::CSActionRelayRequest => "C_S_Action_Relay_Request",
            Self::SCActionStateUpdateRequest => "S_C_Action_State_Update_Request",
            Self::CSCheatChangeHostRequest => "C_S_Cheat_Change_Host_Request",
            Self::CSActionGameExitRequest => "C_S_Action_Game_Exit_Request",
            Self::CSActionGameExitResponse => "C_S_Action_Game_Exit_Response",
            Self::SCActionGameExitRequest => "S_C_Action_Game_Exit_Request",
            Self::CSActionUserApplicationPauseRequest => {
                "C_S_Action_User_Application_Pause_Request"
            }
            Self::CSActionUserApplicationPauseResponse => {
                "C_S_Action_User_Application_Pause_Response"
            }
            Self::SCActionUserApplicationPauseRequest => {
                "S_C_Action_User_Application_Pause_Request"
            }
            Self::CSActionOtherUserHitRequest => "C_S_Action_Other_User_Hit_Request",
            Self::CSActionOtherUserHitResponse => "C_S_Action_Other_User_Hit_Response",
            Self::Max => "Max",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "None" => Some(Self::None),
            "C_S_Ping_Request" => Some(Self::CSPingRequest),
            "C_S_Ping_Response" => Some(Self::CSPingResponse),
            "C_S_ChatMessage_Request" => Some(Self::CSChatMessageRequest),
            "C_S_ChatMessage_Response" => Some(Self::CSChatMessageResponse),
            "C_S_DeviceInfo_Request" => Some(Self::CSDeviceInfoRequest),
            "C_S_DeviceInfo_Response" => Some(Self::CSDeviceInfoResponse),
            "S_C_Notice_Request" => Some(Self::SCNoticeRequest),
            "S_C_Notice_Response" => Some(Self::SCNoticeResponse),
            "S_C_ChatBroadcast_Request" => Some(Self::SCChatBroadcastRequest),
            "S_C_ChatBroadcast_Response" => Some(Self::SCChatBroadcastResponse),
            "C_S_UserInfoUpdate_Request" => Some(Self::CSUserInfoUpdateRequest),
            "C_S_UserInfoUpdate_Response" => Some(Self::CSUserInfoUpdateResponse),
            "C_S_GuildMessageLoad_Request" => Some(Self::CSGuildMessageLoadRequest),
            "C_S_GuildMessageLoad_Response" => Some(Self::CSGuildMessageLoadResponse),
            "C_S_GuildMessage_Request" => Some(Self::CSGuildMessageRequest),
            "C_S_GuildMessage_Response" => Some(Self::CSGuildMessageResponse),
            "S_C_GuildBroadcast_Request" => Some(Self::SCGuildBroadcastRequest),
            "S_C_GuildBroadcast_Response" => Some(Self::SCGuildBroadcastResponse),
            "S_C_DirectMessage_Request" => Some(Self::SCDirectMessageRequest),
            "S_C_DirectMessage_Response" => Some(Self::SCDirectMessageResponse),
            "S_C_ConnectClose_Request" => Some(Self::SCConnectCloseRequest),
            "S_C_ConnectClose_Response" => Some(Self::SCConnectCloseResponse),
            "C_S_Create_Session_Request" => Some(Self::CSCreateSessionRequest),
            "C_S_Create_Session_Response" => Some(Self::CSCreateSessionResponse),
            "C_S_Room_User_UDP_Request" => Some(Self::CSRoomUserUdpRequest),
            "C_S_Room_User_UDP_Response" => Some(Self::CSRoomUserUdpResponse),
            "C_S_Relay_UDP_Request" => Some(Self::CSRelayUdpRequest),
            "S_C_Relay_UDP_Request" => Some(Self::SCRelayUdpRequest),
            "S_C_Room_User_UDP_Request" => Some(Self::SCRoomUserUdpRequest),
            "C_S_Relay_To_User_UDP_Request" => Some(Self::CSRelayToUserUdpRequest),
            "S_C_Relay_To_User_UDP_Request" => Some(Self::SCRelayToUserUdpRequest),
            "C_S_Stun_UDP_Request" => Some(Self::CSStunUdpRequest),
            "C_S_Stun_UDP_Response" => Some(Self::CSStunUdpResponse),
            "C_S_Nat_Update_UDP_Request" => Some(Self::CSNatUpdateUdpRequest),
            "C_S_Nat_Update_UDP_Response" => Some(Self::CSNatUpdateUdpResponse),
            "S_C_Nat_Update_UDP_Request" => Some(Self::SCNatUpdateUdpRequest),
            "C_S_Defense_Reconnect_Request" => Some(Self::CSDefenseReconnectRequest),
            "C_S_Defense_Reconnect_Response" => Some(Self::CSDefenseReconnectResponse),
            "C_S_Create_Room_Request" => Some(Self::CSCreateRoomRequest),
            "C_S_Create_Room_Response" => Some(Self::CSCreateRoomResponse),
            "C_S_Join_Room_Request" => Some(Self::CSJoinRoomRequest),
            "C_S_Join_Room_Response" => Some(Self::CSJoinRoomResponse),
            "C_S_Set_Network_State_Request" => Some(Self::CSSetNetworkStateRequest),
            "C_S_Set_Network_State_Response" => Some(Self::CSSetNetworkStateResponse),
            "C_S_Game_Ready_Request" => Some(Self::CSGameReadyRequest),
            "S_C_Game_Ready_Request" => Some(Self::SCGameReadyRequest),
            "S_C_Defense_Game_Start_Request" => Some(Self::SCDefenseGameStartRequest),
            "C_S_Defense_State_Update_Request" => Some(Self::CSDefenseStateUpdateRequest),
            "S_C_Defense_Player_State_Request" => Some(Self::SCDefensePlayerStateRequest),
            "S_C_State_Update_Request" => Some(Self::SCStateUpdateRequest),
            "S_C_Defense_Game_End_Request" => Some(Self::SCDefenseGameEndRequest),
            "C_S_Game_Exit_Request" => Some(Self::CSGameExitRequest),
            "C_S_Game_Exit_Response" => Some(Self::CSGameExitResponse),
            "S_C_Game_Exit_Request" => Some(Self::SCGameExitRequest),
            "C_S_Create_Session_UDP_Request" => Some(Self::CSCreateSessionUdpRequest),
            "C_S_Create_Session_UDP_Response" => Some(Self::CSCreateSessionUdpResponse),
            "S_S_Game_Matching_Request" => Some(Self::SSGameMatchingRequest),
            "S_C_Game_Matching_Request" => Some(Self::SCGameMatchingRequest),
            "S_S_Create_Room_Request" => Some(Self::SSCreateRoomRequest),
            "S_S_Create_Room_Response" => Some(Self::SSCreateRoomResponse),
            "S_C_Game_Matching_Add_User_Request" => {
                Some(Self::SCGameMatchingAddUserRequest)
            }
            "S_C_Game_Matching_Exit_User_Request" => {
                Some(Self::SCGameMatchingExitUserRequest)
            }
            "S_C_Game_Matching_Complete_Request" => {
                Some(Self::SCGameMatchingCompleteRequest)
            }
            "C_S_Game_Matching_Exit_User_Request" => {
                Some(Self::CSGameMatchingExitUserRequest)
            }
            "C_S_Game_Matching_Exit_User_Response" => {
                Some(Self::CSGameMatchingExitUserResponse)
            }
            "C_S_Relay_Server_Ping_Request" => Some(Self::CSRelayServerPingRequest),
            "C_S_Relay_Server_Ping_Response" => Some(Self::CSRelayServerPingResponse),
            "C_S_Relay_Server_Ping_UDP_Request" => {
                Some(Self::CSRelayServerPingUdpRequest)
            }
            "C_S_Relay_Server_Ping_UDP_Response" => {
                Some(Self::CSRelayServerPingUdpResponse)
            }
            "C_S_Relay_Request" => Some(Self::CSRelayRequest),
            "S_C_Relay_Request" => Some(Self::SCRelayRequest),
            "C_S_Relay_To_User_Request" => Some(Self::CSRelayToUserRequest),
            "S_C_Relay_To_User_Request" => Some(Self::SCRelayToUserRequest),
            "C_S_Game_Force_Start_Request" => Some(Self::CSGameForceStartRequest),
            "C_S_Game_Force_Start_Response" => Some(Self::CSGameForceStartResponse),
            "C_S_MiniGameDefenseMatching_Request" => {
                Some(Self::CSMiniGameDefenseMatchingRequest)
            }
            "C_S_MiniGameDefenseMatching_Response" => {
                Some(Self::CSMiniGameDefenseMatchingResponse)
            }
            "C_S_MiniGameRelayServerInfo_Request" => {
                Some(Self::CSMiniGameRelayServerInfoRequest)
            }
            "C_S_MiniGameRelayServerInfo_Response" => {
                Some(Self::CSMiniGameRelayServerInfoResponse)
            }
            "C_S_Game_Matching_Reconnect_Request" => {
                Some(Self::CSGameMatchingReconnectRequest)
            }
            "C_S_Game_Matching_Reconnect_Response" => {
                Some(Self::CSGameMatchingReconnectResponse)
            }
            "C_S_Mini_Game_Action_Matching_Create_Room_Request" => {
                Some(Self::CSMiniGameActionMatchingCreateRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Create_Room_Response" => {
                Some(Self::CSMiniGameActionMatchingCreateRoomResponse)
            }
            "C_S_UDP_Verify_Request" => Some(Self::CSUdpVerifyRequest),
            "C_S_UDP_Verify_Response" => Some(Self::CSUdpVerifyResponse),
            "C_S_Mini_Game_Action_Matching_Exit_Room_Request" => {
                Some(Self::CSMiniGameActionMatchingExitRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Exit_Room_Response" => {
                Some(Self::CSMiniGameActionMatchingExitRoomResponse)
            }
            "S_C_Mini_Game_Action_Matching_Exit_Room_Request" => {
                Some(Self::SCMiniGameActionMatchingExitRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Join_Room_Request" => {
                Some(Self::CSMiniGameActionMatchingJoinRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Join_Room_Response" => {
                Some(Self::CSMiniGameActionMatchingJoinRoomResponse)
            }
            "S_C_Mini_Game_Action_Matching_Join_Room_Request" => {
                Some(Self::SCMiniGameActionMatchingJoinRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Auto_Match_Request" => {
                Some(Self::CSMiniGameActionMatchingAutoMatchRequest)
            }
            "C_S_Mini_Game_Action_Matching_Auto_Match_Response" => {
                Some(Self::CSMiniGameActionMatchingAutoMatchResponse)
            }
            "C_S_Mini_Game_Action_Matching_Cancel_Auto_Match_Request" => {
                Some(Self::CSMiniGameActionMatchingCancelAutoMatchRequest)
            }
            "C_S_Mini_Game_Action_Matching_Cancel_Auto_Match_Response" => {
                Some(Self::CSMiniGameActionMatchingCancelAutoMatchResponse)
            }
            "C_S_Mini_Game_Action_Matching_Change_Setting_Request" => {
                Some(Self::CSMiniGameActionMatchingChangeSettingRequest)
            }
            "C_S_Mini_Game_Action_Matching_Change_Setting_Response" => {
                Some(Self::CSMiniGameActionMatchingChangeSettingResponse)
            }
            "S_C_Mini_Game_Action_Matching_Change_Setting_Request" => {
                Some(Self::SCMiniGameActionMatchingChangeSettingRequest)
            }
            "S_C_Mini_Game_Action_Matching_Start_Room_Request" => {
                Some(Self::SCMiniGameActionMatchingStartRoomRequest)
            }
            "S_C_Mini_Game_Action_Matching_Complete_Request" => {
                Some(Self::SCMiniGameActionMatchingCompleteRequest)
            }
            "C_S_Mini_Game_Action_Matching_Reconnect_Request" => {
                Some(Self::CSMiniGameActionMatchingReconnectRequest)
            }
            "C_S_Mini_Game_Action_Matching_Reconnect_Response" => {
                Some(Self::CSMiniGameActionMatchingReconnectResponse)
            }
            "C_S_Mini_Game_Action_Matching_Start_Room_Request" => {
                Some(Self::CSMiniGameActionMatchingStartRoomRequest)
            }
            "C_S_Mini_Game_Action_Matching_Start_Room_Response" => {
                Some(Self::CSMiniGameActionMatchingStartRoomResponse)
            }
            "S_C_Action_Game_Start_Request" => Some(Self::SCActionGameStartRequest),
            "S_C_Action_Change_Host_Request" => Some(Self::SCActionChangeHostRequest),
            "S_C_Action_Game_End_Request" => Some(Self::SCActionGameEndRequest),
            "C_S_Action_Reconnect_Request" => Some(Self::CSActionReconnectRequest),
            "C_S_Action_Reconnect_Response" => Some(Self::CSActionReconnectResponse),
            "C_S_Action_Relay_Request" => Some(Self::CSActionRelayRequest),
            "S_C_Action_State_Update_Request" => Some(Self::SCActionStateUpdateRequest),
            "C_S_Cheat_Change_Host_Request" => Some(Self::CSCheatChangeHostRequest),
            "C_S_Action_Game_Exit_Request" => Some(Self::CSActionGameExitRequest),
            "C_S_Action_Game_Exit_Response" => Some(Self::CSActionGameExitResponse),
            "S_C_Action_Game_Exit_Request" => Some(Self::SCActionGameExitRequest),
            "C_S_Action_User_Application_Pause_Request" => {
                Some(Self::CSActionUserApplicationPauseRequest)
            }
            "C_S_Action_User_Application_Pause_Response" => {
                Some(Self::CSActionUserApplicationPauseResponse)
            }
            "S_C_Action_User_Application_Pause_Request" => {
                Some(Self::SCActionUserApplicationPauseRequest)
            }
            "C_S_Action_Other_User_Hit_Request" => {
                Some(Self::CSActionOtherUserHitRequest)
            }
            "C_S_Action_Other_User_Hit_Response" => {
                Some(Self::CSActionOtherUserHitResponse)
            }
            "Max" => Some(Self::Max),
            _ => None,
        }
    }
}
/// From: erealtimetype.proto
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EGameClearType {
    EgctNone = 0,
    EgctRandomDefense = 7,
    EgctAction = 8,
}
impl EGameClearType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EgctNone => "EGCT_NONE",
            Self::EgctRandomDefense => "EGCT_RANDOM_DEFENSE",
            Self::EgctAction => "EGCT_ACTION",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EGCT_NONE" => Some(Self::EgctNone),
            "EGCT_RANDOM_DEFENSE" => Some(Self::EgctRandomDefense),
            "EGCT_ACTION" => Some(Self::EgctAction),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ERoomState {
    ErsNone = 0,
    ErsReady = 1,
    ErsPlaying = 2,
    ErsEnd = 3,
}
impl ERoomState {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::ErsNone => "ERS_NONE",
            Self::ErsReady => "ERS_READY",
            Self::ErsPlaying => "ERS_PLAYING",
            Self::ErsEnd => "ERS_END",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ERS_NONE" => Some(Self::ErsNone),
            "ERS_READY" => Some(Self::ErsReady),
            "ERS_PLAYING" => Some(Self::ErsPlaying),
            "ERS_END" => Some(Self::ErsEnd),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EClientState {
    EcsNone = 0,
    EcsReady = 1,
    EcsPlaying = 2,
    EcsDie = 3,
    EcsExit = 4,
    EcsWin = 5,
}
impl EClientState {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EcsNone => "ECS_NONE",
            Self::EcsReady => "ECS_READY",
            Self::EcsPlaying => "ECS_PLAYING",
            Self::EcsDie => "ECS_DIE",
            Self::EcsExit => "ECS_EXIT",
            Self::EcsWin => "ECS_WIN",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ECS_NONE" => Some(Self::EcsNone),
            "ECS_READY" => Some(Self::EcsReady),
            "ECS_PLAYING" => Some(Self::EcsPlaying),
            "ECS_DIE" => Some(Self::EcsDie),
            "ECS_EXIT" => Some(Self::EcsExit),
            "ECS_WIN" => Some(Self::EcsWin),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EMessageSendType {
    EstDefault = 0,
    EstTcp = 1,
    EstUdp = 2,
}
impl EMessageSendType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EstDefault => "EST_DEFAULT",
            Self::EstTcp => "EST_TCP",
            Self::EstUdp => "EST_UDP",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EST_DEFAULT" => Some(Self::EstDefault),
            "EST_TCP" => Some(Self::EstTcp),
            "EST_UDP" => Some(Self::EstUdp),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EStunType {
    EstNone = 0,
    EstFullCode = 1,
    EstRestrictedCone = 2,
    EstPortRestrictedCone = 3,
    EstSymmetric = 4,
}
impl EStunType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EstNone => "EST_NONE",
            Self::EstFullCode => "EST_FULL_CODE",
            Self::EstRestrictedCone => "EST_RESTRICTED_CONE",
            Self::EstPortRestrictedCone => "EST_PORT_RESTRICTED_CONE",
            Self::EstSymmetric => "EST_SYMMETRIC",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EST_NONE" => Some(Self::EstNone),
            "EST_FULL_CODE" => Some(Self::EstFullCode),
            "EST_RESTRICTED_CONE" => Some(Self::EstRestrictedCone),
            "EST_PORT_RESTRICTED_CONE" => Some(Self::EstPortRestrictedCone),
            "EST_SYMMETRIC" => Some(Self::EstSymmetric),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum ENetworkState {
    EnsNone = 0,
    EnsConnect = 1,
    EnsDisconnect = 2,
}
impl ENetworkState {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EnsNone => "ENS_NONE",
            Self::EnsConnect => "ENS_CONNECT",
            Self::EnsDisconnect => "ENS_DISCONNECT",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "ENS_NONE" => Some(Self::EnsNone),
            "ENS_CONNECT" => Some(Self::EnsConnect),
            "ENS_DISCONNECT" => Some(Self::EnsDisconnect),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EActionRelaySaveType {
    EarstNone = 0,
    EarstPlayer = 1,
    EarstMonster = 2,
}
impl EActionRelaySaveType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EarstNone => "EARST_NONE",
            Self::EarstPlayer => "EARST_PLAYER",
            Self::EarstMonster => "EARST_MONSTER",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EARST_NONE" => Some(Self::EarstNone),
            "EARST_PLAYER" => Some(Self::EarstPlayer),
            "EARST_MONSTER" => Some(Self::EarstMonster),
            _ => None,
        }
    }
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "PascalCase")]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)]
#[repr(i32)]
pub enum EActionCalcStateType {
    EacstNone = 0,
    EacstCanNotCalc = 1,
}
impl EActionCalcStateType {
    /// String value of the enum field names used in the ProtoBuf definition.
    ///
    /// The values are not transformed in any way and thus are considered stable
    /// (if the ProtoBuf definition does not change) and safe for programmatic use.
    pub fn as_str_name(&self) -> &'static str {
        match self {
            Self::EacstNone => "EACST_NONE",
            Self::EacstCanNotCalc => "EACST_CAN_NOT_CALC",
        }
    }
    /// Creates an enum from field names used in the ProtoBuf definition.
    pub fn from_str_name(value: &str) -> ::core::option::Option<Self> {
        match value {
            "EACST_NONE" => Some(Self::EacstNone),
            "EACST_CAN_NOT_CALC" => Some(Self::EacstCanNotCalc),
            _ => None,
        }
    }
}
