// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: demo.proto

#ifndef GOOGLE_PROTOBUF_INCLUDED_demo_2eproto
#define GOOGLE_PROTOBUF_INCLUDED_demo_2eproto

#include <limits>
#include <string>

#include <google/protobuf/port_def.inc>
#if PROTOBUF_VERSION < 3021000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 3021008 < PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenerate this file with a newer version of protoc.
#endif

#include <google/protobuf/port_undef.inc>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/arena.h>
#include <google/protobuf/arenastring.h>
#include <google/protobuf/generated_message_bases.h>
#include <google/protobuf/generated_message_util.h>
#include <google/protobuf/metadata_lite.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/message.h>
#include <google/protobuf/repeated_field.h>  // IWYU pragma: export
#include <google/protobuf/extension_set.h>  // IWYU pragma: export
#include <google/protobuf/generated_enum_reflection.h>
#include <google/protobuf/unknown_field_set.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
#define PROTOBUF_INTERNAL_EXPORT_demo_2eproto
PROTOBUF_NAMESPACE_OPEN
namespace internal {
class AnyMetadata;
}  // namespace internal
PROTOBUF_NAMESPACE_CLOSE

// Internal implementation detail -- do not use these members.
struct TableStruct_demo_2eproto {
  static const uint32_t offsets[];
};
extern const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_demo_2eproto;
class CDemoAnimationData;
struct CDemoAnimationDataDefaultTypeInternal;
extern CDemoAnimationDataDefaultTypeInternal _CDemoAnimationData_default_instance_;
class CDemoAnimationHeader;
struct CDemoAnimationHeaderDefaultTypeInternal;
extern CDemoAnimationHeaderDefaultTypeInternal _CDemoAnimationHeader_default_instance_;
class CDemoClassInfo;
struct CDemoClassInfoDefaultTypeInternal;
extern CDemoClassInfoDefaultTypeInternal _CDemoClassInfo_default_instance_;
class CDemoClassInfo_class_t;
struct CDemoClassInfo_class_tDefaultTypeInternal;
extern CDemoClassInfo_class_tDefaultTypeInternal _CDemoClassInfo_class_t_default_instance_;
class CDemoConsoleCmd;
struct CDemoConsoleCmdDefaultTypeInternal;
extern CDemoConsoleCmdDefaultTypeInternal _CDemoConsoleCmd_default_instance_;
class CDemoCustomData;
struct CDemoCustomDataDefaultTypeInternal;
extern CDemoCustomDataDefaultTypeInternal _CDemoCustomData_default_instance_;
class CDemoCustomDataCallbacks;
struct CDemoCustomDataCallbacksDefaultTypeInternal;
extern CDemoCustomDataCallbacksDefaultTypeInternal _CDemoCustomDataCallbacks_default_instance_;
class CDemoFileHeader;
struct CDemoFileHeaderDefaultTypeInternal;
extern CDemoFileHeaderDefaultTypeInternal _CDemoFileHeader_default_instance_;
class CDemoFileInfo;
struct CDemoFileInfoDefaultTypeInternal;
extern CDemoFileInfoDefaultTypeInternal _CDemoFileInfo_default_instance_;
class CDemoFullPacket;
struct CDemoFullPacketDefaultTypeInternal;
extern CDemoFullPacketDefaultTypeInternal _CDemoFullPacket_default_instance_;
class CDemoPacket;
struct CDemoPacketDefaultTypeInternal;
extern CDemoPacketDefaultTypeInternal _CDemoPacket_default_instance_;
class CDemoRecovery;
struct CDemoRecoveryDefaultTypeInternal;
extern CDemoRecoveryDefaultTypeInternal _CDemoRecovery_default_instance_;
class CDemoRecovery_DemoInitialSpawnGroupEntry;
struct CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal;
extern CDemoRecovery_DemoInitialSpawnGroupEntryDefaultTypeInternal _CDemoRecovery_DemoInitialSpawnGroupEntry_default_instance_;
class CDemoSaveGame;
struct CDemoSaveGameDefaultTypeInternal;
extern CDemoSaveGameDefaultTypeInternal _CDemoSaveGame_default_instance_;
class CDemoSendTables;
struct CDemoSendTablesDefaultTypeInternal;
extern CDemoSendTablesDefaultTypeInternal _CDemoSendTables_default_instance_;
class CDemoSpawnGroups;
struct CDemoSpawnGroupsDefaultTypeInternal;
extern CDemoSpawnGroupsDefaultTypeInternal _CDemoSpawnGroups_default_instance_;
class CDemoSpawnGroupsHLTVBroadcast;
struct CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal;
extern CDemoSpawnGroupsHLTVBroadcastDefaultTypeInternal _CDemoSpawnGroupsHLTVBroadcast_default_instance_;
class CDemoStop;
struct CDemoStopDefaultTypeInternal;
extern CDemoStopDefaultTypeInternal _CDemoStop_default_instance_;
class CDemoStringTables;
struct CDemoStringTablesDefaultTypeInternal;
extern CDemoStringTablesDefaultTypeInternal _CDemoStringTables_default_instance_;
class CDemoStringTables_items_t;
struct CDemoStringTables_items_tDefaultTypeInternal;
extern CDemoStringTables_items_tDefaultTypeInternal _CDemoStringTables_items_t_default_instance_;
class CDemoStringTables_table_t;
struct CDemoStringTables_table_tDefaultTypeInternal;
extern CDemoStringTables_table_tDefaultTypeInternal _CDemoStringTables_table_t_default_instance_;
class CDemoSyncTick;
struct CDemoSyncTickDefaultTypeInternal;
extern CDemoSyncTickDefaultTypeInternal _CDemoSyncTick_default_instance_;
class CDemoUserCmd;
struct CDemoUserCmdDefaultTypeInternal;
extern CDemoUserCmdDefaultTypeInternal _CDemoUserCmd_default_instance_;
class CGameInfo;
struct CGameInfoDefaultTypeInternal;
extern CGameInfoDefaultTypeInternal _CGameInfo_default_instance_;
class CGameInfo_CCSGameInfo;
struct CGameInfo_CCSGameInfoDefaultTypeInternal;
extern CGameInfo_CCSGameInfoDefaultTypeInternal _CGameInfo_CCSGameInfo_default_instance_;
class CGameInfo_CDotaGameInfo;
struct CGameInfo_CDotaGameInfoDefaultTypeInternal;
extern CGameInfo_CDotaGameInfoDefaultTypeInternal _CGameInfo_CDotaGameInfo_default_instance_;
class CGameInfo_CDotaGameInfo_CHeroSelectEvent;
struct CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal;
extern CGameInfo_CDotaGameInfo_CHeroSelectEventDefaultTypeInternal _CGameInfo_CDotaGameInfo_CHeroSelectEvent_default_instance_;
class CGameInfo_CDotaGameInfo_CPlayerInfo;
struct CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal;
extern CGameInfo_CDotaGameInfo_CPlayerInfoDefaultTypeInternal _CGameInfo_CDotaGameInfo_CPlayerInfo_default_instance_;
PROTOBUF_NAMESPACE_OPEN
template<> ::CDemoAnimationData* Arena::CreateMaybeMessage<::CDemoAnimationData>(Arena*);
template<> ::CDemoAnimationHeader* Arena::CreateMaybeMessage<::CDemoAnimationHeader>(Arena*);
template<> ::CDemoClassInfo* Arena::CreateMaybeMessage<::CDemoClassInfo>(Arena*);
template<> ::CDemoClassInfo_class_t* Arena::CreateMaybeMessage<::CDemoClassInfo_class_t>(Arena*);
template<> ::CDemoConsoleCmd* Arena::CreateMaybeMessage<::CDemoConsoleCmd>(Arena*);
template<> ::CDemoCustomData* Arena::CreateMaybeMessage<::CDemoCustomData>(Arena*);
template<> ::CDemoCustomDataCallbacks* Arena::CreateMaybeMessage<::CDemoCustomDataCallbacks>(Arena*);
template<> ::CDemoFileHeader* Arena::CreateMaybeMessage<::CDemoFileHeader>(Arena*);
template<> ::CDemoFileInfo* Arena::CreateMaybeMessage<::CDemoFileInfo>(Arena*);
template<> ::CDemoFullPacket* Arena::CreateMaybeMessage<::CDemoFullPacket>(Arena*);
template<> ::CDemoPacket* Arena::CreateMaybeMessage<::CDemoPacket>(Arena*);
template<> ::CDemoRecovery* Arena::CreateMaybeMessage<::CDemoRecovery>(Arena*);
template<> ::CDemoRecovery_DemoInitialSpawnGroupEntry* Arena::CreateMaybeMessage<::CDemoRecovery_DemoInitialSpawnGroupEntry>(Arena*);
template<> ::CDemoSaveGame* Arena::CreateMaybeMessage<::CDemoSaveGame>(Arena*);
template<> ::CDemoSendTables* Arena::CreateMaybeMessage<::CDemoSendTables>(Arena*);
template<> ::CDemoSpawnGroups* Arena::CreateMaybeMessage<::CDemoSpawnGroups>(Arena*);
template<> ::CDemoSpawnGroupsHLTVBroadcast* Arena::CreateMaybeMessage<::CDemoSpawnGroupsHLTVBroadcast>(Arena*);
template<> ::CDemoStop* Arena::CreateMaybeMessage<::CDemoStop>(Arena*);
template<> ::CDemoStringTables* Arena::CreateMaybeMessage<::CDemoStringTables>(Arena*);
template<> ::CDemoStringTables_items_t* Arena::CreateMaybeMessage<::CDemoStringTables_items_t>(Arena*);
template<> ::CDemoStringTables_table_t* Arena::CreateMaybeMessage<::CDemoStringTables_table_t>(Arena*);
template<> ::CDemoSyncTick* Arena::CreateMaybeMessage<::CDemoSyncTick>(Arena*);
template<> ::CDemoUserCmd* Arena::CreateMaybeMessage<::CDemoUserCmd>(Arena*);
template<> ::CGameInfo* Arena::CreateMaybeMessage<::CGameInfo>(Arena*);
template<> ::CGameInfo_CCSGameInfo* Arena::CreateMaybeMessage<::CGameInfo_CCSGameInfo>(Arena*);
template<> ::CGameInfo_CDotaGameInfo* Arena::CreateMaybeMessage<::CGameInfo_CDotaGameInfo>(Arena*);
template<> ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* Arena::CreateMaybeMessage<::CGameInfo_CDotaGameInfo_CHeroSelectEvent>(Arena*);
template<> ::CGameInfo_CDotaGameInfo_CPlayerInfo* Arena::CreateMaybeMessage<::CGameInfo_CDotaGameInfo_CPlayerInfo>(Arena*);
PROTOBUF_NAMESPACE_CLOSE

enum EDemoCommands : int {
  DEM_Error = -1,
  DEM_Stop = 0,
  DEM_FileHeader = 1,
  DEM_FileInfo = 2,
  DEM_SyncTick = 3,
  DEM_SendTables = 4,
  DEM_ClassInfo = 5,
  DEM_StringTables = 6,
  DEM_Packet = 7,
  DEM_SignonPacket = 8,
  DEM_ConsoleCmd = 9,
  DEM_CustomData = 10,
  DEM_CustomDataCallbacks = 11,
  DEM_UserCmd = 12,
  DEM_FullPacket = 13,
  DEM_SaveGame = 14,
  DEM_SpawnGroups = 15,
  DEM_AnimationData = 16,
  DEM_AnimationHeader = 17,
  DEM_Recovery = 18,
  DEM_Max = 19,
  DEM_IsCompressed = 64
};
bool EDemoCommands_IsValid(int value);
constexpr EDemoCommands EDemoCommands_MIN = DEM_Error;
constexpr EDemoCommands EDemoCommands_MAX = DEM_IsCompressed;
constexpr int EDemoCommands_ARRAYSIZE = EDemoCommands_MAX + 1;

const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* EDemoCommands_descriptor();
template<typename T>
inline const std::string& EDemoCommands_Name(T enum_t_value) {
  static_assert(::std::is_same<T, EDemoCommands>::value ||
    ::std::is_integral<T>::value,
    "Incorrect type passed to function EDemoCommands_Name.");
  return ::PROTOBUF_NAMESPACE_ID::internal::NameOfEnum(
    EDemoCommands_descriptor(), enum_t_value);
}
inline bool EDemoCommands_Parse(
    ::PROTOBUF_NAMESPACE_ID::ConstStringParam name, EDemoCommands* value) {
  return ::PROTOBUF_NAMESPACE_ID::internal::ParseNamedEnum<EDemoCommands>(
    EDemoCommands_descriptor(), name, value);
}
// ===================================================================

class CDemoFileHeader final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoFileHeader) */ {
 public:
  inline CDemoFileHeader() : CDemoFileHeader(nullptr) {}
  ~CDemoFileHeader() override;
  explicit PROTOBUF_CONSTEXPR CDemoFileHeader(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoFileHeader(const CDemoFileHeader& from);
  CDemoFileHeader(CDemoFileHeader&& from) noexcept
    : CDemoFileHeader() {
    *this = ::std::move(from);
  }

  inline CDemoFileHeader& operator=(const CDemoFileHeader& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoFileHeader& operator=(CDemoFileHeader&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoFileHeader& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoFileHeader* internal_default_instance() {
    return reinterpret_cast<const CDemoFileHeader*>(
               &_CDemoFileHeader_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    0;

  friend void swap(CDemoFileHeader& a, CDemoFileHeader& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoFileHeader* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoFileHeader* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoFileHeader* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoFileHeader>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoFileHeader& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoFileHeader& from) {
    CDemoFileHeader::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoFileHeader* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoFileHeader";
  }
  protected:
  explicit CDemoFileHeader(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDemoFileStampFieldNumber = 1,
    kServerNameFieldNumber = 3,
    kClientNameFieldNumber = 4,
    kMapNameFieldNumber = 5,
    kGameDirectoryFieldNumber = 6,
    kAddonsFieldNumber = 10,
    kDemoVersionNameFieldNumber = 11,
    kDemoVersionGuidFieldNumber = 12,
    kGameFieldNumber = 14,
    kPatchVersionFieldNumber = 2,
    kFullpacketsVersionFieldNumber = 7,
    kAllowClientsideEntitiesFieldNumber = 8,
    kAllowClientsideParticlesFieldNumber = 9,
    kBuildNumFieldNumber = 13,
    kServerStartTickFieldNumber = 15,
  };
  // required string demo_file_stamp = 1;
  bool has_demo_file_stamp() const;
  private:
  bool _internal_has_demo_file_stamp() const;
  public:
  void clear_demo_file_stamp();
  const std::string& demo_file_stamp() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_demo_file_stamp(ArgT0&& arg0, ArgT... args);
  std::string* mutable_demo_file_stamp();
  PROTOBUF_NODISCARD std::string* release_demo_file_stamp();
  void set_allocated_demo_file_stamp(std::string* demo_file_stamp);
  private:
  const std::string& _internal_demo_file_stamp() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_demo_file_stamp(const std::string& value);
  std::string* _internal_mutable_demo_file_stamp();
  public:

  // optional string server_name = 3;
  bool has_server_name() const;
  private:
  bool _internal_has_server_name() const;
  public:
  void clear_server_name();
  const std::string& server_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_server_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_server_name();
  PROTOBUF_NODISCARD std::string* release_server_name();
  void set_allocated_server_name(std::string* server_name);
  private:
  const std::string& _internal_server_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_server_name(const std::string& value);
  std::string* _internal_mutable_server_name();
  public:

  // optional string client_name = 4;
  bool has_client_name() const;
  private:
  bool _internal_has_client_name() const;
  public:
  void clear_client_name();
  const std::string& client_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_client_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_client_name();
  PROTOBUF_NODISCARD std::string* release_client_name();
  void set_allocated_client_name(std::string* client_name);
  private:
  const std::string& _internal_client_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_client_name(const std::string& value);
  std::string* _internal_mutable_client_name();
  public:

  // optional string map_name = 5;
  bool has_map_name() const;
  private:
  bool _internal_has_map_name() const;
  public:
  void clear_map_name();
  const std::string& map_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_map_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_map_name();
  PROTOBUF_NODISCARD std::string* release_map_name();
  void set_allocated_map_name(std::string* map_name);
  private:
  const std::string& _internal_map_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_map_name(const std::string& value);
  std::string* _internal_mutable_map_name();
  public:

  // optional string game_directory = 6;
  bool has_game_directory() const;
  private:
  bool _internal_has_game_directory() const;
  public:
  void clear_game_directory();
  const std::string& game_directory() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_game_directory(ArgT0&& arg0, ArgT... args);
  std::string* mutable_game_directory();
  PROTOBUF_NODISCARD std::string* release_game_directory();
  void set_allocated_game_directory(std::string* game_directory);
  private:
  const std::string& _internal_game_directory() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_game_directory(const std::string& value);
  std::string* _internal_mutable_game_directory();
  public:

  // optional string addons = 10;
  bool has_addons() const;
  private:
  bool _internal_has_addons() const;
  public:
  void clear_addons();
  const std::string& addons() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_addons(ArgT0&& arg0, ArgT... args);
  std::string* mutable_addons();
  PROTOBUF_NODISCARD std::string* release_addons();
  void set_allocated_addons(std::string* addons);
  private:
  const std::string& _internal_addons() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_addons(const std::string& value);
  std::string* _internal_mutable_addons();
  public:

  // optional string demo_version_name = 11;
  bool has_demo_version_name() const;
  private:
  bool _internal_has_demo_version_name() const;
  public:
  void clear_demo_version_name();
  const std::string& demo_version_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_demo_version_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_demo_version_name();
  PROTOBUF_NODISCARD std::string* release_demo_version_name();
  void set_allocated_demo_version_name(std::string* demo_version_name);
  private:
  const std::string& _internal_demo_version_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_demo_version_name(const std::string& value);
  std::string* _internal_mutable_demo_version_name();
  public:

  // optional string demo_version_guid = 12;
  bool has_demo_version_guid() const;
  private:
  bool _internal_has_demo_version_guid() const;
  public:
  void clear_demo_version_guid();
  const std::string& demo_version_guid() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_demo_version_guid(ArgT0&& arg0, ArgT... args);
  std::string* mutable_demo_version_guid();
  PROTOBUF_NODISCARD std::string* release_demo_version_guid();
  void set_allocated_demo_version_guid(std::string* demo_version_guid);
  private:
  const std::string& _internal_demo_version_guid() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_demo_version_guid(const std::string& value);
  std::string* _internal_mutable_demo_version_guid();
  public:

  // optional string game = 14;
  bool has_game() const;
  private:
  bool _internal_has_game() const;
  public:
  void clear_game();
  const std::string& game() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_game(ArgT0&& arg0, ArgT... args);
  std::string* mutable_game();
  PROTOBUF_NODISCARD std::string* release_game();
  void set_allocated_game(std::string* game);
  private:
  const std::string& _internal_game() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_game(const std::string& value);
  std::string* _internal_mutable_game();
  public:

  // optional int32 patch_version = 2;
  bool has_patch_version() const;
  private:
  bool _internal_has_patch_version() const;
  public:
  void clear_patch_version();
  int32_t patch_version() const;
  void set_patch_version(int32_t value);
  private:
  int32_t _internal_patch_version() const;
  void _internal_set_patch_version(int32_t value);
  public:

  // optional int32 fullpackets_version = 7;
  bool has_fullpackets_version() const;
  private:
  bool _internal_has_fullpackets_version() const;
  public:
  void clear_fullpackets_version();
  int32_t fullpackets_version() const;
  void set_fullpackets_version(int32_t value);
  private:
  int32_t _internal_fullpackets_version() const;
  void _internal_set_fullpackets_version(int32_t value);
  public:

  // optional bool allow_clientside_entities = 8;
  bool has_allow_clientside_entities() const;
  private:
  bool _internal_has_allow_clientside_entities() const;
  public:
  void clear_allow_clientside_entities();
  bool allow_clientside_entities() const;
  void set_allow_clientside_entities(bool value);
  private:
  bool _internal_allow_clientside_entities() const;
  void _internal_set_allow_clientside_entities(bool value);
  public:

  // optional bool allow_clientside_particles = 9;
  bool has_allow_clientside_particles() const;
  private:
  bool _internal_has_allow_clientside_particles() const;
  public:
  void clear_allow_clientside_particles();
  bool allow_clientside_particles() const;
  void set_allow_clientside_particles(bool value);
  private:
  bool _internal_allow_clientside_particles() const;
  void _internal_set_allow_clientside_particles(bool value);
  public:

  // optional int32 build_num = 13;
  bool has_build_num() const;
  private:
  bool _internal_has_build_num() const;
  public:
  void clear_build_num();
  int32_t build_num() const;
  void set_build_num(int32_t value);
  private:
  int32_t _internal_build_num() const;
  void _internal_set_build_num(int32_t value);
  public:

  // optional int32 server_start_tick = 15;
  bool has_server_start_tick() const;
  private:
  bool _internal_has_server_start_tick() const;
  public:
  void clear_server_start_tick();
  int32_t server_start_tick() const;
  void set_server_start_tick(int32_t value);
  private:
  int32_t _internal_server_start_tick() const;
  void _internal_set_server_start_tick(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoFileHeader)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr demo_file_stamp_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr server_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr client_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr map_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr game_directory_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr addons_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr demo_version_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr demo_version_guid_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr game_;
    int32_t patch_version_;
    int32_t fullpackets_version_;
    bool allow_clientside_entities_;
    bool allow_clientside_particles_;
    int32_t build_num_;
    int32_t server_start_tick_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CGameInfo_CDotaGameInfo_CPlayerInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CGameInfo.CDotaGameInfo.CPlayerInfo) */ {
 public:
  inline CGameInfo_CDotaGameInfo_CPlayerInfo() : CGameInfo_CDotaGameInfo_CPlayerInfo(nullptr) {}
  ~CGameInfo_CDotaGameInfo_CPlayerInfo() override;
  explicit PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CPlayerInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CGameInfo_CDotaGameInfo_CPlayerInfo(const CGameInfo_CDotaGameInfo_CPlayerInfo& from);
  CGameInfo_CDotaGameInfo_CPlayerInfo(CGameInfo_CDotaGameInfo_CPlayerInfo&& from) noexcept
    : CGameInfo_CDotaGameInfo_CPlayerInfo() {
    *this = ::std::move(from);
  }

  inline CGameInfo_CDotaGameInfo_CPlayerInfo& operator=(const CGameInfo_CDotaGameInfo_CPlayerInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CGameInfo_CDotaGameInfo_CPlayerInfo& operator=(CGameInfo_CDotaGameInfo_CPlayerInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CGameInfo_CDotaGameInfo_CPlayerInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CGameInfo_CDotaGameInfo_CPlayerInfo* internal_default_instance() {
    return reinterpret_cast<const CGameInfo_CDotaGameInfo_CPlayerInfo*>(
               &_CGameInfo_CDotaGameInfo_CPlayerInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    1;

  friend void swap(CGameInfo_CDotaGameInfo_CPlayerInfo& a, CGameInfo_CDotaGameInfo_CPlayerInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CGameInfo_CDotaGameInfo_CPlayerInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CGameInfo_CDotaGameInfo_CPlayerInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CGameInfo_CDotaGameInfo_CPlayerInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CGameInfo_CDotaGameInfo_CPlayerInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CGameInfo_CDotaGameInfo_CPlayerInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CGameInfo_CDotaGameInfo_CPlayerInfo& from) {
    CGameInfo_CDotaGameInfo_CPlayerInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CGameInfo_CDotaGameInfo_CPlayerInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CGameInfo.CDotaGameInfo.CPlayerInfo";
  }
  protected:
  explicit CGameInfo_CDotaGameInfo_CPlayerInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kHeroNameFieldNumber = 1,
    kPlayerNameFieldNumber = 2,
    kSteamidFieldNumber = 4,
    kIsFakeClientFieldNumber = 3,
    kGameTeamFieldNumber = 5,
  };
  // optional string hero_name = 1;
  bool has_hero_name() const;
  private:
  bool _internal_has_hero_name() const;
  public:
  void clear_hero_name();
  const std::string& hero_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_hero_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_hero_name();
  PROTOBUF_NODISCARD std::string* release_hero_name();
  void set_allocated_hero_name(std::string* hero_name);
  private:
  const std::string& _internal_hero_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_hero_name(const std::string& value);
  std::string* _internal_mutable_hero_name();
  public:

  // optional string player_name = 2;
  bool has_player_name() const;
  private:
  bool _internal_has_player_name() const;
  public:
  void clear_player_name();
  const std::string& player_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_player_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_player_name();
  PROTOBUF_NODISCARD std::string* release_player_name();
  void set_allocated_player_name(std::string* player_name);
  private:
  const std::string& _internal_player_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_player_name(const std::string& value);
  std::string* _internal_mutable_player_name();
  public:

  // optional uint64 steamid = 4;
  bool has_steamid() const;
  private:
  bool _internal_has_steamid() const;
  public:
  void clear_steamid();
  uint64_t steamid() const;
  void set_steamid(uint64_t value);
  private:
  uint64_t _internal_steamid() const;
  void _internal_set_steamid(uint64_t value);
  public:

  // optional bool is_fake_client = 3;
  bool has_is_fake_client() const;
  private:
  bool _internal_has_is_fake_client() const;
  public:
  void clear_is_fake_client();
  bool is_fake_client() const;
  void set_is_fake_client(bool value);
  private:
  bool _internal_is_fake_client() const;
  void _internal_set_is_fake_client(bool value);
  public:

  // optional int32 game_team = 5;
  bool has_game_team() const;
  private:
  bool _internal_has_game_team() const;
  public:
  void clear_game_team();
  int32_t game_team() const;
  void set_game_team(int32_t value);
  private:
  int32_t _internal_game_team() const;
  void _internal_set_game_team(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CGameInfo.CDotaGameInfo.CPlayerInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr hero_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr player_name_;
    uint64_t steamid_;
    bool is_fake_client_;
    int32_t game_team_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CGameInfo_CDotaGameInfo_CHeroSelectEvent final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CGameInfo.CDotaGameInfo.CHeroSelectEvent) */ {
 public:
  inline CGameInfo_CDotaGameInfo_CHeroSelectEvent() : CGameInfo_CDotaGameInfo_CHeroSelectEvent(nullptr) {}
  ~CGameInfo_CDotaGameInfo_CHeroSelectEvent() override;
  explicit PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo_CHeroSelectEvent(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CGameInfo_CDotaGameInfo_CHeroSelectEvent(const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from);
  CGameInfo_CDotaGameInfo_CHeroSelectEvent(CGameInfo_CDotaGameInfo_CHeroSelectEvent&& from) noexcept
    : CGameInfo_CDotaGameInfo_CHeroSelectEvent() {
    *this = ::std::move(from);
  }

  inline CGameInfo_CDotaGameInfo_CHeroSelectEvent& operator=(const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from) {
    CopyFrom(from);
    return *this;
  }
  inline CGameInfo_CDotaGameInfo_CHeroSelectEvent& operator=(CGameInfo_CDotaGameInfo_CHeroSelectEvent&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CGameInfo_CDotaGameInfo_CHeroSelectEvent& default_instance() {
    return *internal_default_instance();
  }
  static inline const CGameInfo_CDotaGameInfo_CHeroSelectEvent* internal_default_instance() {
    return reinterpret_cast<const CGameInfo_CDotaGameInfo_CHeroSelectEvent*>(
               &_CGameInfo_CDotaGameInfo_CHeroSelectEvent_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    2;

  friend void swap(CGameInfo_CDotaGameInfo_CHeroSelectEvent& a, CGameInfo_CDotaGameInfo_CHeroSelectEvent& b) {
    a.Swap(&b);
  }
  inline void Swap(CGameInfo_CDotaGameInfo_CHeroSelectEvent* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CGameInfo_CDotaGameInfo_CHeroSelectEvent* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CGameInfo_CDotaGameInfo_CHeroSelectEvent* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CGameInfo_CDotaGameInfo_CHeroSelectEvent>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CGameInfo_CDotaGameInfo_CHeroSelectEvent& from) {
    CGameInfo_CDotaGameInfo_CHeroSelectEvent::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CGameInfo_CDotaGameInfo_CHeroSelectEvent* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CGameInfo.CDotaGameInfo.CHeroSelectEvent";
  }
  protected:
  explicit CGameInfo_CDotaGameInfo_CHeroSelectEvent(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kIsPickFieldNumber = 1,
    kTeamFieldNumber = 2,
    kHeroIdFieldNumber = 3,
  };
  // optional bool is_pick = 1;
  bool has_is_pick() const;
  private:
  bool _internal_has_is_pick() const;
  public:
  void clear_is_pick();
  bool is_pick() const;
  void set_is_pick(bool value);
  private:
  bool _internal_is_pick() const;
  void _internal_set_is_pick(bool value);
  public:

  // optional uint32 team = 2;
  bool has_team() const;
  private:
  bool _internal_has_team() const;
  public:
  void clear_team();
  uint32_t team() const;
  void set_team(uint32_t value);
  private:
  uint32_t _internal_team() const;
  void _internal_set_team(uint32_t value);
  public:

  // optional int32 hero_id = 3;
  bool has_hero_id() const;
  private:
  bool _internal_has_hero_id() const;
  public:
  void clear_hero_id();
  int32_t hero_id() const;
  void set_hero_id(int32_t value);
  private:
  int32_t _internal_hero_id() const;
  void _internal_set_hero_id(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CGameInfo.CDotaGameInfo.CHeroSelectEvent)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    bool is_pick_;
    uint32_t team_;
    int32_t hero_id_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CGameInfo_CDotaGameInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CGameInfo.CDotaGameInfo) */ {
 public:
  inline CGameInfo_CDotaGameInfo() : CGameInfo_CDotaGameInfo(nullptr) {}
  ~CGameInfo_CDotaGameInfo() override;
  explicit PROTOBUF_CONSTEXPR CGameInfo_CDotaGameInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CGameInfo_CDotaGameInfo(const CGameInfo_CDotaGameInfo& from);
  CGameInfo_CDotaGameInfo(CGameInfo_CDotaGameInfo&& from) noexcept
    : CGameInfo_CDotaGameInfo() {
    *this = ::std::move(from);
  }

  inline CGameInfo_CDotaGameInfo& operator=(const CGameInfo_CDotaGameInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CGameInfo_CDotaGameInfo& operator=(CGameInfo_CDotaGameInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CGameInfo_CDotaGameInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CGameInfo_CDotaGameInfo* internal_default_instance() {
    return reinterpret_cast<const CGameInfo_CDotaGameInfo*>(
               &_CGameInfo_CDotaGameInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    3;

  friend void swap(CGameInfo_CDotaGameInfo& a, CGameInfo_CDotaGameInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CGameInfo_CDotaGameInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CGameInfo_CDotaGameInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CGameInfo_CDotaGameInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CGameInfo_CDotaGameInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CGameInfo_CDotaGameInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CGameInfo_CDotaGameInfo& from) {
    CGameInfo_CDotaGameInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CGameInfo_CDotaGameInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CGameInfo.CDotaGameInfo";
  }
  protected:
  explicit CGameInfo_CDotaGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef CGameInfo_CDotaGameInfo_CPlayerInfo CPlayerInfo;
  typedef CGameInfo_CDotaGameInfo_CHeroSelectEvent CHeroSelectEvent;

  // accessors -------------------------------------------------------

  enum : int {
    kPlayerInfoFieldNumber = 4,
    kPicksBansFieldNumber = 6,
    kRadiantTeamTagFieldNumber = 9,
    kDireTeamTagFieldNumber = 10,
    kMatchIdFieldNumber = 1,
    kGameModeFieldNumber = 2,
    kGameWinnerFieldNumber = 3,
    kLeagueidFieldNumber = 5,
    kRadiantTeamIdFieldNumber = 7,
    kDireTeamIdFieldNumber = 8,
    kEndTimeFieldNumber = 11,
  };
  // repeated .CGameInfo.CDotaGameInfo.CPlayerInfo player_info = 4;
  int player_info_size() const;
  private:
  int _internal_player_info_size() const;
  public:
  void clear_player_info();
  ::CGameInfo_CDotaGameInfo_CPlayerInfo* mutable_player_info(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CPlayerInfo >*
      mutable_player_info();
  private:
  const ::CGameInfo_CDotaGameInfo_CPlayerInfo& _internal_player_info(int index) const;
  ::CGameInfo_CDotaGameInfo_CPlayerInfo* _internal_add_player_info();
  public:
  const ::CGameInfo_CDotaGameInfo_CPlayerInfo& player_info(int index) const;
  ::CGameInfo_CDotaGameInfo_CPlayerInfo* add_player_info();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CPlayerInfo >&
      player_info() const;

  // repeated .CGameInfo.CDotaGameInfo.CHeroSelectEvent picks_bans = 6;
  int picks_bans_size() const;
  private:
  int _internal_picks_bans_size() const;
  public:
  void clear_picks_bans();
  ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* mutable_picks_bans(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >*
      mutable_picks_bans();
  private:
  const ::CGameInfo_CDotaGameInfo_CHeroSelectEvent& _internal_picks_bans(int index) const;
  ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* _internal_add_picks_bans();
  public:
  const ::CGameInfo_CDotaGameInfo_CHeroSelectEvent& picks_bans(int index) const;
  ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* add_picks_bans();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >&
      picks_bans() const;

  // optional string radiant_team_tag = 9;
  bool has_radiant_team_tag() const;
  private:
  bool _internal_has_radiant_team_tag() const;
  public:
  void clear_radiant_team_tag();
  const std::string& radiant_team_tag() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_radiant_team_tag(ArgT0&& arg0, ArgT... args);
  std::string* mutable_radiant_team_tag();
  PROTOBUF_NODISCARD std::string* release_radiant_team_tag();
  void set_allocated_radiant_team_tag(std::string* radiant_team_tag);
  private:
  const std::string& _internal_radiant_team_tag() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_radiant_team_tag(const std::string& value);
  std::string* _internal_mutable_radiant_team_tag();
  public:

  // optional string dire_team_tag = 10;
  bool has_dire_team_tag() const;
  private:
  bool _internal_has_dire_team_tag() const;
  public:
  void clear_dire_team_tag();
  const std::string& dire_team_tag() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_dire_team_tag(ArgT0&& arg0, ArgT... args);
  std::string* mutable_dire_team_tag();
  PROTOBUF_NODISCARD std::string* release_dire_team_tag();
  void set_allocated_dire_team_tag(std::string* dire_team_tag);
  private:
  const std::string& _internal_dire_team_tag() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_dire_team_tag(const std::string& value);
  std::string* _internal_mutable_dire_team_tag();
  public:

  // optional uint64 match_id = 1;
  bool has_match_id() const;
  private:
  bool _internal_has_match_id() const;
  public:
  void clear_match_id();
  uint64_t match_id() const;
  void set_match_id(uint64_t value);
  private:
  uint64_t _internal_match_id() const;
  void _internal_set_match_id(uint64_t value);
  public:

  // optional int32 game_mode = 2;
  bool has_game_mode() const;
  private:
  bool _internal_has_game_mode() const;
  public:
  void clear_game_mode();
  int32_t game_mode() const;
  void set_game_mode(int32_t value);
  private:
  int32_t _internal_game_mode() const;
  void _internal_set_game_mode(int32_t value);
  public:

  // optional int32 game_winner = 3;
  bool has_game_winner() const;
  private:
  bool _internal_has_game_winner() const;
  public:
  void clear_game_winner();
  int32_t game_winner() const;
  void set_game_winner(int32_t value);
  private:
  int32_t _internal_game_winner() const;
  void _internal_set_game_winner(int32_t value);
  public:

  // optional uint32 leagueid = 5;
  bool has_leagueid() const;
  private:
  bool _internal_has_leagueid() const;
  public:
  void clear_leagueid();
  uint32_t leagueid() const;
  void set_leagueid(uint32_t value);
  private:
  uint32_t _internal_leagueid() const;
  void _internal_set_leagueid(uint32_t value);
  public:

  // optional uint32 radiant_team_id = 7;
  bool has_radiant_team_id() const;
  private:
  bool _internal_has_radiant_team_id() const;
  public:
  void clear_radiant_team_id();
  uint32_t radiant_team_id() const;
  void set_radiant_team_id(uint32_t value);
  private:
  uint32_t _internal_radiant_team_id() const;
  void _internal_set_radiant_team_id(uint32_t value);
  public:

  // optional uint32 dire_team_id = 8;
  bool has_dire_team_id() const;
  private:
  bool _internal_has_dire_team_id() const;
  public:
  void clear_dire_team_id();
  uint32_t dire_team_id() const;
  void set_dire_team_id(uint32_t value);
  private:
  uint32_t _internal_dire_team_id() const;
  void _internal_set_dire_team_id(uint32_t value);
  public:

  // optional uint32 end_time = 11;
  bool has_end_time() const;
  private:
  bool _internal_has_end_time() const;
  public:
  void clear_end_time();
  uint32_t end_time() const;
  void set_end_time(uint32_t value);
  private:
  uint32_t _internal_end_time() const;
  void _internal_set_end_time(uint32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CGameInfo.CDotaGameInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CPlayerInfo > player_info_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent > picks_bans_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr radiant_team_tag_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr dire_team_tag_;
    uint64_t match_id_;
    int32_t game_mode_;
    int32_t game_winner_;
    uint32_t leagueid_;
    uint32_t radiant_team_id_;
    uint32_t dire_team_id_;
    uint32_t end_time_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CGameInfo_CCSGameInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CGameInfo.CCSGameInfo) */ {
 public:
  inline CGameInfo_CCSGameInfo() : CGameInfo_CCSGameInfo(nullptr) {}
  ~CGameInfo_CCSGameInfo() override;
  explicit PROTOBUF_CONSTEXPR CGameInfo_CCSGameInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CGameInfo_CCSGameInfo(const CGameInfo_CCSGameInfo& from);
  CGameInfo_CCSGameInfo(CGameInfo_CCSGameInfo&& from) noexcept
    : CGameInfo_CCSGameInfo() {
    *this = ::std::move(from);
  }

  inline CGameInfo_CCSGameInfo& operator=(const CGameInfo_CCSGameInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CGameInfo_CCSGameInfo& operator=(CGameInfo_CCSGameInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CGameInfo_CCSGameInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CGameInfo_CCSGameInfo* internal_default_instance() {
    return reinterpret_cast<const CGameInfo_CCSGameInfo*>(
               &_CGameInfo_CCSGameInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    4;

  friend void swap(CGameInfo_CCSGameInfo& a, CGameInfo_CCSGameInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CGameInfo_CCSGameInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CGameInfo_CCSGameInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CGameInfo_CCSGameInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CGameInfo_CCSGameInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CGameInfo_CCSGameInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CGameInfo_CCSGameInfo& from) {
    CGameInfo_CCSGameInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CGameInfo_CCSGameInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CGameInfo.CCSGameInfo";
  }
  protected:
  explicit CGameInfo_CCSGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kRoundStartTicksFieldNumber = 1,
  };
  // repeated int32 round_start_ticks = 1;
  int round_start_ticks_size() const;
  private:
  int _internal_round_start_ticks_size() const;
  public:
  void clear_round_start_ticks();
  private:
  int32_t _internal_round_start_ticks(int index) const;
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
      _internal_round_start_ticks() const;
  void _internal_add_round_start_ticks(int32_t value);
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
      _internal_mutable_round_start_ticks();
  public:
  int32_t round_start_ticks(int index) const;
  void set_round_start_ticks(int index, int32_t value);
  void add_round_start_ticks(int32_t value);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
      round_start_ticks() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
      mutable_round_start_ticks();

  // @@protoc_insertion_point(class_scope:CGameInfo.CCSGameInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t > round_start_ticks_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CGameInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CGameInfo) */ {
 public:
  inline CGameInfo() : CGameInfo(nullptr) {}
  ~CGameInfo() override;
  explicit PROTOBUF_CONSTEXPR CGameInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CGameInfo(const CGameInfo& from);
  CGameInfo(CGameInfo&& from) noexcept
    : CGameInfo() {
    *this = ::std::move(from);
  }

  inline CGameInfo& operator=(const CGameInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CGameInfo& operator=(CGameInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CGameInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CGameInfo* internal_default_instance() {
    return reinterpret_cast<const CGameInfo*>(
               &_CGameInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    5;

  friend void swap(CGameInfo& a, CGameInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CGameInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CGameInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CGameInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CGameInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CGameInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CGameInfo& from) {
    CGameInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CGameInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CGameInfo";
  }
  protected:
  explicit CGameInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef CGameInfo_CDotaGameInfo CDotaGameInfo;
  typedef CGameInfo_CCSGameInfo CCSGameInfo;

  // accessors -------------------------------------------------------

  enum : int {
    kDotaFieldNumber = 4,
    kCsFieldNumber = 5,
  };
  // optional .CGameInfo.CDotaGameInfo dota = 4;
  bool has_dota() const;
  private:
  bool _internal_has_dota() const;
  public:
  void clear_dota();
  const ::CGameInfo_CDotaGameInfo& dota() const;
  PROTOBUF_NODISCARD ::CGameInfo_CDotaGameInfo* release_dota();
  ::CGameInfo_CDotaGameInfo* mutable_dota();
  void set_allocated_dota(::CGameInfo_CDotaGameInfo* dota);
  private:
  const ::CGameInfo_CDotaGameInfo& _internal_dota() const;
  ::CGameInfo_CDotaGameInfo* _internal_mutable_dota();
  public:
  void unsafe_arena_set_allocated_dota(
      ::CGameInfo_CDotaGameInfo* dota);
  ::CGameInfo_CDotaGameInfo* unsafe_arena_release_dota();

  // optional .CGameInfo.CCSGameInfo cs = 5;
  bool has_cs() const;
  private:
  bool _internal_has_cs() const;
  public:
  void clear_cs();
  const ::CGameInfo_CCSGameInfo& cs() const;
  PROTOBUF_NODISCARD ::CGameInfo_CCSGameInfo* release_cs();
  ::CGameInfo_CCSGameInfo* mutable_cs();
  void set_allocated_cs(::CGameInfo_CCSGameInfo* cs);
  private:
  const ::CGameInfo_CCSGameInfo& _internal_cs() const;
  ::CGameInfo_CCSGameInfo* _internal_mutable_cs();
  public:
  void unsafe_arena_set_allocated_cs(
      ::CGameInfo_CCSGameInfo* cs);
  ::CGameInfo_CCSGameInfo* unsafe_arena_release_cs();

  // @@protoc_insertion_point(class_scope:CGameInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::CGameInfo_CDotaGameInfo* dota_;
    ::CGameInfo_CCSGameInfo* cs_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoFileInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoFileInfo) */ {
 public:
  inline CDemoFileInfo() : CDemoFileInfo(nullptr) {}
  ~CDemoFileInfo() override;
  explicit PROTOBUF_CONSTEXPR CDemoFileInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoFileInfo(const CDemoFileInfo& from);
  CDemoFileInfo(CDemoFileInfo&& from) noexcept
    : CDemoFileInfo() {
    *this = ::std::move(from);
  }

  inline CDemoFileInfo& operator=(const CDemoFileInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoFileInfo& operator=(CDemoFileInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoFileInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoFileInfo* internal_default_instance() {
    return reinterpret_cast<const CDemoFileInfo*>(
               &_CDemoFileInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    6;

  friend void swap(CDemoFileInfo& a, CDemoFileInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoFileInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoFileInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoFileInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoFileInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoFileInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoFileInfo& from) {
    CDemoFileInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoFileInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoFileInfo";
  }
  protected:
  explicit CDemoFileInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kGameInfoFieldNumber = 4,
    kPlaybackTimeFieldNumber = 1,
    kPlaybackTicksFieldNumber = 2,
    kPlaybackFramesFieldNumber = 3,
  };
  // optional .CGameInfo game_info = 4;
  bool has_game_info() const;
  private:
  bool _internal_has_game_info() const;
  public:
  void clear_game_info();
  const ::CGameInfo& game_info() const;
  PROTOBUF_NODISCARD ::CGameInfo* release_game_info();
  ::CGameInfo* mutable_game_info();
  void set_allocated_game_info(::CGameInfo* game_info);
  private:
  const ::CGameInfo& _internal_game_info() const;
  ::CGameInfo* _internal_mutable_game_info();
  public:
  void unsafe_arena_set_allocated_game_info(
      ::CGameInfo* game_info);
  ::CGameInfo* unsafe_arena_release_game_info();

  // optional float playback_time = 1;
  bool has_playback_time() const;
  private:
  bool _internal_has_playback_time() const;
  public:
  void clear_playback_time();
  float playback_time() const;
  void set_playback_time(float value);
  private:
  float _internal_playback_time() const;
  void _internal_set_playback_time(float value);
  public:

  // optional int32 playback_ticks = 2;
  bool has_playback_ticks() const;
  private:
  bool _internal_has_playback_ticks() const;
  public:
  void clear_playback_ticks();
  int32_t playback_ticks() const;
  void set_playback_ticks(int32_t value);
  private:
  int32_t _internal_playback_ticks() const;
  void _internal_set_playback_ticks(int32_t value);
  public:

  // optional int32 playback_frames = 3;
  bool has_playback_frames() const;
  private:
  bool _internal_has_playback_frames() const;
  public:
  void clear_playback_frames();
  int32_t playback_frames() const;
  void set_playback_frames(int32_t value);
  private:
  int32_t _internal_playback_frames() const;
  void _internal_set_playback_frames(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoFileInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::CGameInfo* game_info_;
    float playback_time_;
    int32_t playback_ticks_;
    int32_t playback_frames_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoPacket final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoPacket) */ {
 public:
  inline CDemoPacket() : CDemoPacket(nullptr) {}
  ~CDemoPacket() override;
  explicit PROTOBUF_CONSTEXPR CDemoPacket(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoPacket(const CDemoPacket& from);
  CDemoPacket(CDemoPacket&& from) noexcept
    : CDemoPacket() {
    *this = ::std::move(from);
  }

  inline CDemoPacket& operator=(const CDemoPacket& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoPacket& operator=(CDemoPacket&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoPacket& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoPacket* internal_default_instance() {
    return reinterpret_cast<const CDemoPacket*>(
               &_CDemoPacket_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    7;

  friend void swap(CDemoPacket& a, CDemoPacket& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoPacket* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoPacket* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoPacket* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoPacket>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoPacket& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoPacket& from) {
    CDemoPacket::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoPacket* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoPacket";
  }
  protected:
  explicit CDemoPacket(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 3,
  };
  // optional bytes data = 3;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // @@protoc_insertion_point(class_scope:CDemoPacket)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoFullPacket final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoFullPacket) */ {
 public:
  inline CDemoFullPacket() : CDemoFullPacket(nullptr) {}
  ~CDemoFullPacket() override;
  explicit PROTOBUF_CONSTEXPR CDemoFullPacket(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoFullPacket(const CDemoFullPacket& from);
  CDemoFullPacket(CDemoFullPacket&& from) noexcept
    : CDemoFullPacket() {
    *this = ::std::move(from);
  }

  inline CDemoFullPacket& operator=(const CDemoFullPacket& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoFullPacket& operator=(CDemoFullPacket&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoFullPacket& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoFullPacket* internal_default_instance() {
    return reinterpret_cast<const CDemoFullPacket*>(
               &_CDemoFullPacket_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    8;

  friend void swap(CDemoFullPacket& a, CDemoFullPacket& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoFullPacket* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoFullPacket* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoFullPacket* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoFullPacket>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoFullPacket& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoFullPacket& from) {
    CDemoFullPacket::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoFullPacket* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoFullPacket";
  }
  protected:
  explicit CDemoFullPacket(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStringTableFieldNumber = 1,
    kPacketFieldNumber = 2,
  };
  // optional .CDemoStringTables string_table = 1;
  bool has_string_table() const;
  private:
  bool _internal_has_string_table() const;
  public:
  void clear_string_table();
  const ::CDemoStringTables& string_table() const;
  PROTOBUF_NODISCARD ::CDemoStringTables* release_string_table();
  ::CDemoStringTables* mutable_string_table();
  void set_allocated_string_table(::CDemoStringTables* string_table);
  private:
  const ::CDemoStringTables& _internal_string_table() const;
  ::CDemoStringTables* _internal_mutable_string_table();
  public:
  void unsafe_arena_set_allocated_string_table(
      ::CDemoStringTables* string_table);
  ::CDemoStringTables* unsafe_arena_release_string_table();

  // optional .CDemoPacket packet = 2;
  bool has_packet() const;
  private:
  bool _internal_has_packet() const;
  public:
  void clear_packet();
  const ::CDemoPacket& packet() const;
  PROTOBUF_NODISCARD ::CDemoPacket* release_packet();
  ::CDemoPacket* mutable_packet();
  void set_allocated_packet(::CDemoPacket* packet);
  private:
  const ::CDemoPacket& _internal_packet() const;
  ::CDemoPacket* _internal_mutable_packet();
  public:
  void unsafe_arena_set_allocated_packet(
      ::CDemoPacket* packet);
  ::CDemoPacket* unsafe_arena_release_packet();

  // @@protoc_insertion_point(class_scope:CDemoFullPacket)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::CDemoStringTables* string_table_;
    ::CDemoPacket* packet_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoSaveGame final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoSaveGame) */ {
 public:
  inline CDemoSaveGame() : CDemoSaveGame(nullptr) {}
  ~CDemoSaveGame() override;
  explicit PROTOBUF_CONSTEXPR CDemoSaveGame(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoSaveGame(const CDemoSaveGame& from);
  CDemoSaveGame(CDemoSaveGame&& from) noexcept
    : CDemoSaveGame() {
    *this = ::std::move(from);
  }

  inline CDemoSaveGame& operator=(const CDemoSaveGame& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoSaveGame& operator=(CDemoSaveGame&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoSaveGame& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoSaveGame* internal_default_instance() {
    return reinterpret_cast<const CDemoSaveGame*>(
               &_CDemoSaveGame_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    9;

  friend void swap(CDemoSaveGame& a, CDemoSaveGame& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoSaveGame* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoSaveGame* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoSaveGame* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoSaveGame>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoSaveGame& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoSaveGame& from) {
    CDemoSaveGame::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoSaveGame* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoSaveGame";
  }
  protected:
  explicit CDemoSaveGame(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
    kSteamIdFieldNumber = 2,
    kSignatureFieldNumber = 3,
    kVersionFieldNumber = 4,
  };
  // optional bytes data = 1;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // optional fixed64 steam_id = 2;
  bool has_steam_id() const;
  private:
  bool _internal_has_steam_id() const;
  public:
  void clear_steam_id();
  uint64_t steam_id() const;
  void set_steam_id(uint64_t value);
  private:
  uint64_t _internal_steam_id() const;
  void _internal_set_steam_id(uint64_t value);
  public:

  // optional fixed64 signature = 3;
  bool has_signature() const;
  private:
  bool _internal_has_signature() const;
  public:
  void clear_signature();
  uint64_t signature() const;
  void set_signature(uint64_t value);
  private:
  uint64_t _internal_signature() const;
  void _internal_set_signature(uint64_t value);
  public:

  // optional int32 version = 4;
  bool has_version() const;
  private:
  bool _internal_has_version() const;
  public:
  void clear_version();
  int32_t version() const;
  void set_version(int32_t value);
  private:
  int32_t _internal_version() const;
  void _internal_set_version(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoSaveGame)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
    uint64_t steam_id_;
    uint64_t signature_;
    int32_t version_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoSyncTick final :
    public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:CDemoSyncTick) */ {
 public:
  inline CDemoSyncTick() : CDemoSyncTick(nullptr) {}
  explicit PROTOBUF_CONSTEXPR CDemoSyncTick(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoSyncTick(const CDemoSyncTick& from);
  CDemoSyncTick(CDemoSyncTick&& from) noexcept
    : CDemoSyncTick() {
    *this = ::std::move(from);
  }

  inline CDemoSyncTick& operator=(const CDemoSyncTick& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoSyncTick& operator=(CDemoSyncTick&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoSyncTick& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoSyncTick* internal_default_instance() {
    return reinterpret_cast<const CDemoSyncTick*>(
               &_CDemoSyncTick_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    10;

  friend void swap(CDemoSyncTick& a, CDemoSyncTick& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoSyncTick* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoSyncTick* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoSyncTick* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoSyncTick>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const CDemoSyncTick& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const CDemoSyncTick& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }
  public:

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoSyncTick";
  }
  protected:
  explicit CDemoSyncTick(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:CDemoSyncTick)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
  };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoConsoleCmd final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoConsoleCmd) */ {
 public:
  inline CDemoConsoleCmd() : CDemoConsoleCmd(nullptr) {}
  ~CDemoConsoleCmd() override;
  explicit PROTOBUF_CONSTEXPR CDemoConsoleCmd(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoConsoleCmd(const CDemoConsoleCmd& from);
  CDemoConsoleCmd(CDemoConsoleCmd&& from) noexcept
    : CDemoConsoleCmd() {
    *this = ::std::move(from);
  }

  inline CDemoConsoleCmd& operator=(const CDemoConsoleCmd& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoConsoleCmd& operator=(CDemoConsoleCmd&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoConsoleCmd& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoConsoleCmd* internal_default_instance() {
    return reinterpret_cast<const CDemoConsoleCmd*>(
               &_CDemoConsoleCmd_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    11;

  friend void swap(CDemoConsoleCmd& a, CDemoConsoleCmd& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoConsoleCmd* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoConsoleCmd* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoConsoleCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoConsoleCmd>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoConsoleCmd& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoConsoleCmd& from) {
    CDemoConsoleCmd::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoConsoleCmd* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoConsoleCmd";
  }
  protected:
  explicit CDemoConsoleCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kCmdstringFieldNumber = 1,
  };
  // optional string cmdstring = 1;
  bool has_cmdstring() const;
  private:
  bool _internal_has_cmdstring() const;
  public:
  void clear_cmdstring();
  const std::string& cmdstring() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_cmdstring(ArgT0&& arg0, ArgT... args);
  std::string* mutable_cmdstring();
  PROTOBUF_NODISCARD std::string* release_cmdstring();
  void set_allocated_cmdstring(std::string* cmdstring);
  private:
  const std::string& _internal_cmdstring() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_cmdstring(const std::string& value);
  std::string* _internal_mutable_cmdstring();
  public:

  // @@protoc_insertion_point(class_scope:CDemoConsoleCmd)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr cmdstring_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoSendTables final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoSendTables) */ {
 public:
  inline CDemoSendTables() : CDemoSendTables(nullptr) {}
  ~CDemoSendTables() override;
  explicit PROTOBUF_CONSTEXPR CDemoSendTables(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoSendTables(const CDemoSendTables& from);
  CDemoSendTables(CDemoSendTables&& from) noexcept
    : CDemoSendTables() {
    *this = ::std::move(from);
  }

  inline CDemoSendTables& operator=(const CDemoSendTables& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoSendTables& operator=(CDemoSendTables&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoSendTables& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoSendTables* internal_default_instance() {
    return reinterpret_cast<const CDemoSendTables*>(
               &_CDemoSendTables_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    12;

  friend void swap(CDemoSendTables& a, CDemoSendTables& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoSendTables* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoSendTables* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoSendTables* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoSendTables>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoSendTables& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoSendTables& from) {
    CDemoSendTables::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoSendTables* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoSendTables";
  }
  protected:
  explicit CDemoSendTables(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
  };
  // optional bytes data = 1;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // @@protoc_insertion_point(class_scope:CDemoSendTables)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoClassInfo_class_t final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoClassInfo.class_t) */ {
 public:
  inline CDemoClassInfo_class_t() : CDemoClassInfo_class_t(nullptr) {}
  ~CDemoClassInfo_class_t() override;
  explicit PROTOBUF_CONSTEXPR CDemoClassInfo_class_t(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoClassInfo_class_t(const CDemoClassInfo_class_t& from);
  CDemoClassInfo_class_t(CDemoClassInfo_class_t&& from) noexcept
    : CDemoClassInfo_class_t() {
    *this = ::std::move(from);
  }

  inline CDemoClassInfo_class_t& operator=(const CDemoClassInfo_class_t& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoClassInfo_class_t& operator=(CDemoClassInfo_class_t&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoClassInfo_class_t& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoClassInfo_class_t* internal_default_instance() {
    return reinterpret_cast<const CDemoClassInfo_class_t*>(
               &_CDemoClassInfo_class_t_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    13;

  friend void swap(CDemoClassInfo_class_t& a, CDemoClassInfo_class_t& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoClassInfo_class_t* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoClassInfo_class_t* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoClassInfo_class_t* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoClassInfo_class_t>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoClassInfo_class_t& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoClassInfo_class_t& from) {
    CDemoClassInfo_class_t::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoClassInfo_class_t* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoClassInfo.class_t";
  }
  protected:
  explicit CDemoClassInfo_class_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kNetworkNameFieldNumber = 2,
    kTableNameFieldNumber = 3,
    kClassIdFieldNumber = 1,
  };
  // optional string network_name = 2;
  bool has_network_name() const;
  private:
  bool _internal_has_network_name() const;
  public:
  void clear_network_name();
  const std::string& network_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_network_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_network_name();
  PROTOBUF_NODISCARD std::string* release_network_name();
  void set_allocated_network_name(std::string* network_name);
  private:
  const std::string& _internal_network_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_network_name(const std::string& value);
  std::string* _internal_mutable_network_name();
  public:

  // optional string table_name = 3;
  bool has_table_name() const;
  private:
  bool _internal_has_table_name() const;
  public:
  void clear_table_name();
  const std::string& table_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_table_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_table_name();
  PROTOBUF_NODISCARD std::string* release_table_name();
  void set_allocated_table_name(std::string* table_name);
  private:
  const std::string& _internal_table_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_table_name(const std::string& value);
  std::string* _internal_mutable_table_name();
  public:

  // optional int32 class_id = 1;
  bool has_class_id() const;
  private:
  bool _internal_has_class_id() const;
  public:
  void clear_class_id();
  int32_t class_id() const;
  void set_class_id(int32_t value);
  private:
  int32_t _internal_class_id() const;
  void _internal_set_class_id(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoClassInfo.class_t)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr network_name_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_name_;
    int32_t class_id_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoClassInfo final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoClassInfo) */ {
 public:
  inline CDemoClassInfo() : CDemoClassInfo(nullptr) {}
  ~CDemoClassInfo() override;
  explicit PROTOBUF_CONSTEXPR CDemoClassInfo(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoClassInfo(const CDemoClassInfo& from);
  CDemoClassInfo(CDemoClassInfo&& from) noexcept
    : CDemoClassInfo() {
    *this = ::std::move(from);
  }

  inline CDemoClassInfo& operator=(const CDemoClassInfo& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoClassInfo& operator=(CDemoClassInfo&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoClassInfo& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoClassInfo* internal_default_instance() {
    return reinterpret_cast<const CDemoClassInfo*>(
               &_CDemoClassInfo_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    14;

  friend void swap(CDemoClassInfo& a, CDemoClassInfo& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoClassInfo* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoClassInfo* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoClassInfo* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoClassInfo>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoClassInfo& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoClassInfo& from) {
    CDemoClassInfo::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoClassInfo* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoClassInfo";
  }
  protected:
  explicit CDemoClassInfo(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef CDemoClassInfo_class_t class_t;

  // accessors -------------------------------------------------------

  enum : int {
    kClassesFieldNumber = 1,
  };
  // repeated .CDemoClassInfo.class_t classes = 1;
  int classes_size() const;
  private:
  int _internal_classes_size() const;
  public:
  void clear_classes();
  ::CDemoClassInfo_class_t* mutable_classes(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoClassInfo_class_t >*
      mutable_classes();
  private:
  const ::CDemoClassInfo_class_t& _internal_classes(int index) const;
  ::CDemoClassInfo_class_t* _internal_add_classes();
  public:
  const ::CDemoClassInfo_class_t& classes(int index) const;
  ::CDemoClassInfo_class_t* add_classes();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoClassInfo_class_t >&
      classes() const;

  // @@protoc_insertion_point(class_scope:CDemoClassInfo)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoClassInfo_class_t > classes_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoCustomData final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoCustomData) */ {
 public:
  inline CDemoCustomData() : CDemoCustomData(nullptr) {}
  ~CDemoCustomData() override;
  explicit PROTOBUF_CONSTEXPR CDemoCustomData(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoCustomData(const CDemoCustomData& from);
  CDemoCustomData(CDemoCustomData&& from) noexcept
    : CDemoCustomData() {
    *this = ::std::move(from);
  }

  inline CDemoCustomData& operator=(const CDemoCustomData& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoCustomData& operator=(CDemoCustomData&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoCustomData& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoCustomData* internal_default_instance() {
    return reinterpret_cast<const CDemoCustomData*>(
               &_CDemoCustomData_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    15;

  friend void swap(CDemoCustomData& a, CDemoCustomData& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoCustomData* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoCustomData* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoCustomData* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoCustomData>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoCustomData& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoCustomData& from) {
    CDemoCustomData::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoCustomData* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoCustomData";
  }
  protected:
  explicit CDemoCustomData(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 2,
    kCallbackIndexFieldNumber = 1,
  };
  // optional bytes data = 2;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // optional int32 callback_index = 1;
  bool has_callback_index() const;
  private:
  bool _internal_has_callback_index() const;
  public:
  void clear_callback_index();
  int32_t callback_index() const;
  void set_callback_index(int32_t value);
  private:
  int32_t _internal_callback_index() const;
  void _internal_set_callback_index(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoCustomData)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
    int32_t callback_index_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoCustomDataCallbacks final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoCustomDataCallbacks) */ {
 public:
  inline CDemoCustomDataCallbacks() : CDemoCustomDataCallbacks(nullptr) {}
  ~CDemoCustomDataCallbacks() override;
  explicit PROTOBUF_CONSTEXPR CDemoCustomDataCallbacks(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoCustomDataCallbacks(const CDemoCustomDataCallbacks& from);
  CDemoCustomDataCallbacks(CDemoCustomDataCallbacks&& from) noexcept
    : CDemoCustomDataCallbacks() {
    *this = ::std::move(from);
  }

  inline CDemoCustomDataCallbacks& operator=(const CDemoCustomDataCallbacks& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoCustomDataCallbacks& operator=(CDemoCustomDataCallbacks&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoCustomDataCallbacks& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoCustomDataCallbacks* internal_default_instance() {
    return reinterpret_cast<const CDemoCustomDataCallbacks*>(
               &_CDemoCustomDataCallbacks_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    16;

  friend void swap(CDemoCustomDataCallbacks& a, CDemoCustomDataCallbacks& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoCustomDataCallbacks* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoCustomDataCallbacks* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoCustomDataCallbacks* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoCustomDataCallbacks>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoCustomDataCallbacks& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoCustomDataCallbacks& from) {
    CDemoCustomDataCallbacks::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoCustomDataCallbacks* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoCustomDataCallbacks";
  }
  protected:
  explicit CDemoCustomDataCallbacks(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kSaveIdFieldNumber = 1,
  };
  // repeated string save_id = 1;
  int save_id_size() const;
  private:
  int _internal_save_id_size() const;
  public:
  void clear_save_id();
  const std::string& save_id(int index) const;
  std::string* mutable_save_id(int index);
  void set_save_id(int index, const std::string& value);
  void set_save_id(int index, std::string&& value);
  void set_save_id(int index, const char* value);
  void set_save_id(int index, const char* value, size_t size);
  std::string* add_save_id();
  void add_save_id(const std::string& value);
  void add_save_id(std::string&& value);
  void add_save_id(const char* value);
  void add_save_id(const char* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& save_id() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_save_id();
  private:
  const std::string& _internal_save_id(int index) const;
  std::string* _internal_add_save_id();
  public:

  // @@protoc_insertion_point(class_scope:CDemoCustomDataCallbacks)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> save_id_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoAnimationHeader final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoAnimationHeader) */ {
 public:
  inline CDemoAnimationHeader() : CDemoAnimationHeader(nullptr) {}
  ~CDemoAnimationHeader() override;
  explicit PROTOBUF_CONSTEXPR CDemoAnimationHeader(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoAnimationHeader(const CDemoAnimationHeader& from);
  CDemoAnimationHeader(CDemoAnimationHeader&& from) noexcept
    : CDemoAnimationHeader() {
    *this = ::std::move(from);
  }

  inline CDemoAnimationHeader& operator=(const CDemoAnimationHeader& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoAnimationHeader& operator=(CDemoAnimationHeader&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoAnimationHeader& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoAnimationHeader* internal_default_instance() {
    return reinterpret_cast<const CDemoAnimationHeader*>(
               &_CDemoAnimationHeader_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    17;

  friend void swap(CDemoAnimationHeader& a, CDemoAnimationHeader& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoAnimationHeader* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoAnimationHeader* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoAnimationHeader* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoAnimationHeader>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoAnimationHeader& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoAnimationHeader& from) {
    CDemoAnimationHeader::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoAnimationHeader* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoAnimationHeader";
  }
  protected:
  explicit CDemoAnimationHeader(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 3,
    kEntityIdFieldNumber = 1,
    kTickFieldNumber = 2,
  };
  // optional bytes data = 3;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // optional sint32 entity_id = 1;
  bool has_entity_id() const;
  private:
  bool _internal_has_entity_id() const;
  public:
  void clear_entity_id();
  int32_t entity_id() const;
  void set_entity_id(int32_t value);
  private:
  int32_t _internal_entity_id() const;
  void _internal_set_entity_id(int32_t value);
  public:

  // optional int32 tick = 2;
  bool has_tick() const;
  private:
  bool _internal_has_tick() const;
  public:
  void clear_tick();
  int32_t tick() const;
  void set_tick(int32_t value);
  private:
  int32_t _internal_tick() const;
  void _internal_set_tick(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoAnimationHeader)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
    int32_t entity_id_;
    int32_t tick_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoAnimationData final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoAnimationData) */ {
 public:
  inline CDemoAnimationData() : CDemoAnimationData(nullptr) {}
  ~CDemoAnimationData() override;
  explicit PROTOBUF_CONSTEXPR CDemoAnimationData(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoAnimationData(const CDemoAnimationData& from);
  CDemoAnimationData(CDemoAnimationData&& from) noexcept
    : CDemoAnimationData() {
    *this = ::std::move(from);
  }

  inline CDemoAnimationData& operator=(const CDemoAnimationData& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoAnimationData& operator=(CDemoAnimationData&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoAnimationData& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoAnimationData* internal_default_instance() {
    return reinterpret_cast<const CDemoAnimationData*>(
               &_CDemoAnimationData_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    18;

  friend void swap(CDemoAnimationData& a, CDemoAnimationData& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoAnimationData* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoAnimationData* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoAnimationData* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoAnimationData>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoAnimationData& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoAnimationData& from) {
    CDemoAnimationData::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoAnimationData* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoAnimationData";
  }
  protected:
  explicit CDemoAnimationData(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 4,
    kEntityIdFieldNumber = 1,
    kStartTickFieldNumber = 2,
    kDataChecksumFieldNumber = 5,
    kEndTickFieldNumber = 3,
  };
  // optional bytes data = 4;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // optional sint32 entity_id = 1;
  bool has_entity_id() const;
  private:
  bool _internal_has_entity_id() const;
  public:
  void clear_entity_id();
  int32_t entity_id() const;
  void set_entity_id(int32_t value);
  private:
  int32_t _internal_entity_id() const;
  void _internal_set_entity_id(int32_t value);
  public:

  // optional int32 start_tick = 2;
  bool has_start_tick() const;
  private:
  bool _internal_has_start_tick() const;
  public:
  void clear_start_tick();
  int32_t start_tick() const;
  void set_start_tick(int32_t value);
  private:
  int32_t _internal_start_tick() const;
  void _internal_set_start_tick(int32_t value);
  public:

  // optional int64 data_checksum = 5;
  bool has_data_checksum() const;
  private:
  bool _internal_has_data_checksum() const;
  public:
  void clear_data_checksum();
  int64_t data_checksum() const;
  void set_data_checksum(int64_t value);
  private:
  int64_t _internal_data_checksum() const;
  void _internal_set_data_checksum(int64_t value);
  public:

  // optional int32 end_tick = 3;
  bool has_end_tick() const;
  private:
  bool _internal_has_end_tick() const;
  public:
  void clear_end_tick();
  int32_t end_tick() const;
  void set_end_tick(int32_t value);
  private:
  int32_t _internal_end_tick() const;
  void _internal_set_end_tick(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoAnimationData)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
    int32_t entity_id_;
    int32_t start_tick_;
    int64_t data_checksum_;
    int32_t end_tick_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoStringTables_items_t final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoStringTables.items_t) */ {
 public:
  inline CDemoStringTables_items_t() : CDemoStringTables_items_t(nullptr) {}
  ~CDemoStringTables_items_t() override;
  explicit PROTOBUF_CONSTEXPR CDemoStringTables_items_t(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoStringTables_items_t(const CDemoStringTables_items_t& from);
  CDemoStringTables_items_t(CDemoStringTables_items_t&& from) noexcept
    : CDemoStringTables_items_t() {
    *this = ::std::move(from);
  }

  inline CDemoStringTables_items_t& operator=(const CDemoStringTables_items_t& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoStringTables_items_t& operator=(CDemoStringTables_items_t&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoStringTables_items_t& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoStringTables_items_t* internal_default_instance() {
    return reinterpret_cast<const CDemoStringTables_items_t*>(
               &_CDemoStringTables_items_t_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    19;

  friend void swap(CDemoStringTables_items_t& a, CDemoStringTables_items_t& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoStringTables_items_t* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoStringTables_items_t* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoStringTables_items_t* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoStringTables_items_t>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoStringTables_items_t& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoStringTables_items_t& from) {
    CDemoStringTables_items_t::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoStringTables_items_t* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoStringTables.items_t";
  }
  protected:
  explicit CDemoStringTables_items_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kStrFieldNumber = 1,
    kDataFieldNumber = 2,
  };
  // optional string str = 1;
  bool has_str() const;
  private:
  bool _internal_has_str() const;
  public:
  void clear_str();
  const std::string& str() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_str(ArgT0&& arg0, ArgT... args);
  std::string* mutable_str();
  PROTOBUF_NODISCARD std::string* release_str();
  void set_allocated_str(std::string* str);
  private:
  const std::string& _internal_str() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_str(const std::string& value);
  std::string* _internal_mutable_str();
  public:

  // optional bytes data = 2;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // @@protoc_insertion_point(class_scope:CDemoStringTables.items_t)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr str_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoStringTables_table_t final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoStringTables.table_t) */ {
 public:
  inline CDemoStringTables_table_t() : CDemoStringTables_table_t(nullptr) {}
  ~CDemoStringTables_table_t() override;
  explicit PROTOBUF_CONSTEXPR CDemoStringTables_table_t(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoStringTables_table_t(const CDemoStringTables_table_t& from);
  CDemoStringTables_table_t(CDemoStringTables_table_t&& from) noexcept
    : CDemoStringTables_table_t() {
    *this = ::std::move(from);
  }

  inline CDemoStringTables_table_t& operator=(const CDemoStringTables_table_t& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoStringTables_table_t& operator=(CDemoStringTables_table_t&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoStringTables_table_t& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoStringTables_table_t* internal_default_instance() {
    return reinterpret_cast<const CDemoStringTables_table_t*>(
               &_CDemoStringTables_table_t_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    20;

  friend void swap(CDemoStringTables_table_t& a, CDemoStringTables_table_t& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoStringTables_table_t* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoStringTables_table_t* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoStringTables_table_t* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoStringTables_table_t>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoStringTables_table_t& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoStringTables_table_t& from) {
    CDemoStringTables_table_t::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoStringTables_table_t* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoStringTables.table_t";
  }
  protected:
  explicit CDemoStringTables_table_t(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kItemsFieldNumber = 2,
    kItemsClientsideFieldNumber = 3,
    kTableNameFieldNumber = 1,
    kTableFlagsFieldNumber = 4,
  };
  // repeated .CDemoStringTables.items_t items = 2;
  int items_size() const;
  private:
  int _internal_items_size() const;
  public:
  void clear_items();
  ::CDemoStringTables_items_t* mutable_items(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >*
      mutable_items();
  private:
  const ::CDemoStringTables_items_t& _internal_items(int index) const;
  ::CDemoStringTables_items_t* _internal_add_items();
  public:
  const ::CDemoStringTables_items_t& items(int index) const;
  ::CDemoStringTables_items_t* add_items();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >&
      items() const;

  // repeated .CDemoStringTables.items_t items_clientside = 3;
  int items_clientside_size() const;
  private:
  int _internal_items_clientside_size() const;
  public:
  void clear_items_clientside();
  ::CDemoStringTables_items_t* mutable_items_clientside(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >*
      mutable_items_clientside();
  private:
  const ::CDemoStringTables_items_t& _internal_items_clientside(int index) const;
  ::CDemoStringTables_items_t* _internal_add_items_clientside();
  public:
  const ::CDemoStringTables_items_t& items_clientside(int index) const;
  ::CDemoStringTables_items_t* add_items_clientside();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >&
      items_clientside() const;

  // optional string table_name = 1;
  bool has_table_name() const;
  private:
  bool _internal_has_table_name() const;
  public:
  void clear_table_name();
  const std::string& table_name() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_table_name(ArgT0&& arg0, ArgT... args);
  std::string* mutable_table_name();
  PROTOBUF_NODISCARD std::string* release_table_name();
  void set_allocated_table_name(std::string* table_name);
  private:
  const std::string& _internal_table_name() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_table_name(const std::string& value);
  std::string* _internal_mutable_table_name();
  public:

  // optional int32 table_flags = 4;
  bool has_table_flags() const;
  private:
  bool _internal_has_table_flags() const;
  public:
  void clear_table_flags();
  int32_t table_flags() const;
  void set_table_flags(int32_t value);
  private:
  int32_t _internal_table_flags() const;
  void _internal_set_table_flags(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoStringTables.table_t)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t > items_;
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t > items_clientside_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr table_name_;
    int32_t table_flags_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoStringTables final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoStringTables) */ {
 public:
  inline CDemoStringTables() : CDemoStringTables(nullptr) {}
  ~CDemoStringTables() override;
  explicit PROTOBUF_CONSTEXPR CDemoStringTables(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoStringTables(const CDemoStringTables& from);
  CDemoStringTables(CDemoStringTables&& from) noexcept
    : CDemoStringTables() {
    *this = ::std::move(from);
  }

  inline CDemoStringTables& operator=(const CDemoStringTables& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoStringTables& operator=(CDemoStringTables&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoStringTables& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoStringTables* internal_default_instance() {
    return reinterpret_cast<const CDemoStringTables*>(
               &_CDemoStringTables_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    21;

  friend void swap(CDemoStringTables& a, CDemoStringTables& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoStringTables* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoStringTables* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoStringTables* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoStringTables>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoStringTables& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoStringTables& from) {
    CDemoStringTables::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoStringTables* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoStringTables";
  }
  protected:
  explicit CDemoStringTables(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef CDemoStringTables_items_t items_t;
  typedef CDemoStringTables_table_t table_t;

  // accessors -------------------------------------------------------

  enum : int {
    kTablesFieldNumber = 1,
  };
  // repeated .CDemoStringTables.table_t tables = 1;
  int tables_size() const;
  private:
  int _internal_tables_size() const;
  public:
  void clear_tables();
  ::CDemoStringTables_table_t* mutable_tables(int index);
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_table_t >*
      mutable_tables();
  private:
  const ::CDemoStringTables_table_t& _internal_tables(int index) const;
  ::CDemoStringTables_table_t* _internal_add_tables();
  public:
  const ::CDemoStringTables_table_t& tables(int index) const;
  ::CDemoStringTables_table_t* add_tables();
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_table_t >&
      tables() const;

  // @@protoc_insertion_point(class_scope:CDemoStringTables)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_table_t > tables_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoStop final :
    public ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase /* @@protoc_insertion_point(class_definition:CDemoStop) */ {
 public:
  inline CDemoStop() : CDemoStop(nullptr) {}
  explicit PROTOBUF_CONSTEXPR CDemoStop(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoStop(const CDemoStop& from);
  CDemoStop(CDemoStop&& from) noexcept
    : CDemoStop() {
    *this = ::std::move(from);
  }

  inline CDemoStop& operator=(const CDemoStop& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoStop& operator=(CDemoStop&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoStop& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoStop* internal_default_instance() {
    return reinterpret_cast<const CDemoStop*>(
               &_CDemoStop_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    22;

  friend void swap(CDemoStop& a, CDemoStop& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoStop* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoStop* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoStop* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoStop>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyFrom;
  inline void CopyFrom(const CDemoStop& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::CopyImpl(*this, from);
  }
  using ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeFrom;
  void MergeFrom(const CDemoStop& from) {
    ::PROTOBUF_NAMESPACE_ID::internal::ZeroFieldsBase::MergeImpl(*this, from);
  }
  public:

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoStop";
  }
  protected:
  explicit CDemoStop(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  // @@protoc_insertion_point(class_scope:CDemoStop)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
  };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoUserCmd final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoUserCmd) */ {
 public:
  inline CDemoUserCmd() : CDemoUserCmd(nullptr) {}
  ~CDemoUserCmd() override;
  explicit PROTOBUF_CONSTEXPR CDemoUserCmd(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoUserCmd(const CDemoUserCmd& from);
  CDemoUserCmd(CDemoUserCmd&& from) noexcept
    : CDemoUserCmd() {
    *this = ::std::move(from);
  }

  inline CDemoUserCmd& operator=(const CDemoUserCmd& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoUserCmd& operator=(CDemoUserCmd&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoUserCmd& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoUserCmd* internal_default_instance() {
    return reinterpret_cast<const CDemoUserCmd*>(
               &_CDemoUserCmd_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    23;

  friend void swap(CDemoUserCmd& a, CDemoUserCmd& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoUserCmd* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoUserCmd* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoUserCmd* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoUserCmd>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoUserCmd& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoUserCmd& from) {
    CDemoUserCmd::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoUserCmd* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoUserCmd";
  }
  protected:
  explicit CDemoUserCmd(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 2,
    kCmdNumberFieldNumber = 1,
  };
  // optional bytes data = 2;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // optional int32 cmd_number = 1;
  bool has_cmd_number() const;
  private:
  bool _internal_has_cmd_number() const;
  public:
  void clear_cmd_number();
  int32_t cmd_number() const;
  void set_cmd_number(int32_t value);
  private:
  int32_t _internal_cmd_number() const;
  void _internal_set_cmd_number(int32_t value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoUserCmd)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
    int32_t cmd_number_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoSpawnGroups final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoSpawnGroups) */ {
 public:
  inline CDemoSpawnGroups() : CDemoSpawnGroups(nullptr) {}
  ~CDemoSpawnGroups() override;
  explicit PROTOBUF_CONSTEXPR CDemoSpawnGroups(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoSpawnGroups(const CDemoSpawnGroups& from);
  CDemoSpawnGroups(CDemoSpawnGroups&& from) noexcept
    : CDemoSpawnGroups() {
    *this = ::std::move(from);
  }

  inline CDemoSpawnGroups& operator=(const CDemoSpawnGroups& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoSpawnGroups& operator=(CDemoSpawnGroups&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoSpawnGroups& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoSpawnGroups* internal_default_instance() {
    return reinterpret_cast<const CDemoSpawnGroups*>(
               &_CDemoSpawnGroups_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    24;

  friend void swap(CDemoSpawnGroups& a, CDemoSpawnGroups& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoSpawnGroups* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoSpawnGroups* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoSpawnGroups* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoSpawnGroups>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoSpawnGroups& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoSpawnGroups& from) {
    CDemoSpawnGroups::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoSpawnGroups* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoSpawnGroups";
  }
  protected:
  explicit CDemoSpawnGroups(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kMsgsFieldNumber = 3,
  };
  // repeated bytes msgs = 3;
  int msgs_size() const;
  private:
  int _internal_msgs_size() const;
  public:
  void clear_msgs();
  const std::string& msgs(int index) const;
  std::string* mutable_msgs(int index);
  void set_msgs(int index, const std::string& value);
  void set_msgs(int index, std::string&& value);
  void set_msgs(int index, const char* value);
  void set_msgs(int index, const void* value, size_t size);
  std::string* add_msgs();
  void add_msgs(const std::string& value);
  void add_msgs(std::string&& value);
  void add_msgs(const char* value);
  void add_msgs(const void* value, size_t size);
  const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>& msgs() const;
  ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>* mutable_msgs();
  private:
  const std::string& _internal_msgs(int index) const;
  std::string* _internal_add_msgs();
  public:

  // @@protoc_insertion_point(class_scope:CDemoSpawnGroups)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string> msgs_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoSpawnGroupsHLTVBroadcast final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoSpawnGroupsHLTVBroadcast) */ {
 public:
  inline CDemoSpawnGroupsHLTVBroadcast() : CDemoSpawnGroupsHLTVBroadcast(nullptr) {}
  ~CDemoSpawnGroupsHLTVBroadcast() override;
  explicit PROTOBUF_CONSTEXPR CDemoSpawnGroupsHLTVBroadcast(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoSpawnGroupsHLTVBroadcast(const CDemoSpawnGroupsHLTVBroadcast& from);
  CDemoSpawnGroupsHLTVBroadcast(CDemoSpawnGroupsHLTVBroadcast&& from) noexcept
    : CDemoSpawnGroupsHLTVBroadcast() {
    *this = ::std::move(from);
  }

  inline CDemoSpawnGroupsHLTVBroadcast& operator=(const CDemoSpawnGroupsHLTVBroadcast& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoSpawnGroupsHLTVBroadcast& operator=(CDemoSpawnGroupsHLTVBroadcast&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoSpawnGroupsHLTVBroadcast& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoSpawnGroupsHLTVBroadcast* internal_default_instance() {
    return reinterpret_cast<const CDemoSpawnGroupsHLTVBroadcast*>(
               &_CDemoSpawnGroupsHLTVBroadcast_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    25;

  friend void swap(CDemoSpawnGroupsHLTVBroadcast& a, CDemoSpawnGroupsHLTVBroadcast& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoSpawnGroupsHLTVBroadcast* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoSpawnGroupsHLTVBroadcast* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoSpawnGroupsHLTVBroadcast* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoSpawnGroupsHLTVBroadcast>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoSpawnGroupsHLTVBroadcast& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoSpawnGroupsHLTVBroadcast& from) {
    CDemoSpawnGroupsHLTVBroadcast::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoSpawnGroupsHLTVBroadcast* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoSpawnGroupsHLTVBroadcast";
  }
  protected:
  explicit CDemoSpawnGroupsHLTVBroadcast(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kDataFieldNumber = 1,
  };
  // optional bytes data = 1;
  bool has_data() const;
  private:
  bool _internal_has_data() const;
  public:
  void clear_data();
  const std::string& data() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_data(ArgT0&& arg0, ArgT... args);
  std::string* mutable_data();
  PROTOBUF_NODISCARD std::string* release_data();
  void set_allocated_data(std::string* data);
  private:
  const std::string& _internal_data() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_data(const std::string& value);
  std::string* _internal_mutable_data();
  public:

  // @@protoc_insertion_point(class_scope:CDemoSpawnGroupsHLTVBroadcast)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr data_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoRecovery_DemoInitialSpawnGroupEntry final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoRecovery.DemoInitialSpawnGroupEntry) */ {
 public:
  inline CDemoRecovery_DemoInitialSpawnGroupEntry() : CDemoRecovery_DemoInitialSpawnGroupEntry(nullptr) {}
  ~CDemoRecovery_DemoInitialSpawnGroupEntry() override;
  explicit PROTOBUF_CONSTEXPR CDemoRecovery_DemoInitialSpawnGroupEntry(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoRecovery_DemoInitialSpawnGroupEntry(const CDemoRecovery_DemoInitialSpawnGroupEntry& from);
  CDemoRecovery_DemoInitialSpawnGroupEntry(CDemoRecovery_DemoInitialSpawnGroupEntry&& from) noexcept
    : CDemoRecovery_DemoInitialSpawnGroupEntry() {
    *this = ::std::move(from);
  }

  inline CDemoRecovery_DemoInitialSpawnGroupEntry& operator=(const CDemoRecovery_DemoInitialSpawnGroupEntry& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoRecovery_DemoInitialSpawnGroupEntry& operator=(CDemoRecovery_DemoInitialSpawnGroupEntry&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoRecovery_DemoInitialSpawnGroupEntry& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoRecovery_DemoInitialSpawnGroupEntry* internal_default_instance() {
    return reinterpret_cast<const CDemoRecovery_DemoInitialSpawnGroupEntry*>(
               &_CDemoRecovery_DemoInitialSpawnGroupEntry_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    26;

  friend void swap(CDemoRecovery_DemoInitialSpawnGroupEntry& a, CDemoRecovery_DemoInitialSpawnGroupEntry& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoRecovery_DemoInitialSpawnGroupEntry* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoRecovery_DemoInitialSpawnGroupEntry* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoRecovery_DemoInitialSpawnGroupEntry* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoRecovery_DemoInitialSpawnGroupEntry>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoRecovery_DemoInitialSpawnGroupEntry& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoRecovery_DemoInitialSpawnGroupEntry& from) {
    CDemoRecovery_DemoInitialSpawnGroupEntry::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoRecovery_DemoInitialSpawnGroupEntry* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoRecovery.DemoInitialSpawnGroupEntry";
  }
  protected:
  explicit CDemoRecovery_DemoInitialSpawnGroupEntry(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  // accessors -------------------------------------------------------

  enum : int {
    kSpawngrouphandleFieldNumber = 1,
    kWasCreatedFieldNumber = 2,
  };
  // optional uint32 spawngrouphandle = 1;
  bool has_spawngrouphandle() const;
  private:
  bool _internal_has_spawngrouphandle() const;
  public:
  void clear_spawngrouphandle();
  uint32_t spawngrouphandle() const;
  void set_spawngrouphandle(uint32_t value);
  private:
  uint32_t _internal_spawngrouphandle() const;
  void _internal_set_spawngrouphandle(uint32_t value);
  public:

  // optional bool was_created = 2;
  bool has_was_created() const;
  private:
  bool _internal_has_was_created() const;
  public:
  void clear_was_created();
  bool was_created() const;
  void set_was_created(bool value);
  private:
  bool _internal_was_created() const;
  void _internal_set_was_created(bool value);
  public:

  // @@protoc_insertion_point(class_scope:CDemoRecovery.DemoInitialSpawnGroupEntry)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    uint32_t spawngrouphandle_;
    bool was_created_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// -------------------------------------------------------------------

class CDemoRecovery final :
    public ::PROTOBUF_NAMESPACE_ID::Message /* @@protoc_insertion_point(class_definition:CDemoRecovery) */ {
 public:
  inline CDemoRecovery() : CDemoRecovery(nullptr) {}
  ~CDemoRecovery() override;
  explicit PROTOBUF_CONSTEXPR CDemoRecovery(::PROTOBUF_NAMESPACE_ID::internal::ConstantInitialized);

  CDemoRecovery(const CDemoRecovery& from);
  CDemoRecovery(CDemoRecovery&& from) noexcept
    : CDemoRecovery() {
    *this = ::std::move(from);
  }

  inline CDemoRecovery& operator=(const CDemoRecovery& from) {
    CopyFrom(from);
    return *this;
  }
  inline CDemoRecovery& operator=(CDemoRecovery&& from) noexcept {
    if (this == &from) return *this;
    if (GetOwningArena() == from.GetOwningArena()
  #ifdef PROTOBUF_FORCE_COPY_IN_MOVE
        && GetOwningArena() != nullptr
  #endif  // !PROTOBUF_FORCE_COPY_IN_MOVE
    ) {
      InternalSwap(&from);
    } else {
      CopyFrom(from);
    }
    return *this;
  }

  inline const ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet& unknown_fields() const {
    return _internal_metadata_.unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>(::PROTOBUF_NAMESPACE_ID::UnknownFieldSet::default_instance);
  }
  inline ::PROTOBUF_NAMESPACE_ID::UnknownFieldSet* mutable_unknown_fields() {
    return _internal_metadata_.mutable_unknown_fields<::PROTOBUF_NAMESPACE_ID::UnknownFieldSet>();
  }

  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* descriptor() {
    return GetDescriptor();
  }
  static const ::PROTOBUF_NAMESPACE_ID::Descriptor* GetDescriptor() {
    return default_instance().GetMetadata().descriptor;
  }
  static const ::PROTOBUF_NAMESPACE_ID::Reflection* GetReflection() {
    return default_instance().GetMetadata().reflection;
  }
  static const CDemoRecovery& default_instance() {
    return *internal_default_instance();
  }
  static inline const CDemoRecovery* internal_default_instance() {
    return reinterpret_cast<const CDemoRecovery*>(
               &_CDemoRecovery_default_instance_);
  }
  static constexpr int kIndexInFileMessages =
    27;

  friend void swap(CDemoRecovery& a, CDemoRecovery& b) {
    a.Swap(&b);
  }
  inline void Swap(CDemoRecovery* other) {
    if (other == this) return;
  #ifdef PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() != nullptr &&
        GetOwningArena() == other->GetOwningArena()) {
   #else  // PROTOBUF_FORCE_COPY_IN_SWAP
    if (GetOwningArena() == other->GetOwningArena()) {
  #endif  // !PROTOBUF_FORCE_COPY_IN_SWAP
      InternalSwap(other);
    } else {
      ::PROTOBUF_NAMESPACE_ID::internal::GenericSwap(this, other);
    }
  }
  void UnsafeArenaSwap(CDemoRecovery* other) {
    if (other == this) return;
    GOOGLE_DCHECK(GetOwningArena() == other->GetOwningArena());
    InternalSwap(other);
  }

  // implements Message ----------------------------------------------

  CDemoRecovery* New(::PROTOBUF_NAMESPACE_ID::Arena* arena = nullptr) const final {
    return CreateMaybeMessage<CDemoRecovery>(arena);
  }
  using ::PROTOBUF_NAMESPACE_ID::Message::CopyFrom;
  void CopyFrom(const CDemoRecovery& from);
  using ::PROTOBUF_NAMESPACE_ID::Message::MergeFrom;
  void MergeFrom( const CDemoRecovery& from) {
    CDemoRecovery::MergeImpl(*this, from);
  }
  private:
  static void MergeImpl(::PROTOBUF_NAMESPACE_ID::Message& to_msg, const ::PROTOBUF_NAMESPACE_ID::Message& from_msg);
  public:
  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
  bool IsInitialized() const final;

  size_t ByteSizeLong() const final;
  const char* _InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) final;
  uint8_t* _InternalSerialize(
      uint8_t* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const final;
  int GetCachedSize() const final { return _impl_._cached_size_.Get(); }

  private:
  void SharedCtor(::PROTOBUF_NAMESPACE_ID::Arena* arena, bool is_message_owned);
  void SharedDtor();
  void SetCachedSize(int size) const final;
  void InternalSwap(CDemoRecovery* other);

  private:
  friend class ::PROTOBUF_NAMESPACE_ID::internal::AnyMetadata;
  static ::PROTOBUF_NAMESPACE_ID::StringPiece FullMessageName() {
    return "CDemoRecovery";
  }
  protected:
  explicit CDemoRecovery(::PROTOBUF_NAMESPACE_ID::Arena* arena,
                       bool is_message_owned = false);
  public:

  static const ClassData _class_data_;
  const ::PROTOBUF_NAMESPACE_ID::Message::ClassData*GetClassData() const final;

  ::PROTOBUF_NAMESPACE_ID::Metadata GetMetadata() const final;

  // nested types ----------------------------------------------------

  typedef CDemoRecovery_DemoInitialSpawnGroupEntry DemoInitialSpawnGroupEntry;

  // accessors -------------------------------------------------------

  enum : int {
    kSpawnGroupMessageFieldNumber = 2,
    kInitialSpawnGroupFieldNumber = 1,
  };
  // optional bytes spawn_group_message = 2;
  bool has_spawn_group_message() const;
  private:
  bool _internal_has_spawn_group_message() const;
  public:
  void clear_spawn_group_message();
  const std::string& spawn_group_message() const;
  template <typename ArgT0 = const std::string&, typename... ArgT>
  void set_spawn_group_message(ArgT0&& arg0, ArgT... args);
  std::string* mutable_spawn_group_message();
  PROTOBUF_NODISCARD std::string* release_spawn_group_message();
  void set_allocated_spawn_group_message(std::string* spawn_group_message);
  private:
  const std::string& _internal_spawn_group_message() const;
  inline PROTOBUF_ALWAYS_INLINE void _internal_set_spawn_group_message(const std::string& value);
  std::string* _internal_mutable_spawn_group_message();
  public:

  // optional .CDemoRecovery.DemoInitialSpawnGroupEntry initial_spawn_group = 1;
  bool has_initial_spawn_group() const;
  private:
  bool _internal_has_initial_spawn_group() const;
  public:
  void clear_initial_spawn_group();
  const ::CDemoRecovery_DemoInitialSpawnGroupEntry& initial_spawn_group() const;
  PROTOBUF_NODISCARD ::CDemoRecovery_DemoInitialSpawnGroupEntry* release_initial_spawn_group();
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* mutable_initial_spawn_group();
  void set_allocated_initial_spawn_group(::CDemoRecovery_DemoInitialSpawnGroupEntry* initial_spawn_group);
  private:
  const ::CDemoRecovery_DemoInitialSpawnGroupEntry& _internal_initial_spawn_group() const;
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* _internal_mutable_initial_spawn_group();
  public:
  void unsafe_arena_set_allocated_initial_spawn_group(
      ::CDemoRecovery_DemoInitialSpawnGroupEntry* initial_spawn_group);
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* unsafe_arena_release_initial_spawn_group();

  // @@protoc_insertion_point(class_scope:CDemoRecovery)
 private:
  class _Internal;

  template <typename T> friend class ::PROTOBUF_NAMESPACE_ID::Arena::InternalHelper;
  typedef void InternalArenaConstructable_;
  typedef void DestructorSkippable_;
  struct Impl_ {
    ::PROTOBUF_NAMESPACE_ID::internal::HasBits<1> _has_bits_;
    mutable ::PROTOBUF_NAMESPACE_ID::internal::CachedSize _cached_size_;
    ::PROTOBUF_NAMESPACE_ID::internal::ArenaStringPtr spawn_group_message_;
    ::CDemoRecovery_DemoInitialSpawnGroupEntry* initial_spawn_group_;
  };
  union { Impl_ _impl_; };
  friend struct ::TableStruct_demo_2eproto;
};
// ===================================================================


// ===================================================================

#ifdef __GNUC__
  #pragma GCC diagnostic push
  #pragma GCC diagnostic ignored "-Wstrict-aliasing"
#endif  // __GNUC__
// CDemoFileHeader

// required string demo_file_stamp = 1;
inline bool CDemoFileHeader::_internal_has_demo_file_stamp() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_demo_file_stamp() const {
  return _internal_has_demo_file_stamp();
}
inline void CDemoFileHeader::clear_demo_file_stamp() {
  _impl_.demo_file_stamp_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoFileHeader::demo_file_stamp() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.demo_file_stamp)
  return _internal_demo_file_stamp();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_demo_file_stamp(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.demo_file_stamp_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.demo_file_stamp)
}
inline std::string* CDemoFileHeader::mutable_demo_file_stamp() {
  std::string* _s = _internal_mutable_demo_file_stamp();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.demo_file_stamp)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_demo_file_stamp() const {
  return _impl_.demo_file_stamp_.Get();
}
inline void CDemoFileHeader::_internal_set_demo_file_stamp(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.demo_file_stamp_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_demo_file_stamp() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.demo_file_stamp_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_demo_file_stamp() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.demo_file_stamp)
  if (!_internal_has_demo_file_stamp()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.demo_file_stamp_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_file_stamp_.IsDefault()) {
    _impl_.demo_file_stamp_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_demo_file_stamp(std::string* demo_file_stamp) {
  if (demo_file_stamp != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.demo_file_stamp_.SetAllocated(demo_file_stamp, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_file_stamp_.IsDefault()) {
    _impl_.demo_file_stamp_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.demo_file_stamp)
}

// optional int32 patch_version = 2;
inline bool CDemoFileHeader::_internal_has_patch_version() const {
  bool value = (_impl_._has_bits_[0] & 0x00000200u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_patch_version() const {
  return _internal_has_patch_version();
}
inline void CDemoFileHeader::clear_patch_version() {
  _impl_.patch_version_ = 0;
  _impl_._has_bits_[0] &= ~0x00000200u;
}
inline int32_t CDemoFileHeader::_internal_patch_version() const {
  return _impl_.patch_version_;
}
inline int32_t CDemoFileHeader::patch_version() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.patch_version)
  return _internal_patch_version();
}
inline void CDemoFileHeader::_internal_set_patch_version(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000200u;
  _impl_.patch_version_ = value;
}
inline void CDemoFileHeader::set_patch_version(int32_t value) {
  _internal_set_patch_version(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.patch_version)
}

// optional string server_name = 3;
inline bool CDemoFileHeader::_internal_has_server_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_server_name() const {
  return _internal_has_server_name();
}
inline void CDemoFileHeader::clear_server_name() {
  _impl_.server_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& CDemoFileHeader::server_name() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.server_name)
  return _internal_server_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_server_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000002u;
 _impl_.server_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.server_name)
}
inline std::string* CDemoFileHeader::mutable_server_name() {
  std::string* _s = _internal_mutable_server_name();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.server_name)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_server_name() const {
  return _impl_.server_name_.Get();
}
inline void CDemoFileHeader::_internal_set_server_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.server_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_server_name() {
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.server_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_server_name() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.server_name)
  if (!_internal_has_server_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* p = _impl_.server_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.server_name_.IsDefault()) {
    _impl_.server_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_server_name(std::string* server_name) {
  if (server_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.server_name_.SetAllocated(server_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.server_name_.IsDefault()) {
    _impl_.server_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.server_name)
}

// optional string client_name = 4;
inline bool CDemoFileHeader::_internal_has_client_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_client_name() const {
  return _internal_has_client_name();
}
inline void CDemoFileHeader::clear_client_name() {
  _impl_.client_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline const std::string& CDemoFileHeader::client_name() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.client_name)
  return _internal_client_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_client_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000004u;
 _impl_.client_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.client_name)
}
inline std::string* CDemoFileHeader::mutable_client_name() {
  std::string* _s = _internal_mutable_client_name();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.client_name)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_client_name() const {
  return _impl_.client_name_.Get();
}
inline void CDemoFileHeader::_internal_set_client_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.client_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_client_name() {
  _impl_._has_bits_[0] |= 0x00000004u;
  return _impl_.client_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_client_name() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.client_name)
  if (!_internal_has_client_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000004u;
  auto* p = _impl_.client_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.client_name_.IsDefault()) {
    _impl_.client_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_client_name(std::string* client_name) {
  if (client_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000004u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000004u;
  }
  _impl_.client_name_.SetAllocated(client_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.client_name_.IsDefault()) {
    _impl_.client_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.client_name)
}

// optional string map_name = 5;
inline bool CDemoFileHeader::_internal_has_map_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_map_name() const {
  return _internal_has_map_name();
}
inline void CDemoFileHeader::clear_map_name() {
  _impl_.map_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline const std::string& CDemoFileHeader::map_name() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.map_name)
  return _internal_map_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_map_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000008u;
 _impl_.map_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.map_name)
}
inline std::string* CDemoFileHeader::mutable_map_name() {
  std::string* _s = _internal_mutable_map_name();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.map_name)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_map_name() const {
  return _impl_.map_name_.Get();
}
inline void CDemoFileHeader::_internal_set_map_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.map_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_map_name() {
  _impl_._has_bits_[0] |= 0x00000008u;
  return _impl_.map_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_map_name() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.map_name)
  if (!_internal_has_map_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000008u;
  auto* p = _impl_.map_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.map_name_.IsDefault()) {
    _impl_.map_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_map_name(std::string* map_name) {
  if (map_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000008u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000008u;
  }
  _impl_.map_name_.SetAllocated(map_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.map_name_.IsDefault()) {
    _impl_.map_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.map_name)
}

// optional string game_directory = 6;
inline bool CDemoFileHeader::_internal_has_game_directory() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_game_directory() const {
  return _internal_has_game_directory();
}
inline void CDemoFileHeader::clear_game_directory() {
  _impl_.game_directory_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline const std::string& CDemoFileHeader::game_directory() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.game_directory)
  return _internal_game_directory();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_game_directory(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000010u;
 _impl_.game_directory_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.game_directory)
}
inline std::string* CDemoFileHeader::mutable_game_directory() {
  std::string* _s = _internal_mutable_game_directory();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.game_directory)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_game_directory() const {
  return _impl_.game_directory_.Get();
}
inline void CDemoFileHeader::_internal_set_game_directory(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.game_directory_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_game_directory() {
  _impl_._has_bits_[0] |= 0x00000010u;
  return _impl_.game_directory_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_game_directory() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.game_directory)
  if (!_internal_has_game_directory()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000010u;
  auto* p = _impl_.game_directory_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.game_directory_.IsDefault()) {
    _impl_.game_directory_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_game_directory(std::string* game_directory) {
  if (game_directory != nullptr) {
    _impl_._has_bits_[0] |= 0x00000010u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000010u;
  }
  _impl_.game_directory_.SetAllocated(game_directory, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.game_directory_.IsDefault()) {
    _impl_.game_directory_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.game_directory)
}

// optional int32 fullpackets_version = 7;
inline bool CDemoFileHeader::_internal_has_fullpackets_version() const {
  bool value = (_impl_._has_bits_[0] & 0x00000400u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_fullpackets_version() const {
  return _internal_has_fullpackets_version();
}
inline void CDemoFileHeader::clear_fullpackets_version() {
  _impl_.fullpackets_version_ = 0;
  _impl_._has_bits_[0] &= ~0x00000400u;
}
inline int32_t CDemoFileHeader::_internal_fullpackets_version() const {
  return _impl_.fullpackets_version_;
}
inline int32_t CDemoFileHeader::fullpackets_version() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.fullpackets_version)
  return _internal_fullpackets_version();
}
inline void CDemoFileHeader::_internal_set_fullpackets_version(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000400u;
  _impl_.fullpackets_version_ = value;
}
inline void CDemoFileHeader::set_fullpackets_version(int32_t value) {
  _internal_set_fullpackets_version(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.fullpackets_version)
}

// optional bool allow_clientside_entities = 8;
inline bool CDemoFileHeader::_internal_has_allow_clientside_entities() const {
  bool value = (_impl_._has_bits_[0] & 0x00000800u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_allow_clientside_entities() const {
  return _internal_has_allow_clientside_entities();
}
inline void CDemoFileHeader::clear_allow_clientside_entities() {
  _impl_.allow_clientside_entities_ = false;
  _impl_._has_bits_[0] &= ~0x00000800u;
}
inline bool CDemoFileHeader::_internal_allow_clientside_entities() const {
  return _impl_.allow_clientside_entities_;
}
inline bool CDemoFileHeader::allow_clientside_entities() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.allow_clientside_entities)
  return _internal_allow_clientside_entities();
}
inline void CDemoFileHeader::_internal_set_allow_clientside_entities(bool value) {
  _impl_._has_bits_[0] |= 0x00000800u;
  _impl_.allow_clientside_entities_ = value;
}
inline void CDemoFileHeader::set_allow_clientside_entities(bool value) {
  _internal_set_allow_clientside_entities(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.allow_clientside_entities)
}

// optional bool allow_clientside_particles = 9;
inline bool CDemoFileHeader::_internal_has_allow_clientside_particles() const {
  bool value = (_impl_._has_bits_[0] & 0x00001000u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_allow_clientside_particles() const {
  return _internal_has_allow_clientside_particles();
}
inline void CDemoFileHeader::clear_allow_clientside_particles() {
  _impl_.allow_clientside_particles_ = false;
  _impl_._has_bits_[0] &= ~0x00001000u;
}
inline bool CDemoFileHeader::_internal_allow_clientside_particles() const {
  return _impl_.allow_clientside_particles_;
}
inline bool CDemoFileHeader::allow_clientside_particles() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.allow_clientside_particles)
  return _internal_allow_clientside_particles();
}
inline void CDemoFileHeader::_internal_set_allow_clientside_particles(bool value) {
  _impl_._has_bits_[0] |= 0x00001000u;
  _impl_.allow_clientside_particles_ = value;
}
inline void CDemoFileHeader::set_allow_clientside_particles(bool value) {
  _internal_set_allow_clientside_particles(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.allow_clientside_particles)
}

// optional string addons = 10;
inline bool CDemoFileHeader::_internal_has_addons() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_addons() const {
  return _internal_has_addons();
}
inline void CDemoFileHeader::clear_addons() {
  _impl_.addons_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline const std::string& CDemoFileHeader::addons() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.addons)
  return _internal_addons();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_addons(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000020u;
 _impl_.addons_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.addons)
}
inline std::string* CDemoFileHeader::mutable_addons() {
  std::string* _s = _internal_mutable_addons();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.addons)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_addons() const {
  return _impl_.addons_.Get();
}
inline void CDemoFileHeader::_internal_set_addons(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000020u;
  _impl_.addons_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_addons() {
  _impl_._has_bits_[0] |= 0x00000020u;
  return _impl_.addons_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_addons() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.addons)
  if (!_internal_has_addons()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000020u;
  auto* p = _impl_.addons_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.addons_.IsDefault()) {
    _impl_.addons_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_addons(std::string* addons) {
  if (addons != nullptr) {
    _impl_._has_bits_[0] |= 0x00000020u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000020u;
  }
  _impl_.addons_.SetAllocated(addons, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.addons_.IsDefault()) {
    _impl_.addons_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.addons)
}

// optional string demo_version_name = 11;
inline bool CDemoFileHeader::_internal_has_demo_version_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_demo_version_name() const {
  return _internal_has_demo_version_name();
}
inline void CDemoFileHeader::clear_demo_version_name() {
  _impl_.demo_version_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline const std::string& CDemoFileHeader::demo_version_name() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.demo_version_name)
  return _internal_demo_version_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_demo_version_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000040u;
 _impl_.demo_version_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.demo_version_name)
}
inline std::string* CDemoFileHeader::mutable_demo_version_name() {
  std::string* _s = _internal_mutable_demo_version_name();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.demo_version_name)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_demo_version_name() const {
  return _impl_.demo_version_name_.Get();
}
inline void CDemoFileHeader::_internal_set_demo_version_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000040u;
  _impl_.demo_version_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_demo_version_name() {
  _impl_._has_bits_[0] |= 0x00000040u;
  return _impl_.demo_version_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_demo_version_name() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.demo_version_name)
  if (!_internal_has_demo_version_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000040u;
  auto* p = _impl_.demo_version_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_version_name_.IsDefault()) {
    _impl_.demo_version_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_demo_version_name(std::string* demo_version_name) {
  if (demo_version_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000040u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000040u;
  }
  _impl_.demo_version_name_.SetAllocated(demo_version_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_version_name_.IsDefault()) {
    _impl_.demo_version_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.demo_version_name)
}

// optional string demo_version_guid = 12;
inline bool CDemoFileHeader::_internal_has_demo_version_guid() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_demo_version_guid() const {
  return _internal_has_demo_version_guid();
}
inline void CDemoFileHeader::clear_demo_version_guid() {
  _impl_.demo_version_guid_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline const std::string& CDemoFileHeader::demo_version_guid() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.demo_version_guid)
  return _internal_demo_version_guid();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_demo_version_guid(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000080u;
 _impl_.demo_version_guid_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.demo_version_guid)
}
inline std::string* CDemoFileHeader::mutable_demo_version_guid() {
  std::string* _s = _internal_mutable_demo_version_guid();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.demo_version_guid)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_demo_version_guid() const {
  return _impl_.demo_version_guid_.Get();
}
inline void CDemoFileHeader::_internal_set_demo_version_guid(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000080u;
  _impl_.demo_version_guid_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_demo_version_guid() {
  _impl_._has_bits_[0] |= 0x00000080u;
  return _impl_.demo_version_guid_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_demo_version_guid() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.demo_version_guid)
  if (!_internal_has_demo_version_guid()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000080u;
  auto* p = _impl_.demo_version_guid_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_version_guid_.IsDefault()) {
    _impl_.demo_version_guid_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_demo_version_guid(std::string* demo_version_guid) {
  if (demo_version_guid != nullptr) {
    _impl_._has_bits_[0] |= 0x00000080u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000080u;
  }
  _impl_.demo_version_guid_.SetAllocated(demo_version_guid, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.demo_version_guid_.IsDefault()) {
    _impl_.demo_version_guid_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.demo_version_guid)
}

// optional int32 build_num = 13;
inline bool CDemoFileHeader::_internal_has_build_num() const {
  bool value = (_impl_._has_bits_[0] & 0x00002000u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_build_num() const {
  return _internal_has_build_num();
}
inline void CDemoFileHeader::clear_build_num() {
  _impl_.build_num_ = 0;
  _impl_._has_bits_[0] &= ~0x00002000u;
}
inline int32_t CDemoFileHeader::_internal_build_num() const {
  return _impl_.build_num_;
}
inline int32_t CDemoFileHeader::build_num() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.build_num)
  return _internal_build_num();
}
inline void CDemoFileHeader::_internal_set_build_num(int32_t value) {
  _impl_._has_bits_[0] |= 0x00002000u;
  _impl_.build_num_ = value;
}
inline void CDemoFileHeader::set_build_num(int32_t value) {
  _internal_set_build_num(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.build_num)
}

// optional string game = 14;
inline bool CDemoFileHeader::_internal_has_game() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_game() const {
  return _internal_has_game();
}
inline void CDemoFileHeader::clear_game() {
  _impl_.game_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline const std::string& CDemoFileHeader::game() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.game)
  return _internal_game();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoFileHeader::set_game(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000100u;
 _impl_.game_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoFileHeader.game)
}
inline std::string* CDemoFileHeader::mutable_game() {
  std::string* _s = _internal_mutable_game();
  // @@protoc_insertion_point(field_mutable:CDemoFileHeader.game)
  return _s;
}
inline const std::string& CDemoFileHeader::_internal_game() const {
  return _impl_.game_.Get();
}
inline void CDemoFileHeader::_internal_set_game(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000100u;
  _impl_.game_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::_internal_mutable_game() {
  _impl_._has_bits_[0] |= 0x00000100u;
  return _impl_.game_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoFileHeader::release_game() {
  // @@protoc_insertion_point(field_release:CDemoFileHeader.game)
  if (!_internal_has_game()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000100u;
  auto* p = _impl_.game_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.game_.IsDefault()) {
    _impl_.game_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoFileHeader::set_allocated_game(std::string* game) {
  if (game != nullptr) {
    _impl_._has_bits_[0] |= 0x00000100u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000100u;
  }
  _impl_.game_.SetAllocated(game, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.game_.IsDefault()) {
    _impl_.game_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoFileHeader.game)
}

// optional int32 server_start_tick = 15;
inline bool CDemoFileHeader::_internal_has_server_start_tick() const {
  bool value = (_impl_._has_bits_[0] & 0x00004000u) != 0;
  return value;
}
inline bool CDemoFileHeader::has_server_start_tick() const {
  return _internal_has_server_start_tick();
}
inline void CDemoFileHeader::clear_server_start_tick() {
  _impl_.server_start_tick_ = 0;
  _impl_._has_bits_[0] &= ~0x00004000u;
}
inline int32_t CDemoFileHeader::_internal_server_start_tick() const {
  return _impl_.server_start_tick_;
}
inline int32_t CDemoFileHeader::server_start_tick() const {
  // @@protoc_insertion_point(field_get:CDemoFileHeader.server_start_tick)
  return _internal_server_start_tick();
}
inline void CDemoFileHeader::_internal_set_server_start_tick(int32_t value) {
  _impl_._has_bits_[0] |= 0x00004000u;
  _impl_.server_start_tick_ = value;
}
inline void CDemoFileHeader::set_server_start_tick(int32_t value) {
  _internal_set_server_start_tick(value);
  // @@protoc_insertion_point(field_set:CDemoFileHeader.server_start_tick)
}

// -------------------------------------------------------------------

// CGameInfo_CDotaGameInfo_CPlayerInfo

// optional string hero_name = 1;
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_has_hero_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::has_hero_name() const {
  return _internal_has_hero_name();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::clear_hero_name() {
  _impl_.hero_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CGameInfo_CDotaGameInfo_CPlayerInfo::hero_name() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name)
  return _internal_hero_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CGameInfo_CDotaGameInfo_CPlayerInfo::set_hero_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.hero_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name)
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::mutable_hero_name() {
  std::string* _s = _internal_mutable_hero_name();
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name)
  return _s;
}
inline const std::string& CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_hero_name() const {
  return _impl_.hero_name_.Get();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_set_hero_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.hero_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_mutable_hero_name() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.hero_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::release_hero_name() {
  // @@protoc_insertion_point(field_release:CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name)
  if (!_internal_has_hero_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.hero_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.hero_name_.IsDefault()) {
    _impl_.hero_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::set_allocated_hero_name(std::string* hero_name) {
  if (hero_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.hero_name_.SetAllocated(hero_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.hero_name_.IsDefault()) {
    _impl_.hero_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.CDotaGameInfo.CPlayerInfo.hero_name)
}

// optional string player_name = 2;
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_has_player_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::has_player_name() const {
  return _internal_has_player_name();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::clear_player_name() {
  _impl_.player_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& CGameInfo_CDotaGameInfo_CPlayerInfo::player_name() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CPlayerInfo.player_name)
  return _internal_player_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CGameInfo_CDotaGameInfo_CPlayerInfo::set_player_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000002u;
 _impl_.player_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CPlayerInfo.player_name)
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::mutable_player_name() {
  std::string* _s = _internal_mutable_player_name();
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.CPlayerInfo.player_name)
  return _s;
}
inline const std::string& CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_player_name() const {
  return _impl_.player_name_.Get();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_set_player_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.player_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_mutable_player_name() {
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.player_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo_CPlayerInfo::release_player_name() {
  // @@protoc_insertion_point(field_release:CGameInfo.CDotaGameInfo.CPlayerInfo.player_name)
  if (!_internal_has_player_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* p = _impl_.player_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.player_name_.IsDefault()) {
    _impl_.player_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::set_allocated_player_name(std::string* player_name) {
  if (player_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.player_name_.SetAllocated(player_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.player_name_.IsDefault()) {
    _impl_.player_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.CDotaGameInfo.CPlayerInfo.player_name)
}

// optional bool is_fake_client = 3;
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_has_is_fake_client() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::has_is_fake_client() const {
  return _internal_has_is_fake_client();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::clear_is_fake_client() {
  _impl_.is_fake_client_ = false;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_is_fake_client() const {
  return _impl_.is_fake_client_;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::is_fake_client() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CPlayerInfo.is_fake_client)
  return _internal_is_fake_client();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_set_is_fake_client(bool value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.is_fake_client_ = value;
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::set_is_fake_client(bool value) {
  _internal_set_is_fake_client(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CPlayerInfo.is_fake_client)
}

// optional uint64 steamid = 4;
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_has_steamid() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::has_steamid() const {
  return _internal_has_steamid();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::clear_steamid() {
  _impl_.steamid_ = uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline uint64_t CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_steamid() const {
  return _impl_.steamid_;
}
inline uint64_t CGameInfo_CDotaGameInfo_CPlayerInfo::steamid() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CPlayerInfo.steamid)
  return _internal_steamid();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_set_steamid(uint64_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.steamid_ = value;
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::set_steamid(uint64_t value) {
  _internal_set_steamid(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CPlayerInfo.steamid)
}

// optional int32 game_team = 5;
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_has_game_team() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CPlayerInfo::has_game_team() const {
  return _internal_has_game_team();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::clear_game_team() {
  _impl_.game_team_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline int32_t CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_game_team() const {
  return _impl_.game_team_;
}
inline int32_t CGameInfo_CDotaGameInfo_CPlayerInfo::game_team() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CPlayerInfo.game_team)
  return _internal_game_team();
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::_internal_set_game_team(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.game_team_ = value;
}
inline void CGameInfo_CDotaGameInfo_CPlayerInfo::set_game_team(int32_t value) {
  _internal_set_game_team(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CPlayerInfo.game_team)
}

// -------------------------------------------------------------------

// CGameInfo_CDotaGameInfo_CHeroSelectEvent

// optional bool is_pick = 1;
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_has_is_pick() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::has_is_pick() const {
  return _internal_has_is_pick();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::clear_is_pick() {
  _impl_.is_pick_ = false;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_is_pick() const {
  return _impl_.is_pick_;
}
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::is_pick() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CHeroSelectEvent.is_pick)
  return _internal_is_pick();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_set_is_pick(bool value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.is_pick_ = value;
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::set_is_pick(bool value) {
  _internal_set_is_pick(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CHeroSelectEvent.is_pick)
}

// optional uint32 team = 2;
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_has_team() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::has_team() const {
  return _internal_has_team();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::clear_team() {
  _impl_.team_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline uint32_t CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_team() const {
  return _impl_.team_;
}
inline uint32_t CGameInfo_CDotaGameInfo_CHeroSelectEvent::team() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CHeroSelectEvent.team)
  return _internal_team();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_set_team(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.team_ = value;
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::set_team(uint32_t value) {
  _internal_set_team(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CHeroSelectEvent.team)
}

// optional int32 hero_id = 3;
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_has_hero_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo_CHeroSelectEvent::has_hero_id() const {
  return _internal_has_hero_id();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::clear_hero_id() {
  _impl_.hero_id_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline int32_t CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_hero_id() const {
  return _impl_.hero_id_;
}
inline int32_t CGameInfo_CDotaGameInfo_CHeroSelectEvent::hero_id() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.CHeroSelectEvent.hero_id)
  return _internal_hero_id();
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::_internal_set_hero_id(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.hero_id_ = value;
}
inline void CGameInfo_CDotaGameInfo_CHeroSelectEvent::set_hero_id(int32_t value) {
  _internal_set_hero_id(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.CHeroSelectEvent.hero_id)
}

// -------------------------------------------------------------------

// CGameInfo_CDotaGameInfo

// optional uint64 match_id = 1;
inline bool CGameInfo_CDotaGameInfo::_internal_has_match_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_match_id() const {
  return _internal_has_match_id();
}
inline void CGameInfo_CDotaGameInfo::clear_match_id() {
  _impl_.match_id_ = uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline uint64_t CGameInfo_CDotaGameInfo::_internal_match_id() const {
  return _impl_.match_id_;
}
inline uint64_t CGameInfo_CDotaGameInfo::match_id() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.match_id)
  return _internal_match_id();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_match_id(uint64_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.match_id_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_match_id(uint64_t value) {
  _internal_set_match_id(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.match_id)
}

// optional int32 game_mode = 2;
inline bool CGameInfo_CDotaGameInfo::_internal_has_game_mode() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_game_mode() const {
  return _internal_has_game_mode();
}
inline void CGameInfo_CDotaGameInfo::clear_game_mode() {
  _impl_.game_mode_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline int32_t CGameInfo_CDotaGameInfo::_internal_game_mode() const {
  return _impl_.game_mode_;
}
inline int32_t CGameInfo_CDotaGameInfo::game_mode() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.game_mode)
  return _internal_game_mode();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_game_mode(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.game_mode_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_game_mode(int32_t value) {
  _internal_set_game_mode(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.game_mode)
}

// optional int32 game_winner = 3;
inline bool CGameInfo_CDotaGameInfo::_internal_has_game_winner() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_game_winner() const {
  return _internal_has_game_winner();
}
inline void CGameInfo_CDotaGameInfo::clear_game_winner() {
  _impl_.game_winner_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline int32_t CGameInfo_CDotaGameInfo::_internal_game_winner() const {
  return _impl_.game_winner_;
}
inline int32_t CGameInfo_CDotaGameInfo::game_winner() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.game_winner)
  return _internal_game_winner();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_game_winner(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.game_winner_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_game_winner(int32_t value) {
  _internal_set_game_winner(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.game_winner)
}

// repeated .CGameInfo.CDotaGameInfo.CPlayerInfo player_info = 4;
inline int CGameInfo_CDotaGameInfo::_internal_player_info_size() const {
  return _impl_.player_info_.size();
}
inline int CGameInfo_CDotaGameInfo::player_info_size() const {
  return _internal_player_info_size();
}
inline void CGameInfo_CDotaGameInfo::clear_player_info() {
  _impl_.player_info_.Clear();
}
inline ::CGameInfo_CDotaGameInfo_CPlayerInfo* CGameInfo_CDotaGameInfo::mutable_player_info(int index) {
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.player_info)
  return _impl_.player_info_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CPlayerInfo >*
CGameInfo_CDotaGameInfo::mutable_player_info() {
  // @@protoc_insertion_point(field_mutable_list:CGameInfo.CDotaGameInfo.player_info)
  return &_impl_.player_info_;
}
inline const ::CGameInfo_CDotaGameInfo_CPlayerInfo& CGameInfo_CDotaGameInfo::_internal_player_info(int index) const {
  return _impl_.player_info_.Get(index);
}
inline const ::CGameInfo_CDotaGameInfo_CPlayerInfo& CGameInfo_CDotaGameInfo::player_info(int index) const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.player_info)
  return _internal_player_info(index);
}
inline ::CGameInfo_CDotaGameInfo_CPlayerInfo* CGameInfo_CDotaGameInfo::_internal_add_player_info() {
  return _impl_.player_info_.Add();
}
inline ::CGameInfo_CDotaGameInfo_CPlayerInfo* CGameInfo_CDotaGameInfo::add_player_info() {
  ::CGameInfo_CDotaGameInfo_CPlayerInfo* _add = _internal_add_player_info();
  // @@protoc_insertion_point(field_add:CGameInfo.CDotaGameInfo.player_info)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CPlayerInfo >&
CGameInfo_CDotaGameInfo::player_info() const {
  // @@protoc_insertion_point(field_list:CGameInfo.CDotaGameInfo.player_info)
  return _impl_.player_info_;
}

// optional uint32 leagueid = 5;
inline bool CGameInfo_CDotaGameInfo::_internal_has_leagueid() const {
  bool value = (_impl_._has_bits_[0] & 0x00000020u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_leagueid() const {
  return _internal_has_leagueid();
}
inline void CGameInfo_CDotaGameInfo::clear_leagueid() {
  _impl_.leagueid_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000020u;
}
inline uint32_t CGameInfo_CDotaGameInfo::_internal_leagueid() const {
  return _impl_.leagueid_;
}
inline uint32_t CGameInfo_CDotaGameInfo::leagueid() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.leagueid)
  return _internal_leagueid();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_leagueid(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000020u;
  _impl_.leagueid_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_leagueid(uint32_t value) {
  _internal_set_leagueid(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.leagueid)
}

// repeated .CGameInfo.CDotaGameInfo.CHeroSelectEvent picks_bans = 6;
inline int CGameInfo_CDotaGameInfo::_internal_picks_bans_size() const {
  return _impl_.picks_bans_.size();
}
inline int CGameInfo_CDotaGameInfo::picks_bans_size() const {
  return _internal_picks_bans_size();
}
inline void CGameInfo_CDotaGameInfo::clear_picks_bans() {
  _impl_.picks_bans_.Clear();
}
inline ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* CGameInfo_CDotaGameInfo::mutable_picks_bans(int index) {
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.picks_bans)
  return _impl_.picks_bans_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >*
CGameInfo_CDotaGameInfo::mutable_picks_bans() {
  // @@protoc_insertion_point(field_mutable_list:CGameInfo.CDotaGameInfo.picks_bans)
  return &_impl_.picks_bans_;
}
inline const ::CGameInfo_CDotaGameInfo_CHeroSelectEvent& CGameInfo_CDotaGameInfo::_internal_picks_bans(int index) const {
  return _impl_.picks_bans_.Get(index);
}
inline const ::CGameInfo_CDotaGameInfo_CHeroSelectEvent& CGameInfo_CDotaGameInfo::picks_bans(int index) const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.picks_bans)
  return _internal_picks_bans(index);
}
inline ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* CGameInfo_CDotaGameInfo::_internal_add_picks_bans() {
  return _impl_.picks_bans_.Add();
}
inline ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* CGameInfo_CDotaGameInfo::add_picks_bans() {
  ::CGameInfo_CDotaGameInfo_CHeroSelectEvent* _add = _internal_add_picks_bans();
  // @@protoc_insertion_point(field_add:CGameInfo.CDotaGameInfo.picks_bans)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CGameInfo_CDotaGameInfo_CHeroSelectEvent >&
CGameInfo_CDotaGameInfo::picks_bans() const {
  // @@protoc_insertion_point(field_list:CGameInfo.CDotaGameInfo.picks_bans)
  return _impl_.picks_bans_;
}

// optional uint32 radiant_team_id = 7;
inline bool CGameInfo_CDotaGameInfo::_internal_has_radiant_team_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000040u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_radiant_team_id() const {
  return _internal_has_radiant_team_id();
}
inline void CGameInfo_CDotaGameInfo::clear_radiant_team_id() {
  _impl_.radiant_team_id_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000040u;
}
inline uint32_t CGameInfo_CDotaGameInfo::_internal_radiant_team_id() const {
  return _impl_.radiant_team_id_;
}
inline uint32_t CGameInfo_CDotaGameInfo::radiant_team_id() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.radiant_team_id)
  return _internal_radiant_team_id();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_radiant_team_id(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000040u;
  _impl_.radiant_team_id_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_radiant_team_id(uint32_t value) {
  _internal_set_radiant_team_id(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.radiant_team_id)
}

// optional uint32 dire_team_id = 8;
inline bool CGameInfo_CDotaGameInfo::_internal_has_dire_team_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000080u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_dire_team_id() const {
  return _internal_has_dire_team_id();
}
inline void CGameInfo_CDotaGameInfo::clear_dire_team_id() {
  _impl_.dire_team_id_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000080u;
}
inline uint32_t CGameInfo_CDotaGameInfo::_internal_dire_team_id() const {
  return _impl_.dire_team_id_;
}
inline uint32_t CGameInfo_CDotaGameInfo::dire_team_id() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.dire_team_id)
  return _internal_dire_team_id();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_dire_team_id(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000080u;
  _impl_.dire_team_id_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_dire_team_id(uint32_t value) {
  _internal_set_dire_team_id(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.dire_team_id)
}

// optional string radiant_team_tag = 9;
inline bool CGameInfo_CDotaGameInfo::_internal_has_radiant_team_tag() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_radiant_team_tag() const {
  return _internal_has_radiant_team_tag();
}
inline void CGameInfo_CDotaGameInfo::clear_radiant_team_tag() {
  _impl_.radiant_team_tag_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CGameInfo_CDotaGameInfo::radiant_team_tag() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.radiant_team_tag)
  return _internal_radiant_team_tag();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CGameInfo_CDotaGameInfo::set_radiant_team_tag(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.radiant_team_tag_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.radiant_team_tag)
}
inline std::string* CGameInfo_CDotaGameInfo::mutable_radiant_team_tag() {
  std::string* _s = _internal_mutable_radiant_team_tag();
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.radiant_team_tag)
  return _s;
}
inline const std::string& CGameInfo_CDotaGameInfo::_internal_radiant_team_tag() const {
  return _impl_.radiant_team_tag_.Get();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_radiant_team_tag(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.radiant_team_tag_.Set(value, GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo::_internal_mutable_radiant_team_tag() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.radiant_team_tag_.Mutable(GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo::release_radiant_team_tag() {
  // @@protoc_insertion_point(field_release:CGameInfo.CDotaGameInfo.radiant_team_tag)
  if (!_internal_has_radiant_team_tag()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.radiant_team_tag_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.radiant_team_tag_.IsDefault()) {
    _impl_.radiant_team_tag_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CGameInfo_CDotaGameInfo::set_allocated_radiant_team_tag(std::string* radiant_team_tag) {
  if (radiant_team_tag != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.radiant_team_tag_.SetAllocated(radiant_team_tag, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.radiant_team_tag_.IsDefault()) {
    _impl_.radiant_team_tag_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.CDotaGameInfo.radiant_team_tag)
}

// optional string dire_team_tag = 10;
inline bool CGameInfo_CDotaGameInfo::_internal_has_dire_team_tag() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_dire_team_tag() const {
  return _internal_has_dire_team_tag();
}
inline void CGameInfo_CDotaGameInfo::clear_dire_team_tag() {
  _impl_.dire_team_tag_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& CGameInfo_CDotaGameInfo::dire_team_tag() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.dire_team_tag)
  return _internal_dire_team_tag();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CGameInfo_CDotaGameInfo::set_dire_team_tag(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000002u;
 _impl_.dire_team_tag_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.dire_team_tag)
}
inline std::string* CGameInfo_CDotaGameInfo::mutable_dire_team_tag() {
  std::string* _s = _internal_mutable_dire_team_tag();
  // @@protoc_insertion_point(field_mutable:CGameInfo.CDotaGameInfo.dire_team_tag)
  return _s;
}
inline const std::string& CGameInfo_CDotaGameInfo::_internal_dire_team_tag() const {
  return _impl_.dire_team_tag_.Get();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_dire_team_tag(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.dire_team_tag_.Set(value, GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo::_internal_mutable_dire_team_tag() {
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.dire_team_tag_.Mutable(GetArenaForAllocation());
}
inline std::string* CGameInfo_CDotaGameInfo::release_dire_team_tag() {
  // @@protoc_insertion_point(field_release:CGameInfo.CDotaGameInfo.dire_team_tag)
  if (!_internal_has_dire_team_tag()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* p = _impl_.dire_team_tag_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.dire_team_tag_.IsDefault()) {
    _impl_.dire_team_tag_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CGameInfo_CDotaGameInfo::set_allocated_dire_team_tag(std::string* dire_team_tag) {
  if (dire_team_tag != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.dire_team_tag_.SetAllocated(dire_team_tag, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.dire_team_tag_.IsDefault()) {
    _impl_.dire_team_tag_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.CDotaGameInfo.dire_team_tag)
}

// optional uint32 end_time = 11;
inline bool CGameInfo_CDotaGameInfo::_internal_has_end_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000100u) != 0;
  return value;
}
inline bool CGameInfo_CDotaGameInfo::has_end_time() const {
  return _internal_has_end_time();
}
inline void CGameInfo_CDotaGameInfo::clear_end_time() {
  _impl_.end_time_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000100u;
}
inline uint32_t CGameInfo_CDotaGameInfo::_internal_end_time() const {
  return _impl_.end_time_;
}
inline uint32_t CGameInfo_CDotaGameInfo::end_time() const {
  // @@protoc_insertion_point(field_get:CGameInfo.CDotaGameInfo.end_time)
  return _internal_end_time();
}
inline void CGameInfo_CDotaGameInfo::_internal_set_end_time(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000100u;
  _impl_.end_time_ = value;
}
inline void CGameInfo_CDotaGameInfo::set_end_time(uint32_t value) {
  _internal_set_end_time(value);
  // @@protoc_insertion_point(field_set:CGameInfo.CDotaGameInfo.end_time)
}

// -------------------------------------------------------------------

// CGameInfo_CCSGameInfo

// repeated int32 round_start_ticks = 1;
inline int CGameInfo_CCSGameInfo::_internal_round_start_ticks_size() const {
  return _impl_.round_start_ticks_.size();
}
inline int CGameInfo_CCSGameInfo::round_start_ticks_size() const {
  return _internal_round_start_ticks_size();
}
inline void CGameInfo_CCSGameInfo::clear_round_start_ticks() {
  _impl_.round_start_ticks_.Clear();
}
inline int32_t CGameInfo_CCSGameInfo::_internal_round_start_ticks(int index) const {
  return _impl_.round_start_ticks_.Get(index);
}
inline int32_t CGameInfo_CCSGameInfo::round_start_ticks(int index) const {
  // @@protoc_insertion_point(field_get:CGameInfo.CCSGameInfo.round_start_ticks)
  return _internal_round_start_ticks(index);
}
inline void CGameInfo_CCSGameInfo::set_round_start_ticks(int index, int32_t value) {
  _impl_.round_start_ticks_.Set(index, value);
  // @@protoc_insertion_point(field_set:CGameInfo.CCSGameInfo.round_start_ticks)
}
inline void CGameInfo_CCSGameInfo::_internal_add_round_start_ticks(int32_t value) {
  _impl_.round_start_ticks_.Add(value);
}
inline void CGameInfo_CCSGameInfo::add_round_start_ticks(int32_t value) {
  _internal_add_round_start_ticks(value);
  // @@protoc_insertion_point(field_add:CGameInfo.CCSGameInfo.round_start_ticks)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
CGameInfo_CCSGameInfo::_internal_round_start_ticks() const {
  return _impl_.round_start_ticks_;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >&
CGameInfo_CCSGameInfo::round_start_ticks() const {
  // @@protoc_insertion_point(field_list:CGameInfo.CCSGameInfo.round_start_ticks)
  return _internal_round_start_ticks();
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
CGameInfo_CCSGameInfo::_internal_mutable_round_start_ticks() {
  return &_impl_.round_start_ticks_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedField< int32_t >*
CGameInfo_CCSGameInfo::mutable_round_start_ticks() {
  // @@protoc_insertion_point(field_mutable_list:CGameInfo.CCSGameInfo.round_start_ticks)
  return _internal_mutable_round_start_ticks();
}

// -------------------------------------------------------------------

// CGameInfo

// optional .CGameInfo.CDotaGameInfo dota = 4;
inline bool CGameInfo::_internal_has_dota() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.dota_ != nullptr);
  return value;
}
inline bool CGameInfo::has_dota() const {
  return _internal_has_dota();
}
inline void CGameInfo::clear_dota() {
  if (_impl_.dota_ != nullptr) _impl_.dota_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::CGameInfo_CDotaGameInfo& CGameInfo::_internal_dota() const {
  const ::CGameInfo_CDotaGameInfo* p = _impl_.dota_;
  return p != nullptr ? *p : reinterpret_cast<const ::CGameInfo_CDotaGameInfo&>(
      ::_CGameInfo_CDotaGameInfo_default_instance_);
}
inline const ::CGameInfo_CDotaGameInfo& CGameInfo::dota() const {
  // @@protoc_insertion_point(field_get:CGameInfo.dota)
  return _internal_dota();
}
inline void CGameInfo::unsafe_arena_set_allocated_dota(
    ::CGameInfo_CDotaGameInfo* dota) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.dota_);
  }
  _impl_.dota_ = dota;
  if (dota) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CGameInfo.dota)
}
inline ::CGameInfo_CDotaGameInfo* CGameInfo::release_dota() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CGameInfo_CDotaGameInfo* temp = _impl_.dota_;
  _impl_.dota_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CGameInfo_CDotaGameInfo* CGameInfo::unsafe_arena_release_dota() {
  // @@protoc_insertion_point(field_release:CGameInfo.dota)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CGameInfo_CDotaGameInfo* temp = _impl_.dota_;
  _impl_.dota_ = nullptr;
  return temp;
}
inline ::CGameInfo_CDotaGameInfo* CGameInfo::_internal_mutable_dota() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.dota_ == nullptr) {
    auto* p = CreateMaybeMessage<::CGameInfo_CDotaGameInfo>(GetArenaForAllocation());
    _impl_.dota_ = p;
  }
  return _impl_.dota_;
}
inline ::CGameInfo_CDotaGameInfo* CGameInfo::mutable_dota() {
  ::CGameInfo_CDotaGameInfo* _msg = _internal_mutable_dota();
  // @@protoc_insertion_point(field_mutable:CGameInfo.dota)
  return _msg;
}
inline void CGameInfo::set_allocated_dota(::CGameInfo_CDotaGameInfo* dota) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.dota_;
  }
  if (dota) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(dota);
    if (message_arena != submessage_arena) {
      dota = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, dota, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.dota_ = dota;
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.dota)
}

// optional .CGameInfo.CCSGameInfo cs = 5;
inline bool CGameInfo::_internal_has_cs() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.cs_ != nullptr);
  return value;
}
inline bool CGameInfo::has_cs() const {
  return _internal_has_cs();
}
inline void CGameInfo::clear_cs() {
  if (_impl_.cs_ != nullptr) _impl_.cs_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::CGameInfo_CCSGameInfo& CGameInfo::_internal_cs() const {
  const ::CGameInfo_CCSGameInfo* p = _impl_.cs_;
  return p != nullptr ? *p : reinterpret_cast<const ::CGameInfo_CCSGameInfo&>(
      ::_CGameInfo_CCSGameInfo_default_instance_);
}
inline const ::CGameInfo_CCSGameInfo& CGameInfo::cs() const {
  // @@protoc_insertion_point(field_get:CGameInfo.cs)
  return _internal_cs();
}
inline void CGameInfo::unsafe_arena_set_allocated_cs(
    ::CGameInfo_CCSGameInfo* cs) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.cs_);
  }
  _impl_.cs_ = cs;
  if (cs) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CGameInfo.cs)
}
inline ::CGameInfo_CCSGameInfo* CGameInfo::release_cs() {
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CGameInfo_CCSGameInfo* temp = _impl_.cs_;
  _impl_.cs_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CGameInfo_CCSGameInfo* CGameInfo::unsafe_arena_release_cs() {
  // @@protoc_insertion_point(field_release:CGameInfo.cs)
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CGameInfo_CCSGameInfo* temp = _impl_.cs_;
  _impl_.cs_ = nullptr;
  return temp;
}
inline ::CGameInfo_CCSGameInfo* CGameInfo::_internal_mutable_cs() {
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.cs_ == nullptr) {
    auto* p = CreateMaybeMessage<::CGameInfo_CCSGameInfo>(GetArenaForAllocation());
    _impl_.cs_ = p;
  }
  return _impl_.cs_;
}
inline ::CGameInfo_CCSGameInfo* CGameInfo::mutable_cs() {
  ::CGameInfo_CCSGameInfo* _msg = _internal_mutable_cs();
  // @@protoc_insertion_point(field_mutable:CGameInfo.cs)
  return _msg;
}
inline void CGameInfo::set_allocated_cs(::CGameInfo_CCSGameInfo* cs) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.cs_;
  }
  if (cs) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(cs);
    if (message_arena != submessage_arena) {
      cs = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, cs, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.cs_ = cs;
  // @@protoc_insertion_point(field_set_allocated:CGameInfo.cs)
}

// -------------------------------------------------------------------

// CDemoFileInfo

// optional float playback_time = 1;
inline bool CDemoFileInfo::_internal_has_playback_time() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoFileInfo::has_playback_time() const {
  return _internal_has_playback_time();
}
inline void CDemoFileInfo::clear_playback_time() {
  _impl_.playback_time_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline float CDemoFileInfo::_internal_playback_time() const {
  return _impl_.playback_time_;
}
inline float CDemoFileInfo::playback_time() const {
  // @@protoc_insertion_point(field_get:CDemoFileInfo.playback_time)
  return _internal_playback_time();
}
inline void CDemoFileInfo::_internal_set_playback_time(float value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.playback_time_ = value;
}
inline void CDemoFileInfo::set_playback_time(float value) {
  _internal_set_playback_time(value);
  // @@protoc_insertion_point(field_set:CDemoFileInfo.playback_time)
}

// optional int32 playback_ticks = 2;
inline bool CDemoFileInfo::_internal_has_playback_ticks() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoFileInfo::has_playback_ticks() const {
  return _internal_has_playback_ticks();
}
inline void CDemoFileInfo::clear_playback_ticks() {
  _impl_.playback_ticks_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline int32_t CDemoFileInfo::_internal_playback_ticks() const {
  return _impl_.playback_ticks_;
}
inline int32_t CDemoFileInfo::playback_ticks() const {
  // @@protoc_insertion_point(field_get:CDemoFileInfo.playback_ticks)
  return _internal_playback_ticks();
}
inline void CDemoFileInfo::_internal_set_playback_ticks(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.playback_ticks_ = value;
}
inline void CDemoFileInfo::set_playback_ticks(int32_t value) {
  _internal_set_playback_ticks(value);
  // @@protoc_insertion_point(field_set:CDemoFileInfo.playback_ticks)
}

// optional int32 playback_frames = 3;
inline bool CDemoFileInfo::_internal_has_playback_frames() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CDemoFileInfo::has_playback_frames() const {
  return _internal_has_playback_frames();
}
inline void CDemoFileInfo::clear_playback_frames() {
  _impl_.playback_frames_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline int32_t CDemoFileInfo::_internal_playback_frames() const {
  return _impl_.playback_frames_;
}
inline int32_t CDemoFileInfo::playback_frames() const {
  // @@protoc_insertion_point(field_get:CDemoFileInfo.playback_frames)
  return _internal_playback_frames();
}
inline void CDemoFileInfo::_internal_set_playback_frames(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.playback_frames_ = value;
}
inline void CDemoFileInfo::set_playback_frames(int32_t value) {
  _internal_set_playback_frames(value);
  // @@protoc_insertion_point(field_set:CDemoFileInfo.playback_frames)
}

// optional .CGameInfo game_info = 4;
inline bool CDemoFileInfo::_internal_has_game_info() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.game_info_ != nullptr);
  return value;
}
inline bool CDemoFileInfo::has_game_info() const {
  return _internal_has_game_info();
}
inline void CDemoFileInfo::clear_game_info() {
  if (_impl_.game_info_ != nullptr) _impl_.game_info_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::CGameInfo& CDemoFileInfo::_internal_game_info() const {
  const ::CGameInfo* p = _impl_.game_info_;
  return p != nullptr ? *p : reinterpret_cast<const ::CGameInfo&>(
      ::_CGameInfo_default_instance_);
}
inline const ::CGameInfo& CDemoFileInfo::game_info() const {
  // @@protoc_insertion_point(field_get:CDemoFileInfo.game_info)
  return _internal_game_info();
}
inline void CDemoFileInfo::unsafe_arena_set_allocated_game_info(
    ::CGameInfo* game_info) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.game_info_);
  }
  _impl_.game_info_ = game_info;
  if (game_info) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CDemoFileInfo.game_info)
}
inline ::CGameInfo* CDemoFileInfo::release_game_info() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CGameInfo* temp = _impl_.game_info_;
  _impl_.game_info_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CGameInfo* CDemoFileInfo::unsafe_arena_release_game_info() {
  // @@protoc_insertion_point(field_release:CDemoFileInfo.game_info)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CGameInfo* temp = _impl_.game_info_;
  _impl_.game_info_ = nullptr;
  return temp;
}
inline ::CGameInfo* CDemoFileInfo::_internal_mutable_game_info() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.game_info_ == nullptr) {
    auto* p = CreateMaybeMessage<::CGameInfo>(GetArenaForAllocation());
    _impl_.game_info_ = p;
  }
  return _impl_.game_info_;
}
inline ::CGameInfo* CDemoFileInfo::mutable_game_info() {
  ::CGameInfo* _msg = _internal_mutable_game_info();
  // @@protoc_insertion_point(field_mutable:CDemoFileInfo.game_info)
  return _msg;
}
inline void CDemoFileInfo::set_allocated_game_info(::CGameInfo* game_info) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.game_info_;
  }
  if (game_info) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(game_info);
    if (message_arena != submessage_arena) {
      game_info = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, game_info, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.game_info_ = game_info;
  // @@protoc_insertion_point(field_set_allocated:CDemoFileInfo.game_info)
}

// -------------------------------------------------------------------

// CDemoPacket

// optional bytes data = 3;
inline bool CDemoPacket::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoPacket::has_data() const {
  return _internal_has_data();
}
inline void CDemoPacket::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoPacket::data() const {
  // @@protoc_insertion_point(field_get:CDemoPacket.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoPacket::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoPacket.data)
}
inline std::string* CDemoPacket::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoPacket.data)
  return _s;
}
inline const std::string& CDemoPacket::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoPacket::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoPacket::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoPacket::release_data() {
  // @@protoc_insertion_point(field_release:CDemoPacket.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoPacket::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoPacket.data)
}

// -------------------------------------------------------------------

// CDemoFullPacket

// optional .CDemoStringTables string_table = 1;
inline bool CDemoFullPacket::_internal_has_string_table() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.string_table_ != nullptr);
  return value;
}
inline bool CDemoFullPacket::has_string_table() const {
  return _internal_has_string_table();
}
inline void CDemoFullPacket::clear_string_table() {
  if (_impl_.string_table_ != nullptr) _impl_.string_table_->Clear();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const ::CDemoStringTables& CDemoFullPacket::_internal_string_table() const {
  const ::CDemoStringTables* p = _impl_.string_table_;
  return p != nullptr ? *p : reinterpret_cast<const ::CDemoStringTables&>(
      ::_CDemoStringTables_default_instance_);
}
inline const ::CDemoStringTables& CDemoFullPacket::string_table() const {
  // @@protoc_insertion_point(field_get:CDemoFullPacket.string_table)
  return _internal_string_table();
}
inline void CDemoFullPacket::unsafe_arena_set_allocated_string_table(
    ::CDemoStringTables* string_table) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.string_table_);
  }
  _impl_.string_table_ = string_table;
  if (string_table) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CDemoFullPacket.string_table)
}
inline ::CDemoStringTables* CDemoFullPacket::release_string_table() {
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CDemoStringTables* temp = _impl_.string_table_;
  _impl_.string_table_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CDemoStringTables* CDemoFullPacket::unsafe_arena_release_string_table() {
  // @@protoc_insertion_point(field_release:CDemoFullPacket.string_table)
  _impl_._has_bits_[0] &= ~0x00000001u;
  ::CDemoStringTables* temp = _impl_.string_table_;
  _impl_.string_table_ = nullptr;
  return temp;
}
inline ::CDemoStringTables* CDemoFullPacket::_internal_mutable_string_table() {
  _impl_._has_bits_[0] |= 0x00000001u;
  if (_impl_.string_table_ == nullptr) {
    auto* p = CreateMaybeMessage<::CDemoStringTables>(GetArenaForAllocation());
    _impl_.string_table_ = p;
  }
  return _impl_.string_table_;
}
inline ::CDemoStringTables* CDemoFullPacket::mutable_string_table() {
  ::CDemoStringTables* _msg = _internal_mutable_string_table();
  // @@protoc_insertion_point(field_mutable:CDemoFullPacket.string_table)
  return _msg;
}
inline void CDemoFullPacket::set_allocated_string_table(::CDemoStringTables* string_table) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.string_table_;
  }
  if (string_table) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(string_table);
    if (message_arena != submessage_arena) {
      string_table = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, string_table, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.string_table_ = string_table;
  // @@protoc_insertion_point(field_set_allocated:CDemoFullPacket.string_table)
}

// optional .CDemoPacket packet = 2;
inline bool CDemoFullPacket::_internal_has_packet() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.packet_ != nullptr);
  return value;
}
inline bool CDemoFullPacket::has_packet() const {
  return _internal_has_packet();
}
inline void CDemoFullPacket::clear_packet() {
  if (_impl_.packet_ != nullptr) _impl_.packet_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::CDemoPacket& CDemoFullPacket::_internal_packet() const {
  const ::CDemoPacket* p = _impl_.packet_;
  return p != nullptr ? *p : reinterpret_cast<const ::CDemoPacket&>(
      ::_CDemoPacket_default_instance_);
}
inline const ::CDemoPacket& CDemoFullPacket::packet() const {
  // @@protoc_insertion_point(field_get:CDemoFullPacket.packet)
  return _internal_packet();
}
inline void CDemoFullPacket::unsafe_arena_set_allocated_packet(
    ::CDemoPacket* packet) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.packet_);
  }
  _impl_.packet_ = packet;
  if (packet) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CDemoFullPacket.packet)
}
inline ::CDemoPacket* CDemoFullPacket::release_packet() {
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CDemoPacket* temp = _impl_.packet_;
  _impl_.packet_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CDemoPacket* CDemoFullPacket::unsafe_arena_release_packet() {
  // @@protoc_insertion_point(field_release:CDemoFullPacket.packet)
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CDemoPacket* temp = _impl_.packet_;
  _impl_.packet_ = nullptr;
  return temp;
}
inline ::CDemoPacket* CDemoFullPacket::_internal_mutable_packet() {
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.packet_ == nullptr) {
    auto* p = CreateMaybeMessage<::CDemoPacket>(GetArenaForAllocation());
    _impl_.packet_ = p;
  }
  return _impl_.packet_;
}
inline ::CDemoPacket* CDemoFullPacket::mutable_packet() {
  ::CDemoPacket* _msg = _internal_mutable_packet();
  // @@protoc_insertion_point(field_mutable:CDemoFullPacket.packet)
  return _msg;
}
inline void CDemoFullPacket::set_allocated_packet(::CDemoPacket* packet) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.packet_;
  }
  if (packet) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(packet);
    if (message_arena != submessage_arena) {
      packet = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, packet, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.packet_ = packet;
  // @@protoc_insertion_point(field_set_allocated:CDemoFullPacket.packet)
}

// -------------------------------------------------------------------

// CDemoSaveGame

// optional bytes data = 1;
inline bool CDemoSaveGame::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoSaveGame::has_data() const {
  return _internal_has_data();
}
inline void CDemoSaveGame::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoSaveGame::data() const {
  // @@protoc_insertion_point(field_get:CDemoSaveGame.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoSaveGame::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoSaveGame.data)
}
inline std::string* CDemoSaveGame::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoSaveGame.data)
  return _s;
}
inline const std::string& CDemoSaveGame::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoSaveGame::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoSaveGame::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoSaveGame::release_data() {
  // @@protoc_insertion_point(field_release:CDemoSaveGame.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoSaveGame::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoSaveGame.data)
}

// optional fixed64 steam_id = 2;
inline bool CDemoSaveGame::_internal_has_steam_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoSaveGame::has_steam_id() const {
  return _internal_has_steam_id();
}
inline void CDemoSaveGame::clear_steam_id() {
  _impl_.steam_id_ = uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline uint64_t CDemoSaveGame::_internal_steam_id() const {
  return _impl_.steam_id_;
}
inline uint64_t CDemoSaveGame::steam_id() const {
  // @@protoc_insertion_point(field_get:CDemoSaveGame.steam_id)
  return _internal_steam_id();
}
inline void CDemoSaveGame::_internal_set_steam_id(uint64_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.steam_id_ = value;
}
inline void CDemoSaveGame::set_steam_id(uint64_t value) {
  _internal_set_steam_id(value);
  // @@protoc_insertion_point(field_set:CDemoSaveGame.steam_id)
}

// optional fixed64 signature = 3;
inline bool CDemoSaveGame::_internal_has_signature() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoSaveGame::has_signature() const {
  return _internal_has_signature();
}
inline void CDemoSaveGame::clear_signature() {
  _impl_.signature_ = uint64_t{0u};
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline uint64_t CDemoSaveGame::_internal_signature() const {
  return _impl_.signature_;
}
inline uint64_t CDemoSaveGame::signature() const {
  // @@protoc_insertion_point(field_get:CDemoSaveGame.signature)
  return _internal_signature();
}
inline void CDemoSaveGame::_internal_set_signature(uint64_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.signature_ = value;
}
inline void CDemoSaveGame::set_signature(uint64_t value) {
  _internal_set_signature(value);
  // @@protoc_insertion_point(field_set:CDemoSaveGame.signature)
}

// optional int32 version = 4;
inline bool CDemoSaveGame::_internal_has_version() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CDemoSaveGame::has_version() const {
  return _internal_has_version();
}
inline void CDemoSaveGame::clear_version() {
  _impl_.version_ = 0;
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline int32_t CDemoSaveGame::_internal_version() const {
  return _impl_.version_;
}
inline int32_t CDemoSaveGame::version() const {
  // @@protoc_insertion_point(field_get:CDemoSaveGame.version)
  return _internal_version();
}
inline void CDemoSaveGame::_internal_set_version(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.version_ = value;
}
inline void CDemoSaveGame::set_version(int32_t value) {
  _internal_set_version(value);
  // @@protoc_insertion_point(field_set:CDemoSaveGame.version)
}

// -------------------------------------------------------------------

// CDemoSyncTick

// -------------------------------------------------------------------

// CDemoConsoleCmd

// optional string cmdstring = 1;
inline bool CDemoConsoleCmd::_internal_has_cmdstring() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoConsoleCmd::has_cmdstring() const {
  return _internal_has_cmdstring();
}
inline void CDemoConsoleCmd::clear_cmdstring() {
  _impl_.cmdstring_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoConsoleCmd::cmdstring() const {
  // @@protoc_insertion_point(field_get:CDemoConsoleCmd.cmdstring)
  return _internal_cmdstring();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoConsoleCmd::set_cmdstring(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.cmdstring_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoConsoleCmd.cmdstring)
}
inline std::string* CDemoConsoleCmd::mutable_cmdstring() {
  std::string* _s = _internal_mutable_cmdstring();
  // @@protoc_insertion_point(field_mutable:CDemoConsoleCmd.cmdstring)
  return _s;
}
inline const std::string& CDemoConsoleCmd::_internal_cmdstring() const {
  return _impl_.cmdstring_.Get();
}
inline void CDemoConsoleCmd::_internal_set_cmdstring(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.cmdstring_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoConsoleCmd::_internal_mutable_cmdstring() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.cmdstring_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoConsoleCmd::release_cmdstring() {
  // @@protoc_insertion_point(field_release:CDemoConsoleCmd.cmdstring)
  if (!_internal_has_cmdstring()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.cmdstring_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.cmdstring_.IsDefault()) {
    _impl_.cmdstring_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoConsoleCmd::set_allocated_cmdstring(std::string* cmdstring) {
  if (cmdstring != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.cmdstring_.SetAllocated(cmdstring, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.cmdstring_.IsDefault()) {
    _impl_.cmdstring_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoConsoleCmd.cmdstring)
}

// -------------------------------------------------------------------

// CDemoSendTables

// optional bytes data = 1;
inline bool CDemoSendTables::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoSendTables::has_data() const {
  return _internal_has_data();
}
inline void CDemoSendTables::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoSendTables::data() const {
  // @@protoc_insertion_point(field_get:CDemoSendTables.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoSendTables::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoSendTables.data)
}
inline std::string* CDemoSendTables::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoSendTables.data)
  return _s;
}
inline const std::string& CDemoSendTables::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoSendTables::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoSendTables::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoSendTables::release_data() {
  // @@protoc_insertion_point(field_release:CDemoSendTables.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoSendTables::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoSendTables.data)
}

// -------------------------------------------------------------------

// CDemoClassInfo_class_t

// optional int32 class_id = 1;
inline bool CDemoClassInfo_class_t::_internal_has_class_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoClassInfo_class_t::has_class_id() const {
  return _internal_has_class_id();
}
inline void CDemoClassInfo_class_t::clear_class_id() {
  _impl_.class_id_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline int32_t CDemoClassInfo_class_t::_internal_class_id() const {
  return _impl_.class_id_;
}
inline int32_t CDemoClassInfo_class_t::class_id() const {
  // @@protoc_insertion_point(field_get:CDemoClassInfo.class_t.class_id)
  return _internal_class_id();
}
inline void CDemoClassInfo_class_t::_internal_set_class_id(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.class_id_ = value;
}
inline void CDemoClassInfo_class_t::set_class_id(int32_t value) {
  _internal_set_class_id(value);
  // @@protoc_insertion_point(field_set:CDemoClassInfo.class_t.class_id)
}

// optional string network_name = 2;
inline bool CDemoClassInfo_class_t::_internal_has_network_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoClassInfo_class_t::has_network_name() const {
  return _internal_has_network_name();
}
inline void CDemoClassInfo_class_t::clear_network_name() {
  _impl_.network_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoClassInfo_class_t::network_name() const {
  // @@protoc_insertion_point(field_get:CDemoClassInfo.class_t.network_name)
  return _internal_network_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoClassInfo_class_t::set_network_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.network_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoClassInfo.class_t.network_name)
}
inline std::string* CDemoClassInfo_class_t::mutable_network_name() {
  std::string* _s = _internal_mutable_network_name();
  // @@protoc_insertion_point(field_mutable:CDemoClassInfo.class_t.network_name)
  return _s;
}
inline const std::string& CDemoClassInfo_class_t::_internal_network_name() const {
  return _impl_.network_name_.Get();
}
inline void CDemoClassInfo_class_t::_internal_set_network_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.network_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoClassInfo_class_t::_internal_mutable_network_name() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.network_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoClassInfo_class_t::release_network_name() {
  // @@protoc_insertion_point(field_release:CDemoClassInfo.class_t.network_name)
  if (!_internal_has_network_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.network_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.network_name_.IsDefault()) {
    _impl_.network_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoClassInfo_class_t::set_allocated_network_name(std::string* network_name) {
  if (network_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.network_name_.SetAllocated(network_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.network_name_.IsDefault()) {
    _impl_.network_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoClassInfo.class_t.network_name)
}

// optional string table_name = 3;
inline bool CDemoClassInfo_class_t::_internal_has_table_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoClassInfo_class_t::has_table_name() const {
  return _internal_has_table_name();
}
inline void CDemoClassInfo_class_t::clear_table_name() {
  _impl_.table_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& CDemoClassInfo_class_t::table_name() const {
  // @@protoc_insertion_point(field_get:CDemoClassInfo.class_t.table_name)
  return _internal_table_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoClassInfo_class_t::set_table_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000002u;
 _impl_.table_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoClassInfo.class_t.table_name)
}
inline std::string* CDemoClassInfo_class_t::mutable_table_name() {
  std::string* _s = _internal_mutable_table_name();
  // @@protoc_insertion_point(field_mutable:CDemoClassInfo.class_t.table_name)
  return _s;
}
inline const std::string& CDemoClassInfo_class_t::_internal_table_name() const {
  return _impl_.table_name_.Get();
}
inline void CDemoClassInfo_class_t::_internal_set_table_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.table_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoClassInfo_class_t::_internal_mutable_table_name() {
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.table_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoClassInfo_class_t::release_table_name() {
  // @@protoc_insertion_point(field_release:CDemoClassInfo.class_t.table_name)
  if (!_internal_has_table_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* p = _impl_.table_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.table_name_.IsDefault()) {
    _impl_.table_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoClassInfo_class_t::set_allocated_table_name(std::string* table_name) {
  if (table_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.table_name_.SetAllocated(table_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.table_name_.IsDefault()) {
    _impl_.table_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoClassInfo.class_t.table_name)
}

// -------------------------------------------------------------------

// CDemoClassInfo

// repeated .CDemoClassInfo.class_t classes = 1;
inline int CDemoClassInfo::_internal_classes_size() const {
  return _impl_.classes_.size();
}
inline int CDemoClassInfo::classes_size() const {
  return _internal_classes_size();
}
inline void CDemoClassInfo::clear_classes() {
  _impl_.classes_.Clear();
}
inline ::CDemoClassInfo_class_t* CDemoClassInfo::mutable_classes(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoClassInfo.classes)
  return _impl_.classes_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoClassInfo_class_t >*
CDemoClassInfo::mutable_classes() {
  // @@protoc_insertion_point(field_mutable_list:CDemoClassInfo.classes)
  return &_impl_.classes_;
}
inline const ::CDemoClassInfo_class_t& CDemoClassInfo::_internal_classes(int index) const {
  return _impl_.classes_.Get(index);
}
inline const ::CDemoClassInfo_class_t& CDemoClassInfo::classes(int index) const {
  // @@protoc_insertion_point(field_get:CDemoClassInfo.classes)
  return _internal_classes(index);
}
inline ::CDemoClassInfo_class_t* CDemoClassInfo::_internal_add_classes() {
  return _impl_.classes_.Add();
}
inline ::CDemoClassInfo_class_t* CDemoClassInfo::add_classes() {
  ::CDemoClassInfo_class_t* _add = _internal_add_classes();
  // @@protoc_insertion_point(field_add:CDemoClassInfo.classes)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoClassInfo_class_t >&
CDemoClassInfo::classes() const {
  // @@protoc_insertion_point(field_list:CDemoClassInfo.classes)
  return _impl_.classes_;
}

// -------------------------------------------------------------------

// CDemoCustomData

// optional int32 callback_index = 1;
inline bool CDemoCustomData::_internal_has_callback_index() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoCustomData::has_callback_index() const {
  return _internal_has_callback_index();
}
inline void CDemoCustomData::clear_callback_index() {
  _impl_.callback_index_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t CDemoCustomData::_internal_callback_index() const {
  return _impl_.callback_index_;
}
inline int32_t CDemoCustomData::callback_index() const {
  // @@protoc_insertion_point(field_get:CDemoCustomData.callback_index)
  return _internal_callback_index();
}
inline void CDemoCustomData::_internal_set_callback_index(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.callback_index_ = value;
}
inline void CDemoCustomData::set_callback_index(int32_t value) {
  _internal_set_callback_index(value);
  // @@protoc_insertion_point(field_set:CDemoCustomData.callback_index)
}

// optional bytes data = 2;
inline bool CDemoCustomData::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoCustomData::has_data() const {
  return _internal_has_data();
}
inline void CDemoCustomData::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoCustomData::data() const {
  // @@protoc_insertion_point(field_get:CDemoCustomData.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoCustomData::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoCustomData.data)
}
inline std::string* CDemoCustomData::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoCustomData.data)
  return _s;
}
inline const std::string& CDemoCustomData::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoCustomData::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoCustomData::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoCustomData::release_data() {
  // @@protoc_insertion_point(field_release:CDemoCustomData.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoCustomData::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoCustomData.data)
}

// -------------------------------------------------------------------

// CDemoCustomDataCallbacks

// repeated string save_id = 1;
inline int CDemoCustomDataCallbacks::_internal_save_id_size() const {
  return _impl_.save_id_.size();
}
inline int CDemoCustomDataCallbacks::save_id_size() const {
  return _internal_save_id_size();
}
inline void CDemoCustomDataCallbacks::clear_save_id() {
  _impl_.save_id_.Clear();
}
inline std::string* CDemoCustomDataCallbacks::add_save_id() {
  std::string* _s = _internal_add_save_id();
  // @@protoc_insertion_point(field_add_mutable:CDemoCustomDataCallbacks.save_id)
  return _s;
}
inline const std::string& CDemoCustomDataCallbacks::_internal_save_id(int index) const {
  return _impl_.save_id_.Get(index);
}
inline const std::string& CDemoCustomDataCallbacks::save_id(int index) const {
  // @@protoc_insertion_point(field_get:CDemoCustomDataCallbacks.save_id)
  return _internal_save_id(index);
}
inline std::string* CDemoCustomDataCallbacks::mutable_save_id(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoCustomDataCallbacks.save_id)
  return _impl_.save_id_.Mutable(index);
}
inline void CDemoCustomDataCallbacks::set_save_id(int index, const std::string& value) {
  _impl_.save_id_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::set_save_id(int index, std::string&& value) {
  _impl_.save_id_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::set_save_id(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.save_id_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::set_save_id(int index, const char* value, size_t size) {
  _impl_.save_id_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:CDemoCustomDataCallbacks.save_id)
}
inline std::string* CDemoCustomDataCallbacks::_internal_add_save_id() {
  return _impl_.save_id_.Add();
}
inline void CDemoCustomDataCallbacks::add_save_id(const std::string& value) {
  _impl_.save_id_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::add_save_id(std::string&& value) {
  _impl_.save_id_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::add_save_id(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.save_id_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:CDemoCustomDataCallbacks.save_id)
}
inline void CDemoCustomDataCallbacks::add_save_id(const char* value, size_t size) {
  _impl_.save_id_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:CDemoCustomDataCallbacks.save_id)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
CDemoCustomDataCallbacks::save_id() const {
  // @@protoc_insertion_point(field_list:CDemoCustomDataCallbacks.save_id)
  return _impl_.save_id_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
CDemoCustomDataCallbacks::mutable_save_id() {
  // @@protoc_insertion_point(field_mutable_list:CDemoCustomDataCallbacks.save_id)
  return &_impl_.save_id_;
}

// -------------------------------------------------------------------

// CDemoAnimationHeader

// optional sint32 entity_id = 1;
inline bool CDemoAnimationHeader::_internal_has_entity_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoAnimationHeader::has_entity_id() const {
  return _internal_has_entity_id();
}
inline void CDemoAnimationHeader::clear_entity_id() {
  _impl_.entity_id_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t CDemoAnimationHeader::_internal_entity_id() const {
  return _impl_.entity_id_;
}
inline int32_t CDemoAnimationHeader::entity_id() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationHeader.entity_id)
  return _internal_entity_id();
}
inline void CDemoAnimationHeader::_internal_set_entity_id(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.entity_id_ = value;
}
inline void CDemoAnimationHeader::set_entity_id(int32_t value) {
  _internal_set_entity_id(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationHeader.entity_id)
}

// optional int32 tick = 2;
inline bool CDemoAnimationHeader::_internal_has_tick() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoAnimationHeader::has_tick() const {
  return _internal_has_tick();
}
inline void CDemoAnimationHeader::clear_tick() {
  _impl_.tick_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline int32_t CDemoAnimationHeader::_internal_tick() const {
  return _impl_.tick_;
}
inline int32_t CDemoAnimationHeader::tick() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationHeader.tick)
  return _internal_tick();
}
inline void CDemoAnimationHeader::_internal_set_tick(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.tick_ = value;
}
inline void CDemoAnimationHeader::set_tick(int32_t value) {
  _internal_set_tick(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationHeader.tick)
}

// optional bytes data = 3;
inline bool CDemoAnimationHeader::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoAnimationHeader::has_data() const {
  return _internal_has_data();
}
inline void CDemoAnimationHeader::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoAnimationHeader::data() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationHeader.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoAnimationHeader::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoAnimationHeader.data)
}
inline std::string* CDemoAnimationHeader::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoAnimationHeader.data)
  return _s;
}
inline const std::string& CDemoAnimationHeader::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoAnimationHeader::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoAnimationHeader::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoAnimationHeader::release_data() {
  // @@protoc_insertion_point(field_release:CDemoAnimationHeader.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoAnimationHeader::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoAnimationHeader.data)
}

// -------------------------------------------------------------------

// CDemoAnimationData

// optional sint32 entity_id = 1;
inline bool CDemoAnimationData::_internal_has_entity_id() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoAnimationData::has_entity_id() const {
  return _internal_has_entity_id();
}
inline void CDemoAnimationData::clear_entity_id() {
  _impl_.entity_id_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t CDemoAnimationData::_internal_entity_id() const {
  return _impl_.entity_id_;
}
inline int32_t CDemoAnimationData::entity_id() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationData.entity_id)
  return _internal_entity_id();
}
inline void CDemoAnimationData::_internal_set_entity_id(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.entity_id_ = value;
}
inline void CDemoAnimationData::set_entity_id(int32_t value) {
  _internal_set_entity_id(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationData.entity_id)
}

// optional int32 start_tick = 2;
inline bool CDemoAnimationData::_internal_has_start_tick() const {
  bool value = (_impl_._has_bits_[0] & 0x00000004u) != 0;
  return value;
}
inline bool CDemoAnimationData::has_start_tick() const {
  return _internal_has_start_tick();
}
inline void CDemoAnimationData::clear_start_tick() {
  _impl_.start_tick_ = 0;
  _impl_._has_bits_[0] &= ~0x00000004u;
}
inline int32_t CDemoAnimationData::_internal_start_tick() const {
  return _impl_.start_tick_;
}
inline int32_t CDemoAnimationData::start_tick() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationData.start_tick)
  return _internal_start_tick();
}
inline void CDemoAnimationData::_internal_set_start_tick(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000004u;
  _impl_.start_tick_ = value;
}
inline void CDemoAnimationData::set_start_tick(int32_t value) {
  _internal_set_start_tick(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationData.start_tick)
}

// optional int32 end_tick = 3;
inline bool CDemoAnimationData::_internal_has_end_tick() const {
  bool value = (_impl_._has_bits_[0] & 0x00000010u) != 0;
  return value;
}
inline bool CDemoAnimationData::has_end_tick() const {
  return _internal_has_end_tick();
}
inline void CDemoAnimationData::clear_end_tick() {
  _impl_.end_tick_ = 0;
  _impl_._has_bits_[0] &= ~0x00000010u;
}
inline int32_t CDemoAnimationData::_internal_end_tick() const {
  return _impl_.end_tick_;
}
inline int32_t CDemoAnimationData::end_tick() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationData.end_tick)
  return _internal_end_tick();
}
inline void CDemoAnimationData::_internal_set_end_tick(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000010u;
  _impl_.end_tick_ = value;
}
inline void CDemoAnimationData::set_end_tick(int32_t value) {
  _internal_set_end_tick(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationData.end_tick)
}

// optional bytes data = 4;
inline bool CDemoAnimationData::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoAnimationData::has_data() const {
  return _internal_has_data();
}
inline void CDemoAnimationData::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoAnimationData::data() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationData.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoAnimationData::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoAnimationData.data)
}
inline std::string* CDemoAnimationData::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoAnimationData.data)
  return _s;
}
inline const std::string& CDemoAnimationData::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoAnimationData::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoAnimationData::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoAnimationData::release_data() {
  // @@protoc_insertion_point(field_release:CDemoAnimationData.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoAnimationData::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoAnimationData.data)
}

// optional int64 data_checksum = 5;
inline bool CDemoAnimationData::_internal_has_data_checksum() const {
  bool value = (_impl_._has_bits_[0] & 0x00000008u) != 0;
  return value;
}
inline bool CDemoAnimationData::has_data_checksum() const {
  return _internal_has_data_checksum();
}
inline void CDemoAnimationData::clear_data_checksum() {
  _impl_.data_checksum_ = int64_t{0};
  _impl_._has_bits_[0] &= ~0x00000008u;
}
inline int64_t CDemoAnimationData::_internal_data_checksum() const {
  return _impl_.data_checksum_;
}
inline int64_t CDemoAnimationData::data_checksum() const {
  // @@protoc_insertion_point(field_get:CDemoAnimationData.data_checksum)
  return _internal_data_checksum();
}
inline void CDemoAnimationData::_internal_set_data_checksum(int64_t value) {
  _impl_._has_bits_[0] |= 0x00000008u;
  _impl_.data_checksum_ = value;
}
inline void CDemoAnimationData::set_data_checksum(int64_t value) {
  _internal_set_data_checksum(value);
  // @@protoc_insertion_point(field_set:CDemoAnimationData.data_checksum)
}

// -------------------------------------------------------------------

// CDemoStringTables_items_t

// optional string str = 1;
inline bool CDemoStringTables_items_t::_internal_has_str() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoStringTables_items_t::has_str() const {
  return _internal_has_str();
}
inline void CDemoStringTables_items_t::clear_str() {
  _impl_.str_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoStringTables_items_t::str() const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.items_t.str)
  return _internal_str();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoStringTables_items_t::set_str(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.str_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoStringTables.items_t.str)
}
inline std::string* CDemoStringTables_items_t::mutable_str() {
  std::string* _s = _internal_mutable_str();
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.items_t.str)
  return _s;
}
inline const std::string& CDemoStringTables_items_t::_internal_str() const {
  return _impl_.str_.Get();
}
inline void CDemoStringTables_items_t::_internal_set_str(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.str_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoStringTables_items_t::_internal_mutable_str() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.str_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoStringTables_items_t::release_str() {
  // @@protoc_insertion_point(field_release:CDemoStringTables.items_t.str)
  if (!_internal_has_str()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.str_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.str_.IsDefault()) {
    _impl_.str_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoStringTables_items_t::set_allocated_str(std::string* str) {
  if (str != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.str_.SetAllocated(str, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.str_.IsDefault()) {
    _impl_.str_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoStringTables.items_t.str)
}

// optional bytes data = 2;
inline bool CDemoStringTables_items_t::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoStringTables_items_t::has_data() const {
  return _internal_has_data();
}
inline void CDemoStringTables_items_t::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const std::string& CDemoStringTables_items_t::data() const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.items_t.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoStringTables_items_t::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000002u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoStringTables.items_t.data)
}
inline std::string* CDemoStringTables_items_t::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.items_t.data)
  return _s;
}
inline const std::string& CDemoStringTables_items_t::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoStringTables_items_t::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoStringTables_items_t::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000002u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoStringTables_items_t::release_data() {
  // @@protoc_insertion_point(field_release:CDemoStringTables.items_t.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000002u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoStringTables_items_t::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoStringTables.items_t.data)
}

// -------------------------------------------------------------------

// CDemoStringTables_table_t

// optional string table_name = 1;
inline bool CDemoStringTables_table_t::_internal_has_table_name() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoStringTables_table_t::has_table_name() const {
  return _internal_has_table_name();
}
inline void CDemoStringTables_table_t::clear_table_name() {
  _impl_.table_name_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoStringTables_table_t::table_name() const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.table_t.table_name)
  return _internal_table_name();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoStringTables_table_t::set_table_name(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.table_name_.Set(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoStringTables.table_t.table_name)
}
inline std::string* CDemoStringTables_table_t::mutable_table_name() {
  std::string* _s = _internal_mutable_table_name();
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.table_t.table_name)
  return _s;
}
inline const std::string& CDemoStringTables_table_t::_internal_table_name() const {
  return _impl_.table_name_.Get();
}
inline void CDemoStringTables_table_t::_internal_set_table_name(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.table_name_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoStringTables_table_t::_internal_mutable_table_name() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.table_name_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoStringTables_table_t::release_table_name() {
  // @@protoc_insertion_point(field_release:CDemoStringTables.table_t.table_name)
  if (!_internal_has_table_name()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.table_name_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.table_name_.IsDefault()) {
    _impl_.table_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoStringTables_table_t::set_allocated_table_name(std::string* table_name) {
  if (table_name != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.table_name_.SetAllocated(table_name, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.table_name_.IsDefault()) {
    _impl_.table_name_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoStringTables.table_t.table_name)
}

// repeated .CDemoStringTables.items_t items = 2;
inline int CDemoStringTables_table_t::_internal_items_size() const {
  return _impl_.items_.size();
}
inline int CDemoStringTables_table_t::items_size() const {
  return _internal_items_size();
}
inline void CDemoStringTables_table_t::clear_items() {
  _impl_.items_.Clear();
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::mutable_items(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.table_t.items)
  return _impl_.items_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >*
CDemoStringTables_table_t::mutable_items() {
  // @@protoc_insertion_point(field_mutable_list:CDemoStringTables.table_t.items)
  return &_impl_.items_;
}
inline const ::CDemoStringTables_items_t& CDemoStringTables_table_t::_internal_items(int index) const {
  return _impl_.items_.Get(index);
}
inline const ::CDemoStringTables_items_t& CDemoStringTables_table_t::items(int index) const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.table_t.items)
  return _internal_items(index);
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::_internal_add_items() {
  return _impl_.items_.Add();
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::add_items() {
  ::CDemoStringTables_items_t* _add = _internal_add_items();
  // @@protoc_insertion_point(field_add:CDemoStringTables.table_t.items)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >&
CDemoStringTables_table_t::items() const {
  // @@protoc_insertion_point(field_list:CDemoStringTables.table_t.items)
  return _impl_.items_;
}

// repeated .CDemoStringTables.items_t items_clientside = 3;
inline int CDemoStringTables_table_t::_internal_items_clientside_size() const {
  return _impl_.items_clientside_.size();
}
inline int CDemoStringTables_table_t::items_clientside_size() const {
  return _internal_items_clientside_size();
}
inline void CDemoStringTables_table_t::clear_items_clientside() {
  _impl_.items_clientside_.Clear();
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::mutable_items_clientside(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.table_t.items_clientside)
  return _impl_.items_clientside_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >*
CDemoStringTables_table_t::mutable_items_clientside() {
  // @@protoc_insertion_point(field_mutable_list:CDemoStringTables.table_t.items_clientside)
  return &_impl_.items_clientside_;
}
inline const ::CDemoStringTables_items_t& CDemoStringTables_table_t::_internal_items_clientside(int index) const {
  return _impl_.items_clientside_.Get(index);
}
inline const ::CDemoStringTables_items_t& CDemoStringTables_table_t::items_clientside(int index) const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.table_t.items_clientside)
  return _internal_items_clientside(index);
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::_internal_add_items_clientside() {
  return _impl_.items_clientside_.Add();
}
inline ::CDemoStringTables_items_t* CDemoStringTables_table_t::add_items_clientside() {
  ::CDemoStringTables_items_t* _add = _internal_add_items_clientside();
  // @@protoc_insertion_point(field_add:CDemoStringTables.table_t.items_clientside)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_items_t >&
CDemoStringTables_table_t::items_clientside() const {
  // @@protoc_insertion_point(field_list:CDemoStringTables.table_t.items_clientside)
  return _impl_.items_clientside_;
}

// optional int32 table_flags = 4;
inline bool CDemoStringTables_table_t::_internal_has_table_flags() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoStringTables_table_t::has_table_flags() const {
  return _internal_has_table_flags();
}
inline void CDemoStringTables_table_t::clear_table_flags() {
  _impl_.table_flags_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t CDemoStringTables_table_t::_internal_table_flags() const {
  return _impl_.table_flags_;
}
inline int32_t CDemoStringTables_table_t::table_flags() const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.table_t.table_flags)
  return _internal_table_flags();
}
inline void CDemoStringTables_table_t::_internal_set_table_flags(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.table_flags_ = value;
}
inline void CDemoStringTables_table_t::set_table_flags(int32_t value) {
  _internal_set_table_flags(value);
  // @@protoc_insertion_point(field_set:CDemoStringTables.table_t.table_flags)
}

// -------------------------------------------------------------------

// CDemoStringTables

// repeated .CDemoStringTables.table_t tables = 1;
inline int CDemoStringTables::_internal_tables_size() const {
  return _impl_.tables_.size();
}
inline int CDemoStringTables::tables_size() const {
  return _internal_tables_size();
}
inline void CDemoStringTables::clear_tables() {
  _impl_.tables_.Clear();
}
inline ::CDemoStringTables_table_t* CDemoStringTables::mutable_tables(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoStringTables.tables)
  return _impl_.tables_.Mutable(index);
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_table_t >*
CDemoStringTables::mutable_tables() {
  // @@protoc_insertion_point(field_mutable_list:CDemoStringTables.tables)
  return &_impl_.tables_;
}
inline const ::CDemoStringTables_table_t& CDemoStringTables::_internal_tables(int index) const {
  return _impl_.tables_.Get(index);
}
inline const ::CDemoStringTables_table_t& CDemoStringTables::tables(int index) const {
  // @@protoc_insertion_point(field_get:CDemoStringTables.tables)
  return _internal_tables(index);
}
inline ::CDemoStringTables_table_t* CDemoStringTables::_internal_add_tables() {
  return _impl_.tables_.Add();
}
inline ::CDemoStringTables_table_t* CDemoStringTables::add_tables() {
  ::CDemoStringTables_table_t* _add = _internal_add_tables();
  // @@protoc_insertion_point(field_add:CDemoStringTables.tables)
  return _add;
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField< ::CDemoStringTables_table_t >&
CDemoStringTables::tables() const {
  // @@protoc_insertion_point(field_list:CDemoStringTables.tables)
  return _impl_.tables_;
}

// -------------------------------------------------------------------

// CDemoStop

// -------------------------------------------------------------------

// CDemoUserCmd

// optional int32 cmd_number = 1;
inline bool CDemoUserCmd::_internal_has_cmd_number() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoUserCmd::has_cmd_number() const {
  return _internal_has_cmd_number();
}
inline void CDemoUserCmd::clear_cmd_number() {
  _impl_.cmd_number_ = 0;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline int32_t CDemoUserCmd::_internal_cmd_number() const {
  return _impl_.cmd_number_;
}
inline int32_t CDemoUserCmd::cmd_number() const {
  // @@protoc_insertion_point(field_get:CDemoUserCmd.cmd_number)
  return _internal_cmd_number();
}
inline void CDemoUserCmd::_internal_set_cmd_number(int32_t value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.cmd_number_ = value;
}
inline void CDemoUserCmd::set_cmd_number(int32_t value) {
  _internal_set_cmd_number(value);
  // @@protoc_insertion_point(field_set:CDemoUserCmd.cmd_number)
}

// optional bytes data = 2;
inline bool CDemoUserCmd::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoUserCmd::has_data() const {
  return _internal_has_data();
}
inline void CDemoUserCmd::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoUserCmd::data() const {
  // @@protoc_insertion_point(field_get:CDemoUserCmd.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoUserCmd::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoUserCmd.data)
}
inline std::string* CDemoUserCmd::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoUserCmd.data)
  return _s;
}
inline const std::string& CDemoUserCmd::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoUserCmd::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoUserCmd::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoUserCmd::release_data() {
  // @@protoc_insertion_point(field_release:CDemoUserCmd.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoUserCmd::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoUserCmd.data)
}

// -------------------------------------------------------------------

// CDemoSpawnGroups

// repeated bytes msgs = 3;
inline int CDemoSpawnGroups::_internal_msgs_size() const {
  return _impl_.msgs_.size();
}
inline int CDemoSpawnGroups::msgs_size() const {
  return _internal_msgs_size();
}
inline void CDemoSpawnGroups::clear_msgs() {
  _impl_.msgs_.Clear();
}
inline std::string* CDemoSpawnGroups::add_msgs() {
  std::string* _s = _internal_add_msgs();
  // @@protoc_insertion_point(field_add_mutable:CDemoSpawnGroups.msgs)
  return _s;
}
inline const std::string& CDemoSpawnGroups::_internal_msgs(int index) const {
  return _impl_.msgs_.Get(index);
}
inline const std::string& CDemoSpawnGroups::msgs(int index) const {
  // @@protoc_insertion_point(field_get:CDemoSpawnGroups.msgs)
  return _internal_msgs(index);
}
inline std::string* CDemoSpawnGroups::mutable_msgs(int index) {
  // @@protoc_insertion_point(field_mutable:CDemoSpawnGroups.msgs)
  return _impl_.msgs_.Mutable(index);
}
inline void CDemoSpawnGroups::set_msgs(int index, const std::string& value) {
  _impl_.msgs_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::set_msgs(int index, std::string&& value) {
  _impl_.msgs_.Mutable(index)->assign(std::move(value));
  // @@protoc_insertion_point(field_set:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::set_msgs(int index, const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.msgs_.Mutable(index)->assign(value);
  // @@protoc_insertion_point(field_set_char:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::set_msgs(int index, const void* value, size_t size) {
  _impl_.msgs_.Mutable(index)->assign(
    reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_set_pointer:CDemoSpawnGroups.msgs)
}
inline std::string* CDemoSpawnGroups::_internal_add_msgs() {
  return _impl_.msgs_.Add();
}
inline void CDemoSpawnGroups::add_msgs(const std::string& value) {
  _impl_.msgs_.Add()->assign(value);
  // @@protoc_insertion_point(field_add:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::add_msgs(std::string&& value) {
  _impl_.msgs_.Add(std::move(value));
  // @@protoc_insertion_point(field_add:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::add_msgs(const char* value) {
  GOOGLE_DCHECK(value != nullptr);
  _impl_.msgs_.Add()->assign(value);
  // @@protoc_insertion_point(field_add_char:CDemoSpawnGroups.msgs)
}
inline void CDemoSpawnGroups::add_msgs(const void* value, size_t size) {
  _impl_.msgs_.Add()->assign(reinterpret_cast<const char*>(value), size);
  // @@protoc_insertion_point(field_add_pointer:CDemoSpawnGroups.msgs)
}
inline const ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>&
CDemoSpawnGroups::msgs() const {
  // @@protoc_insertion_point(field_list:CDemoSpawnGroups.msgs)
  return _impl_.msgs_;
}
inline ::PROTOBUF_NAMESPACE_ID::RepeatedPtrField<std::string>*
CDemoSpawnGroups::mutable_msgs() {
  // @@protoc_insertion_point(field_mutable_list:CDemoSpawnGroups.msgs)
  return &_impl_.msgs_;
}

// -------------------------------------------------------------------

// CDemoSpawnGroupsHLTVBroadcast

// optional bytes data = 1;
inline bool CDemoSpawnGroupsHLTVBroadcast::_internal_has_data() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoSpawnGroupsHLTVBroadcast::has_data() const {
  return _internal_has_data();
}
inline void CDemoSpawnGroupsHLTVBroadcast::clear_data() {
  _impl_.data_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoSpawnGroupsHLTVBroadcast::data() const {
  // @@protoc_insertion_point(field_get:CDemoSpawnGroupsHLTVBroadcast.data)
  return _internal_data();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoSpawnGroupsHLTVBroadcast::set_data(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.data_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoSpawnGroupsHLTVBroadcast.data)
}
inline std::string* CDemoSpawnGroupsHLTVBroadcast::mutable_data() {
  std::string* _s = _internal_mutable_data();
  // @@protoc_insertion_point(field_mutable:CDemoSpawnGroupsHLTVBroadcast.data)
  return _s;
}
inline const std::string& CDemoSpawnGroupsHLTVBroadcast::_internal_data() const {
  return _impl_.data_.Get();
}
inline void CDemoSpawnGroupsHLTVBroadcast::_internal_set_data(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.data_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoSpawnGroupsHLTVBroadcast::_internal_mutable_data() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.data_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoSpawnGroupsHLTVBroadcast::release_data() {
  // @@protoc_insertion_point(field_release:CDemoSpawnGroupsHLTVBroadcast.data)
  if (!_internal_has_data()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.data_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoSpawnGroupsHLTVBroadcast::set_allocated_data(std::string* data) {
  if (data != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.data_.SetAllocated(data, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.data_.IsDefault()) {
    _impl_.data_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoSpawnGroupsHLTVBroadcast.data)
}

// -------------------------------------------------------------------

// CDemoRecovery_DemoInitialSpawnGroupEntry

// optional uint32 spawngrouphandle = 1;
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_has_spawngrouphandle() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::has_spawngrouphandle() const {
  return _internal_has_spawngrouphandle();
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::clear_spawngrouphandle() {
  _impl_.spawngrouphandle_ = 0u;
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline uint32_t CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_spawngrouphandle() const {
  return _impl_.spawngrouphandle_;
}
inline uint32_t CDemoRecovery_DemoInitialSpawnGroupEntry::spawngrouphandle() const {
  // @@protoc_insertion_point(field_get:CDemoRecovery.DemoInitialSpawnGroupEntry.spawngrouphandle)
  return _internal_spawngrouphandle();
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_set_spawngrouphandle(uint32_t value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.spawngrouphandle_ = value;
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::set_spawngrouphandle(uint32_t value) {
  _internal_set_spawngrouphandle(value);
  // @@protoc_insertion_point(field_set:CDemoRecovery.DemoInitialSpawnGroupEntry.spawngrouphandle)
}

// optional bool was_created = 2;
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_has_was_created() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  return value;
}
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::has_was_created() const {
  return _internal_has_was_created();
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::clear_was_created() {
  _impl_.was_created_ = false;
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_was_created() const {
  return _impl_.was_created_;
}
inline bool CDemoRecovery_DemoInitialSpawnGroupEntry::was_created() const {
  // @@protoc_insertion_point(field_get:CDemoRecovery.DemoInitialSpawnGroupEntry.was_created)
  return _internal_was_created();
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::_internal_set_was_created(bool value) {
  _impl_._has_bits_[0] |= 0x00000002u;
  _impl_.was_created_ = value;
}
inline void CDemoRecovery_DemoInitialSpawnGroupEntry::set_was_created(bool value) {
  _internal_set_was_created(value);
  // @@protoc_insertion_point(field_set:CDemoRecovery.DemoInitialSpawnGroupEntry.was_created)
}

// -------------------------------------------------------------------

// CDemoRecovery

// optional .CDemoRecovery.DemoInitialSpawnGroupEntry initial_spawn_group = 1;
inline bool CDemoRecovery::_internal_has_initial_spawn_group() const {
  bool value = (_impl_._has_bits_[0] & 0x00000002u) != 0;
  PROTOBUF_ASSUME(!value || _impl_.initial_spawn_group_ != nullptr);
  return value;
}
inline bool CDemoRecovery::has_initial_spawn_group() const {
  return _internal_has_initial_spawn_group();
}
inline void CDemoRecovery::clear_initial_spawn_group() {
  if (_impl_.initial_spawn_group_ != nullptr) _impl_.initial_spawn_group_->Clear();
  _impl_._has_bits_[0] &= ~0x00000002u;
}
inline const ::CDemoRecovery_DemoInitialSpawnGroupEntry& CDemoRecovery::_internal_initial_spawn_group() const {
  const ::CDemoRecovery_DemoInitialSpawnGroupEntry* p = _impl_.initial_spawn_group_;
  return p != nullptr ? *p : reinterpret_cast<const ::CDemoRecovery_DemoInitialSpawnGroupEntry&>(
      ::_CDemoRecovery_DemoInitialSpawnGroupEntry_default_instance_);
}
inline const ::CDemoRecovery_DemoInitialSpawnGroupEntry& CDemoRecovery::initial_spawn_group() const {
  // @@protoc_insertion_point(field_get:CDemoRecovery.initial_spawn_group)
  return _internal_initial_spawn_group();
}
inline void CDemoRecovery::unsafe_arena_set_allocated_initial_spawn_group(
    ::CDemoRecovery_DemoInitialSpawnGroupEntry* initial_spawn_group) {
  if (GetArenaForAllocation() == nullptr) {
    delete reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(_impl_.initial_spawn_group_);
  }
  _impl_.initial_spawn_group_ = initial_spawn_group;
  if (initial_spawn_group) {
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  // @@protoc_insertion_point(field_unsafe_arena_set_allocated:CDemoRecovery.initial_spawn_group)
}
inline ::CDemoRecovery_DemoInitialSpawnGroupEntry* CDemoRecovery::release_initial_spawn_group() {
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* temp = _impl_.initial_spawn_group_;
  _impl_.initial_spawn_group_ = nullptr;
#ifdef PROTOBUF_FORCE_COPY_IN_RELEASE
  auto* old =  reinterpret_cast<::PROTOBUF_NAMESPACE_ID::MessageLite*>(temp);
  temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  if (GetArenaForAllocation() == nullptr) { delete old; }
#else  // PROTOBUF_FORCE_COPY_IN_RELEASE
  if (GetArenaForAllocation() != nullptr) {
    temp = ::PROTOBUF_NAMESPACE_ID::internal::DuplicateIfNonNull(temp);
  }
#endif  // !PROTOBUF_FORCE_COPY_IN_RELEASE
  return temp;
}
inline ::CDemoRecovery_DemoInitialSpawnGroupEntry* CDemoRecovery::unsafe_arena_release_initial_spawn_group() {
  // @@protoc_insertion_point(field_release:CDemoRecovery.initial_spawn_group)
  _impl_._has_bits_[0] &= ~0x00000002u;
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* temp = _impl_.initial_spawn_group_;
  _impl_.initial_spawn_group_ = nullptr;
  return temp;
}
inline ::CDemoRecovery_DemoInitialSpawnGroupEntry* CDemoRecovery::_internal_mutable_initial_spawn_group() {
  _impl_._has_bits_[0] |= 0x00000002u;
  if (_impl_.initial_spawn_group_ == nullptr) {
    auto* p = CreateMaybeMessage<::CDemoRecovery_DemoInitialSpawnGroupEntry>(GetArenaForAllocation());
    _impl_.initial_spawn_group_ = p;
  }
  return _impl_.initial_spawn_group_;
}
inline ::CDemoRecovery_DemoInitialSpawnGroupEntry* CDemoRecovery::mutable_initial_spawn_group() {
  ::CDemoRecovery_DemoInitialSpawnGroupEntry* _msg = _internal_mutable_initial_spawn_group();
  // @@protoc_insertion_point(field_mutable:CDemoRecovery.initial_spawn_group)
  return _msg;
}
inline void CDemoRecovery::set_allocated_initial_spawn_group(::CDemoRecovery_DemoInitialSpawnGroupEntry* initial_spawn_group) {
  ::PROTOBUF_NAMESPACE_ID::Arena* message_arena = GetArenaForAllocation();
  if (message_arena == nullptr) {
    delete _impl_.initial_spawn_group_;
  }
  if (initial_spawn_group) {
    ::PROTOBUF_NAMESPACE_ID::Arena* submessage_arena =
        ::PROTOBUF_NAMESPACE_ID::Arena::InternalGetOwningArena(initial_spawn_group);
    if (message_arena != submessage_arena) {
      initial_spawn_group = ::PROTOBUF_NAMESPACE_ID::internal::GetOwnedMessage(
          message_arena, initial_spawn_group, submessage_arena);
    }
    _impl_._has_bits_[0] |= 0x00000002u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000002u;
  }
  _impl_.initial_spawn_group_ = initial_spawn_group;
  // @@protoc_insertion_point(field_set_allocated:CDemoRecovery.initial_spawn_group)
}

// optional bytes spawn_group_message = 2;
inline bool CDemoRecovery::_internal_has_spawn_group_message() const {
  bool value = (_impl_._has_bits_[0] & 0x00000001u) != 0;
  return value;
}
inline bool CDemoRecovery::has_spawn_group_message() const {
  return _internal_has_spawn_group_message();
}
inline void CDemoRecovery::clear_spawn_group_message() {
  _impl_.spawn_group_message_.ClearToEmpty();
  _impl_._has_bits_[0] &= ~0x00000001u;
}
inline const std::string& CDemoRecovery::spawn_group_message() const {
  // @@protoc_insertion_point(field_get:CDemoRecovery.spawn_group_message)
  return _internal_spawn_group_message();
}
template <typename ArgT0, typename... ArgT>
inline PROTOBUF_ALWAYS_INLINE
void CDemoRecovery::set_spawn_group_message(ArgT0&& arg0, ArgT... args) {
 _impl_._has_bits_[0] |= 0x00000001u;
 _impl_.spawn_group_message_.SetBytes(static_cast<ArgT0 &&>(arg0), args..., GetArenaForAllocation());
  // @@protoc_insertion_point(field_set:CDemoRecovery.spawn_group_message)
}
inline std::string* CDemoRecovery::mutable_spawn_group_message() {
  std::string* _s = _internal_mutable_spawn_group_message();
  // @@protoc_insertion_point(field_mutable:CDemoRecovery.spawn_group_message)
  return _s;
}
inline const std::string& CDemoRecovery::_internal_spawn_group_message() const {
  return _impl_.spawn_group_message_.Get();
}
inline void CDemoRecovery::_internal_set_spawn_group_message(const std::string& value) {
  _impl_._has_bits_[0] |= 0x00000001u;
  _impl_.spawn_group_message_.Set(value, GetArenaForAllocation());
}
inline std::string* CDemoRecovery::_internal_mutable_spawn_group_message() {
  _impl_._has_bits_[0] |= 0x00000001u;
  return _impl_.spawn_group_message_.Mutable(GetArenaForAllocation());
}
inline std::string* CDemoRecovery::release_spawn_group_message() {
  // @@protoc_insertion_point(field_release:CDemoRecovery.spawn_group_message)
  if (!_internal_has_spawn_group_message()) {
    return nullptr;
  }
  _impl_._has_bits_[0] &= ~0x00000001u;
  auto* p = _impl_.spawn_group_message_.Release();
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.spawn_group_message_.IsDefault()) {
    _impl_.spawn_group_message_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  return p;
}
inline void CDemoRecovery::set_allocated_spawn_group_message(std::string* spawn_group_message) {
  if (spawn_group_message != nullptr) {
    _impl_._has_bits_[0] |= 0x00000001u;
  } else {
    _impl_._has_bits_[0] &= ~0x00000001u;
  }
  _impl_.spawn_group_message_.SetAllocated(spawn_group_message, GetArenaForAllocation());
#ifdef PROTOBUF_FORCE_COPY_DEFAULT_STRING
  if (_impl_.spawn_group_message_.IsDefault()) {
    _impl_.spawn_group_message_.Set("", GetArenaForAllocation());
  }
#endif // PROTOBUF_FORCE_COPY_DEFAULT_STRING
  // @@protoc_insertion_point(field_set_allocated:CDemoRecovery.spawn_group_message)
}

#ifdef __GNUC__
  #pragma GCC diagnostic pop
#endif  // __GNUC__
// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------

// -------------------------------------------------------------------


// @@protoc_insertion_point(namespace_scope)


PROTOBUF_NAMESPACE_OPEN

template <> struct is_proto_enum< ::EDemoCommands> : ::std::true_type {};
template <>
inline const EnumDescriptor* GetEnumDescriptor< ::EDemoCommands>() {
  return ::EDemoCommands_descriptor();
}

PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

#include <google/protobuf/port_undef.inc>
#endif  // GOOGLE_PROTOBUF_INCLUDED_GOOGLE_PROTOBUF_INCLUDED_demo_2eproto
