// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: client/v3beta/dto/group/model/group_model.proto

#include "client/v3beta/dto/group/model/group_model.pb.h"

#include <algorithm>

#include <herogoogle/protobuf/io/coded_stream.h>
#include <herogoogle/protobuf/extension_set.h>
#include <herogoogle/protobuf/wire_format_lite.h>
#include <herogoogle/protobuf/descriptor.h>
#include <herogoogle/protobuf/generated_message_reflection.h>
#include <herogoogle/protobuf/reflection_ops.h>
#include <herogoogle/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)


PROTOBUF_PRAGMA_INIT_SEG
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace group {
namespace model {
constexpr GroupKey::GroupKey(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : serverid_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , customid_(&::herogoogle::protobuf::internal::fixed_address_empty_string){}
struct GroupKeyDefaultTypeInternal {
  constexpr GroupKeyDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GroupKeyDefaultTypeInternal() {}
  union {
    GroupKey _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GroupKeyDefaultTypeInternal _GroupKey_default_instance_;
constexpr Group_ExtraEntry_DoNotUse::Group_ExtraEntry_DoNotUse(
  ::herogoogle::protobuf::internal::ConstantInitialized){}
struct Group_ExtraEntry_DoNotUseDefaultTypeInternal {
  constexpr Group_ExtraEntry_DoNotUseDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~Group_ExtraEntry_DoNotUseDefaultTypeInternal() {}
  union {
    Group_ExtraEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT Group_ExtraEntry_DoNotUseDefaultTypeInternal _Group_ExtraEntry_DoNotUse_default_instance_;
constexpr Group::Group(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : extra_(::herogoogle::protobuf::internal::ConstantInitialized{})
  , groupid_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , grouptype_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , title_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , iconurl_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , groupkey_(nullptr)
  , category_(0)
{}
struct GroupDefaultTypeInternal {
  constexpr GroupDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GroupDefaultTypeInternal() {}
  union {
    Group _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GroupDefaultTypeInternal _Group_default_instance_;
constexpr GroupSimple_ExtraEntry_DoNotUse::GroupSimple_ExtraEntry_DoNotUse(
  ::herogoogle::protobuf::internal::ConstantInitialized){}
struct GroupSimple_ExtraEntry_DoNotUseDefaultTypeInternal {
  constexpr GroupSimple_ExtraEntry_DoNotUseDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GroupSimple_ExtraEntry_DoNotUseDefaultTypeInternal() {}
  union {
    GroupSimple_ExtraEntry_DoNotUse _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GroupSimple_ExtraEntry_DoNotUseDefaultTypeInternal _GroupSimple_ExtraEntry_DoNotUse_default_instance_;
constexpr GroupSimple::GroupSimple(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : extra_(::herogoogle::protobuf::internal::ConstantInitialized{})
  , groupid_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , customid_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , title_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , type_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , owner_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , iconurl_(&::herogoogle::protobuf::internal::fixed_address_empty_string)
  , serverid_(&::herogoogle::protobuf::internal::fixed_address_empty_string){}
struct GroupSimpleDefaultTypeInternal {
  constexpr GroupSimpleDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GroupSimpleDefaultTypeInternal() {}
  union {
    GroupSimple _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GroupSimpleDefaultTypeInternal _GroupSimple_default_instance_;
constexpr GroupStats::GroupStats(
  ::herogoogle::protobuf::internal::ConstantInitialized)
  : usercount_(int64_t{0})
  , onlinecount_(int64_t{0}){}
struct GroupStatsDefaultTypeInternal {
  constexpr GroupStatsDefaultTypeInternal()
    : _instance(::herogoogle::protobuf::internal::ConstantInitialized{}) {}
  ~GroupStatsDefaultTypeInternal() {}
  union {
    GroupStats _instance;
  };
};
PROTOBUF_ATTRIBUTE_NO_DESTROY PROTOBUF_CONSTINIT GroupStatsDefaultTypeInternal _GroupStats_default_instance_;
}  // namespace model
}  // namespace group
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim
static ::herogoogle::protobuf::Metadata file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[6];
static const ::herogoogle::protobuf::EnumDescriptor* file_level_enum_descriptors_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[1];
static constexpr ::herogoogle::protobuf::ServiceDescriptor const** file_level_service_descriptors_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto = nullptr;

const ::herogoogle::protobuf::uint32 TableStruct_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupKey, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupKey, serverid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupKey, customid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, groupid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, groupkey_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, category_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, grouptype_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, title_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, iconurl_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::Group, extra_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse, key_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse, value_),
  0,
  1,
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, groupid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, customid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, title_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, type_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, owner_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, iconurl_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, serverid_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupSimple, extra_),
  ~0u,  // no _has_bits_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupStats, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  ~0u,  // no _inlined_string_donated_
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupStats, usercount_),
  PROTOBUF_FIELD_OFFSET(::heroim::client::v3beta::dto::group::model::GroupStats, onlinecount_),
};
static const ::herogoogle::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, -1, -1, sizeof(::heroim::client::v3beta::dto::group::model::GroupKey)},
  { 8, 16, -1, sizeof(::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse)},
  { 18, -1, -1, sizeof(::heroim::client::v3beta::dto::group::model::Group)},
  { 31, 39, -1, sizeof(::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse)},
  { 41, -1, -1, sizeof(::heroim::client::v3beta::dto::group::model::GroupSimple)},
  { 55, -1, -1, sizeof(::heroim::client::v3beta::dto::group::model::GroupStats)},
};

static ::herogoogle::protobuf::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_GroupKey_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_Group_ExtraEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_Group_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_GroupSimple_ExtraEntry_DoNotUse_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_GroupSimple_default_instance_),
  reinterpret_cast<const ::herogoogle::protobuf::Message*>(&::heroim::client::v3beta::dto::group::model::_GroupStats_default_instance_),
};
#ifdef _MSC_VER
#  pragma warning(disable : 4125)
#endif  /* _MSC_VER */
const char descriptor_table_protodef_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n/client/v3beta/dto/group/model/group_mo"
  "del.proto\022$heroim.client.v3beta.dto.grou"
  "p.model\".\n\010GroupKey\022\020\n\010serverId\030\001 \001(\t\022\020\n"
  "\010customId\030\002 \001(\t\"\311\002\n\005Group\022\017\n\007groupId\030\001 \001"
  "(\t\022@\n\010groupKey\030\002 \001(\0132..heroim.client.v3b"
  "eta.dto.group.model.GroupKey\022E\n\010category"
  "\030\003 \001(\01623.heroim.client.v3beta.dto.group."
  "model.GroupCategory\022\021\n\tgroupType\030\004 \001(\t\022\r"
  "\n\005title\030\005 \001(\t\022\017\n\007iconUrl\030\006 \001(\t\022E\n\005extra\030"
  "\007 \003(\01326.heroim.client.v3beta.dto.group.m"
  "odel.Group.ExtraEntry\032,\n\nExtraEntry\022\013\n\003k"
  "ey\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\"\372\001\n\013GroupSim"
  "ple\022\017\n\007groupId\030\001 \001(\t\022\020\n\010customId\030\002 \001(\t\022\r"
  "\n\005title\030\003 \001(\t\022\014\n\004type\030\004 \001(\t\022\r\n\005owner\030\005 \001"
  "(\t\022\017\n\007iconUrl\030\006 \001(\t\022\020\n\010serverId\030\007 \001(\t\022K\n"
  "\005extra\030\010 \003(\0132<.heroim.client.v3beta.dto."
  "group.model.GroupSimple.ExtraEntry\032,\n\nEx"
  "traEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001"
  "\"4\n\nGroupStats\022\021\n\tuserCount\030\002 \001(\003\022\023\n\013onl"
  "ineCount\030\003 \001(\003*8\n\rGroupCategory\022\024\n\020Categ"
  "oryChatRoom\020\000\022\021\n\rCategoryGroup\020\001B^\n(com."
  "hero.csdk.api.v3beta.dto.group.modelP\001Z("
  "heroim/api/client/v3beta/dto/group/model"
  "\242\002\005IMSdkb\006proto3"
  ;
static ::herogoogle::protobuf::internal::once_flag descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once;
const ::herogoogle::protobuf::internal::DescriptorTable descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto = {
  false, false, 936, descriptor_table_protodef_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto, "client/v3beta/dto/group/model/group_model.proto", 
  &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once, nullptr, 0, 6,
  schemas, file_default_instances, TableStruct_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto::offsets,
  file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto, file_level_enum_descriptors_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto, file_level_service_descriptors_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto,
};
PROTOBUF_ATTRIBUTE_WEAK const ::herogoogle::protobuf::internal::DescriptorTable* descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter() {
  return &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto;
}

// Force running AddDescriptors() at dynamic initialization time.
PROTOBUF_ATTRIBUTE_INIT_PRIORITY static ::herogoogle::protobuf::internal::AddDescriptorsRunner dynamic_init_dummy_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto(&descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto);
namespace heroim {
namespace client {
namespace v3beta {
namespace dto {
namespace group {
namespace model {
const ::herogoogle::protobuf::EnumDescriptor* GroupCategory_descriptor() {
  ::herogoogle::protobuf::internal::AssignDescriptors(&descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto);
  return file_level_enum_descriptors_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[0];
}
bool GroupCategory_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}


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

class GroupKey::_Internal {
 public:
};

GroupKey::GroupKey(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:heroim.client.v3beta.dto.group.model.GroupKey)
}
GroupKey::GroupKey(const GroupKey& from)
  : ::herogoogle::protobuf::Message() {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  serverid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_serverid().empty()) {
    serverid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_serverid(), 
      GetArenaForAllocation());
  }
  customid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_customid().empty()) {
    customid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_customid(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:heroim.client.v3beta.dto.group.model.GroupKey)
}

void GroupKey::SharedCtor() {
serverid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
customid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

GroupKey::~GroupKey() {
  // @@protoc_insertion_point(destructor:heroim.client.v3beta.dto.group.model.GroupKey)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void GroupKey::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  serverid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  customid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void GroupKey::ArenaDtor(void* object) {
  GroupKey* _this = reinterpret_cast< GroupKey* >(object);
  (void)_this;
}
void GroupKey::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void GroupKey::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void GroupKey::Clear() {
// @@protoc_insertion_point(message_clear_start:heroim.client.v3beta.dto.group.model.GroupKey)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  serverid_.ClearToEmpty();
  customid_.ClearToEmpty();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* GroupKey::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string serverId = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_serverid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupKey.serverId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string customId = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_customid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupKey.customId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* GroupKey::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:heroim.client.v3beta.dto.group.model.GroupKey)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string serverId = 1;
  if (!this->_internal_serverid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_serverid().data(), static_cast<int>(this->_internal_serverid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupKey.serverId");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_serverid(), target);
  }

  // string customId = 2;
  if (!this->_internal_customid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_customid().data(), static_cast<int>(this->_internal_customid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupKey.customId");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_customid(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:heroim.client.v3beta.dto.group.model.GroupKey)
  return target;
}

size_t GroupKey::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:heroim.client.v3beta.dto.group.model.GroupKey)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // string serverId = 1;
  if (!this->_internal_serverid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_serverid());
  }

  // string customId = 2;
  if (!this->_internal_customid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_customid());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData GroupKey::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    GroupKey::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*GroupKey::GetClassData() const { return &_class_data_; }

void GroupKey::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<GroupKey *>(to)->MergeFrom(
      static_cast<const GroupKey &>(from));
}


void GroupKey::MergeFrom(const GroupKey& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:heroim.client.v3beta.dto.group.model.GroupKey)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (!from._internal_serverid().empty()) {
    _internal_set_serverid(from._internal_serverid());
  }
  if (!from._internal_customid().empty()) {
    _internal_set_customid(from._internal_customid());
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void GroupKey::CopyFrom(const GroupKey& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:heroim.client.v3beta.dto.group.model.GroupKey)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GroupKey::IsInitialized() const {
  return true;
}

void GroupKey::InternalSwap(GroupKey* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &serverid_, lhs_arena,
      &other->serverid_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &customid_, lhs_arena,
      &other->customid_, rhs_arena
  );
}

::herogoogle::protobuf::Metadata GroupKey::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[0]);
}

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

Group_ExtraEntry_DoNotUse::Group_ExtraEntry_DoNotUse() {}
Group_ExtraEntry_DoNotUse::Group_ExtraEntry_DoNotUse(::herogoogle::protobuf::Arena* arena)
    : SuperType(arena) {}
void Group_ExtraEntry_DoNotUse::MergeFrom(const Group_ExtraEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::herogoogle::protobuf::Metadata Group_ExtraEntry_DoNotUse::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[1]);
}

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

class Group::_Internal {
 public:
  static const ::heroim::client::v3beta::dto::group::model::GroupKey& groupkey(const Group* msg);
};

const ::heroim::client::v3beta::dto::group::model::GroupKey&
Group::_Internal::groupkey(const Group* msg) {
  return *msg->groupkey_;
}
Group::Group(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  extra_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:heroim.client.v3beta.dto.group.model.Group)
}
Group::Group(const Group& from)
  : ::herogoogle::protobuf::Message() {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  extra_.MergeFrom(from.extra_);
  groupid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_groupid().empty()) {
    groupid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_groupid(), 
      GetArenaForAllocation());
  }
  grouptype_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_grouptype().empty()) {
    grouptype_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_grouptype(), 
      GetArenaForAllocation());
  }
  title_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_title().empty()) {
    title_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_title(), 
      GetArenaForAllocation());
  }
  iconurl_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_iconurl().empty()) {
    iconurl_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_iconurl(), 
      GetArenaForAllocation());
  }
  if (from._internal_has_groupkey()) {
    groupkey_ = new ::heroim::client::v3beta::dto::group::model::GroupKey(*from.groupkey_);
  } else {
    groupkey_ = nullptr;
  }
  category_ = from.category_;
  // @@protoc_insertion_point(copy_constructor:heroim.client.v3beta.dto.group.model.Group)
}

void Group::SharedCtor() {
groupid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
grouptype_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
title_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
iconurl_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&groupkey_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&category_) -
    reinterpret_cast<char*>(&groupkey_)) + sizeof(category_));
}

Group::~Group() {
  // @@protoc_insertion_point(destructor:heroim.client.v3beta.dto.group.model.Group)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void Group::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  groupid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  grouptype_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  title_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  iconurl_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete groupkey_;
}

void Group::ArenaDtor(void* object) {
  Group* _this = reinterpret_cast< Group* >(object);
  (void)_this;
  _this->extra_. ~MapField();
}
inline void Group::RegisterArenaDtor(::herogoogle::protobuf::Arena* arena) {
  if (arena != nullptr) {
    arena->OwnCustomDestructor(this, &Group::ArenaDtor);
  }
}
void Group::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void Group::Clear() {
// @@protoc_insertion_point(message_clear_start:heroim.client.v3beta.dto.group.model.Group)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  extra_.Clear();
  groupid_.ClearToEmpty();
  grouptype_.ClearToEmpty();
  title_.ClearToEmpty();
  iconurl_.ClearToEmpty();
  if (GetArenaForAllocation() == nullptr && groupkey_ != nullptr) {
    delete groupkey_;
  }
  groupkey_ = nullptr;
  category_ = 0;
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* Group::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string groupId = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_groupid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.Group.groupId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .heroim.client.v3beta.dto.group.model.GroupKey groupKey = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          ptr = ctx->ParseMessage(_internal_mutable_groupkey(), ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // .heroim.client.v3beta.dto.group.model.GroupCategory category = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          ::herogoogle::protobuf::uint64 val = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          _internal_set_category(static_cast<::heroim::client::v3beta::dto::group::model::GroupCategory>(val));
        } else
          goto handle_unusual;
        continue;
      // string groupType = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          auto str = _internal_mutable_grouptype();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.Group.groupType"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string title = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          auto str = _internal_mutable_title();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.Group.title"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string iconUrl = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          auto str = _internal_mutable_iconurl();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.Group.iconUrl"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // map<string, string> extra = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&extra_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<58>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* Group::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:heroim.client.v3beta.dto.group.model.Group)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string groupId = 1;
  if (!this->_internal_groupid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_groupid().data(), static_cast<int>(this->_internal_groupid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.Group.groupId");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_groupid(), target);
  }

  // .heroim.client.v3beta.dto.group.model.GroupKey groupKey = 2;
  if (this->_internal_has_groupkey()) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::
      InternalWriteMessage(
        2, _Internal::groupkey(this), target, stream);
  }

  // .heroim.client.v3beta.dto.group.model.GroupCategory category = 3;
  if (this->_internal_category() != 0) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteEnumToArray(
      3, this->_internal_category(), target);
  }

  // string groupType = 4;
  if (!this->_internal_grouptype().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_grouptype().data(), static_cast<int>(this->_internal_grouptype().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.Group.groupType");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_grouptype(), target);
  }

  // string title = 5;
  if (!this->_internal_title().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_title().data(), static_cast<int>(this->_internal_title().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.Group.title");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_title(), target);
  }

  // string iconUrl = 6;
  if (!this->_internal_iconurl().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_iconurl().data(), static_cast<int>(this->_internal_iconurl().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.Group.iconUrl");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_iconurl(), target);
  }

  // map<string, string> extra = 7;
  if (!this->_internal_extra().empty()) {
    typedef ::herogoogle::protobuf::Map< std::string, std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::herogoogle::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
          "heroim.client.v3beta.dto.group.model.Group.ExtraEntry.key");
        ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
          "heroim.client.v3beta.dto.group.model.Group.ExtraEntry.value");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_extra().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_extra().size()]);
      typedef ::herogoogle::protobuf::Map< std::string, std::string >::size_type size_type;
      size_type n = 0;
      for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
          it = this->_internal_extra().begin();
          it != this->_internal_extra().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = Group_ExtraEntry_DoNotUse::Funcs::InternalSerialize(7, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
          it = this->_internal_extra().begin();
          it != this->_internal_extra().end(); ++it) {
        target = Group_ExtraEntry_DoNotUse::Funcs::InternalSerialize(7, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:heroim.client.v3beta.dto.group.model.Group)
  return target;
}

size_t Group::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:heroim.client.v3beta.dto.group.model.Group)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // map<string, string> extra = 7;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(this->_internal_extra_size());
  for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
      it = this->_internal_extra().begin();
      it != this->_internal_extra().end(); ++it) {
    total_size += Group_ExtraEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  // string groupId = 1;
  if (!this->_internal_groupid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_groupid());
  }

  // string groupType = 4;
  if (!this->_internal_grouptype().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_grouptype());
  }

  // string title = 5;
  if (!this->_internal_title().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_title());
  }

  // string iconUrl = 6;
  if (!this->_internal_iconurl().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_iconurl());
  }

  // .heroim.client.v3beta.dto.group.model.GroupKey groupKey = 2;
  if (this->_internal_has_groupkey()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::MessageSize(
        *groupkey_);
  }

  // .heroim.client.v3beta.dto.group.model.GroupCategory category = 3;
  if (this->_internal_category() != 0) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::EnumSize(this->_internal_category());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData Group::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    Group::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*Group::GetClassData() const { return &_class_data_; }

void Group::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<Group *>(to)->MergeFrom(
      static_cast<const Group &>(from));
}


void Group::MergeFrom(const Group& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:heroim.client.v3beta.dto.group.model.Group)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  extra_.MergeFrom(from.extra_);
  if (!from._internal_groupid().empty()) {
    _internal_set_groupid(from._internal_groupid());
  }
  if (!from._internal_grouptype().empty()) {
    _internal_set_grouptype(from._internal_grouptype());
  }
  if (!from._internal_title().empty()) {
    _internal_set_title(from._internal_title());
  }
  if (!from._internal_iconurl().empty()) {
    _internal_set_iconurl(from._internal_iconurl());
  }
  if (from._internal_has_groupkey()) {
    _internal_mutable_groupkey()->::heroim::client::v3beta::dto::group::model::GroupKey::MergeFrom(from._internal_groupkey());
  }
  if (from._internal_category() != 0) {
    _internal_set_category(from._internal_category());
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void Group::CopyFrom(const Group& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:heroim.client.v3beta.dto.group.model.Group)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool Group::IsInitialized() const {
  return true;
}

void Group::InternalSwap(Group* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  extra_.InternalSwap(&other->extra_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &groupid_, lhs_arena,
      &other->groupid_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &grouptype_, lhs_arena,
      &other->grouptype_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &title_, lhs_arena,
      &other->title_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &iconurl_, lhs_arena,
      &other->iconurl_, rhs_arena
  );
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(Group, category_)
      + sizeof(Group::category_)
      - PROTOBUF_FIELD_OFFSET(Group, groupkey_)>(
          reinterpret_cast<char*>(&groupkey_),
          reinterpret_cast<char*>(&other->groupkey_));
}

::herogoogle::protobuf::Metadata Group::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[2]);
}

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

GroupSimple_ExtraEntry_DoNotUse::GroupSimple_ExtraEntry_DoNotUse() {}
GroupSimple_ExtraEntry_DoNotUse::GroupSimple_ExtraEntry_DoNotUse(::herogoogle::protobuf::Arena* arena)
    : SuperType(arena) {}
void GroupSimple_ExtraEntry_DoNotUse::MergeFrom(const GroupSimple_ExtraEntry_DoNotUse& other) {
  MergeFromInternal(other);
}
::herogoogle::protobuf::Metadata GroupSimple_ExtraEntry_DoNotUse::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[3]);
}

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

class GroupSimple::_Internal {
 public:
};

GroupSimple::GroupSimple(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned),
  extra_(arena) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:heroim.client.v3beta.dto.group.model.GroupSimple)
}
GroupSimple::GroupSimple(const GroupSimple& from)
  : ::herogoogle::protobuf::Message() {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  extra_.MergeFrom(from.extra_);
  groupid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_groupid().empty()) {
    groupid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_groupid(), 
      GetArenaForAllocation());
  }
  customid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_customid().empty()) {
    customid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_customid(), 
      GetArenaForAllocation());
  }
  title_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_title().empty()) {
    title_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_title(), 
      GetArenaForAllocation());
  }
  type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_type().empty()) {
    type_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_type(), 
      GetArenaForAllocation());
  }
  owner_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_owner().empty()) {
    owner_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_owner(), 
      GetArenaForAllocation());
  }
  iconurl_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_iconurl().empty()) {
    iconurl_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_iconurl(), 
      GetArenaForAllocation());
  }
  serverid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  if (!from._internal_serverid().empty()) {
    serverid_.Set(::herogoogle::protobuf::internal::ArenaStringPtr::EmptyDefault{}, from._internal_serverid(), 
      GetArenaForAllocation());
  }
  // @@protoc_insertion_point(copy_constructor:heroim.client.v3beta.dto.group.model.GroupSimple)
}

void GroupSimple::SharedCtor() {
groupid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
customid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
title_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
type_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
owner_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
iconurl_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
serverid_.UnsafeSetDefault(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

GroupSimple::~GroupSimple() {
  // @@protoc_insertion_point(destructor:heroim.client.v3beta.dto.group.model.GroupSimple)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void GroupSimple::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
  groupid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  customid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  title_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  type_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  owner_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  iconurl_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
  serverid_.DestroyNoArena(&::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited());
}

void GroupSimple::ArenaDtor(void* object) {
  GroupSimple* _this = reinterpret_cast< GroupSimple* >(object);
  (void)_this;
  _this->extra_. ~MapField();
}
inline void GroupSimple::RegisterArenaDtor(::herogoogle::protobuf::Arena* arena) {
  if (arena != nullptr) {
    arena->OwnCustomDestructor(this, &GroupSimple::ArenaDtor);
  }
}
void GroupSimple::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void GroupSimple::Clear() {
// @@protoc_insertion_point(message_clear_start:heroim.client.v3beta.dto.group.model.GroupSimple)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  extra_.Clear();
  groupid_.ClearToEmpty();
  customid_.ClearToEmpty();
  title_.ClearToEmpty();
  type_.ClearToEmpty();
  owner_.ClearToEmpty();
  iconurl_.ClearToEmpty();
  serverid_.ClearToEmpty();
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* GroupSimple::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // string groupId = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 10)) {
          auto str = _internal_mutable_groupid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.groupId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string customId = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 18)) {
          auto str = _internal_mutable_customid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.customId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string title = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 26)) {
          auto str = _internal_mutable_title();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.title"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 34)) {
          auto str = _internal_mutable_type();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.type"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string owner = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 42)) {
          auto str = _internal_mutable_owner();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.owner"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string iconUrl = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 50)) {
          auto str = _internal_mutable_iconurl();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.iconUrl"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // string serverId = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 58)) {
          auto str = _internal_mutable_serverid();
          ptr = ::herogoogle::protobuf::internal::InlineGreedyStringParser(str, ptr, ctx);
          CHK_(::herogoogle::protobuf::internal::VerifyUTF8(str, "heroim.client.v3beta.dto.group.model.GroupSimple.serverId"));
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // map<string, string> extra = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 66)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(&extra_, ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::herogoogle::protobuf::internal::ExpectTag<66>(ptr));
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* GroupSimple::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:heroim.client.v3beta.dto.group.model.GroupSimple)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // string groupId = 1;
  if (!this->_internal_groupid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_groupid().data(), static_cast<int>(this->_internal_groupid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.groupId");
    target = stream->WriteStringMaybeAliased(
        1, this->_internal_groupid(), target);
  }

  // string customId = 2;
  if (!this->_internal_customid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_customid().data(), static_cast<int>(this->_internal_customid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.customId");
    target = stream->WriteStringMaybeAliased(
        2, this->_internal_customid(), target);
  }

  // string title = 3;
  if (!this->_internal_title().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_title().data(), static_cast<int>(this->_internal_title().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.title");
    target = stream->WriteStringMaybeAliased(
        3, this->_internal_title(), target);
  }

  // string type = 4;
  if (!this->_internal_type().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_type().data(), static_cast<int>(this->_internal_type().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.type");
    target = stream->WriteStringMaybeAliased(
        4, this->_internal_type(), target);
  }

  // string owner = 5;
  if (!this->_internal_owner().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_owner().data(), static_cast<int>(this->_internal_owner().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.owner");
    target = stream->WriteStringMaybeAliased(
        5, this->_internal_owner(), target);
  }

  // string iconUrl = 6;
  if (!this->_internal_iconurl().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_iconurl().data(), static_cast<int>(this->_internal_iconurl().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.iconUrl");
    target = stream->WriteStringMaybeAliased(
        6, this->_internal_iconurl(), target);
  }

  // string serverId = 7;
  if (!this->_internal_serverid().empty()) {
    ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
      this->_internal_serverid().data(), static_cast<int>(this->_internal_serverid().length()),
      ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
      "heroim.client.v3beta.dto.group.model.GroupSimple.serverId");
    target = stream->WriteStringMaybeAliased(
        7, this->_internal_serverid(), target);
  }

  // map<string, string> extra = 8;
  if (!this->_internal_extra().empty()) {
    typedef ::herogoogle::protobuf::Map< std::string, std::string >::const_pointer
        ConstPtr;
    typedef ConstPtr SortItem;
    typedef ::herogoogle::protobuf::internal::CompareByDerefFirst<SortItem> Less;
    struct Utf8Check {
      static void Check(ConstPtr p) {
        (void)p;
        ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->first.data(), static_cast<int>(p->first.length()),
          ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
          "heroim.client.v3beta.dto.group.model.GroupSimple.ExtraEntry.key");
        ::herogoogle::protobuf::internal::WireFormatLite::VerifyUtf8String(
          p->second.data(), static_cast<int>(p->second.length()),
          ::herogoogle::protobuf::internal::WireFormatLite::SERIALIZE,
          "heroim.client.v3beta.dto.group.model.GroupSimple.ExtraEntry.value");
      }
    };

    if (stream->IsSerializationDeterministic() &&
        this->_internal_extra().size() > 1) {
      ::std::unique_ptr<SortItem[]> items(
          new SortItem[this->_internal_extra().size()]);
      typedef ::herogoogle::protobuf::Map< std::string, std::string >::size_type size_type;
      size_type n = 0;
      for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
          it = this->_internal_extra().begin();
          it != this->_internal_extra().end(); ++it, ++n) {
        items[static_cast<ptrdiff_t>(n)] = SortItem(&*it);
      }
      ::std::sort(&items[0], &items[static_cast<ptrdiff_t>(n)], Less());
      for (size_type i = 0; i < n; i++) {
        target = GroupSimple_ExtraEntry_DoNotUse::Funcs::InternalSerialize(8, items[static_cast<ptrdiff_t>(i)]->first, items[static_cast<ptrdiff_t>(i)]->second, target, stream);
        Utf8Check::Check(&(*items[static_cast<ptrdiff_t>(i)]));
      }
    } else {
      for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
          it = this->_internal_extra().begin();
          it != this->_internal_extra().end(); ++it) {
        target = GroupSimple_ExtraEntry_DoNotUse::Funcs::InternalSerialize(8, it->first, it->second, target, stream);
        Utf8Check::Check(&(*it));
      }
    }
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:heroim.client.v3beta.dto.group.model.GroupSimple)
  return target;
}

size_t GroupSimple::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:heroim.client.v3beta.dto.group.model.GroupSimple)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // map<string, string> extra = 8;
  total_size += 1 *
      ::herogoogle::protobuf::internal::FromIntSize(this->_internal_extra_size());
  for (::herogoogle::protobuf::Map< std::string, std::string >::const_iterator
      it = this->_internal_extra().begin();
      it != this->_internal_extra().end(); ++it) {
    total_size += GroupSimple_ExtraEntry_DoNotUse::Funcs::ByteSizeLong(it->first, it->second);
  }

  // string groupId = 1;
  if (!this->_internal_groupid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_groupid());
  }

  // string customId = 2;
  if (!this->_internal_customid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_customid());
  }

  // string title = 3;
  if (!this->_internal_title().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_title());
  }

  // string type = 4;
  if (!this->_internal_type().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_type());
  }

  // string owner = 5;
  if (!this->_internal_owner().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_owner());
  }

  // string iconUrl = 6;
  if (!this->_internal_iconurl().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_iconurl());
  }

  // string serverId = 7;
  if (!this->_internal_serverid().empty()) {
    total_size += 1 +
      ::herogoogle::protobuf::internal::WireFormatLite::StringSize(
        this->_internal_serverid());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData GroupSimple::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    GroupSimple::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*GroupSimple::GetClassData() const { return &_class_data_; }

void GroupSimple::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<GroupSimple *>(to)->MergeFrom(
      static_cast<const GroupSimple &>(from));
}


void GroupSimple::MergeFrom(const GroupSimple& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:heroim.client.v3beta.dto.group.model.GroupSimple)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  extra_.MergeFrom(from.extra_);
  if (!from._internal_groupid().empty()) {
    _internal_set_groupid(from._internal_groupid());
  }
  if (!from._internal_customid().empty()) {
    _internal_set_customid(from._internal_customid());
  }
  if (!from._internal_title().empty()) {
    _internal_set_title(from._internal_title());
  }
  if (!from._internal_type().empty()) {
    _internal_set_type(from._internal_type());
  }
  if (!from._internal_owner().empty()) {
    _internal_set_owner(from._internal_owner());
  }
  if (!from._internal_iconurl().empty()) {
    _internal_set_iconurl(from._internal_iconurl());
  }
  if (!from._internal_serverid().empty()) {
    _internal_set_serverid(from._internal_serverid());
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void GroupSimple::CopyFrom(const GroupSimple& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:heroim.client.v3beta.dto.group.model.GroupSimple)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GroupSimple::IsInitialized() const {
  return true;
}

void GroupSimple::InternalSwap(GroupSimple* other) {
  using std::swap;
  auto* lhs_arena = GetArenaForAllocation();
  auto* rhs_arena = other->GetArenaForAllocation();
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  extra_.InternalSwap(&other->extra_);
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &groupid_, lhs_arena,
      &other->groupid_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &customid_, lhs_arena,
      &other->customid_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &title_, lhs_arena,
      &other->title_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &type_, lhs_arena,
      &other->type_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &owner_, lhs_arena,
      &other->owner_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &iconurl_, lhs_arena,
      &other->iconurl_, rhs_arena
  );
  ::herogoogle::protobuf::internal::ArenaStringPtr::InternalSwap(
      &::herogoogle::protobuf::internal::GetEmptyStringAlreadyInited(),
      &serverid_, lhs_arena,
      &other->serverid_, rhs_arena
  );
}

::herogoogle::protobuf::Metadata GroupSimple::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[4]);
}

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

class GroupStats::_Internal {
 public:
};

GroupStats::GroupStats(::herogoogle::protobuf::Arena* arena,
                         bool is_message_owned)
  : ::herogoogle::protobuf::Message(arena, is_message_owned) {
  SharedCtor();
  if (!is_message_owned) {
    RegisterArenaDtor(arena);
  }
  // @@protoc_insertion_point(arena_constructor:heroim.client.v3beta.dto.group.model.GroupStats)
}
GroupStats::GroupStats(const GroupStats& from)
  : ::herogoogle::protobuf::Message() {
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
  ::memcpy(&usercount_, &from.usercount_,
    static_cast<size_t>(reinterpret_cast<char*>(&onlinecount_) -
    reinterpret_cast<char*>(&usercount_)) + sizeof(onlinecount_));
  // @@protoc_insertion_point(copy_constructor:heroim.client.v3beta.dto.group.model.GroupStats)
}

void GroupStats::SharedCtor() {
::memset(reinterpret_cast<char*>(this) + static_cast<size_t>(
    reinterpret_cast<char*>(&usercount_) - reinterpret_cast<char*>(this)),
    0, static_cast<size_t>(reinterpret_cast<char*>(&onlinecount_) -
    reinterpret_cast<char*>(&usercount_)) + sizeof(onlinecount_));
}

GroupStats::~GroupStats() {
  // @@protoc_insertion_point(destructor:heroim.client.v3beta.dto.group.model.GroupStats)
  if (GetArenaForAllocation() != nullptr) return;
  SharedDtor();
  _internal_metadata_.Delete<::herogoogle::protobuf::UnknownFieldSet>();
}

inline void GroupStats::SharedDtor() {
  GOOGLE_DCHECK(GetArenaForAllocation() == nullptr);
}

void GroupStats::ArenaDtor(void* object) {
  GroupStats* _this = reinterpret_cast< GroupStats* >(object);
  (void)_this;
}
void GroupStats::RegisterArenaDtor(::herogoogle::protobuf::Arena*) {
}
void GroupStats::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}

void GroupStats::Clear() {
// @@protoc_insertion_point(message_clear_start:heroim.client.v3beta.dto.group.model.GroupStats)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  ::memset(&usercount_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&onlinecount_) -
      reinterpret_cast<char*>(&usercount_)) + sizeof(onlinecount_));
  _internal_metadata_.Clear<::herogoogle::protobuf::UnknownFieldSet>();
}

const char* GroupStats::_InternalParse(const char* ptr, ::herogoogle::protobuf::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  while (!ctx->Done(&ptr)) {
    ::herogoogle::protobuf::uint32 tag;
    ptr = ::herogoogle::protobuf::internal::ReadTag(ptr, &tag);
    switch (tag >> 3) {
      // int64 userCount = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 16)) {
          usercount_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      // int64 onlineCount = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::herogoogle::protobuf::uint8>(tag) == 24)) {
          onlinecount_ = ::herogoogle::protobuf::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else
          goto handle_unusual;
        continue;
      default:
        goto handle_unusual;
    }  // switch
  handle_unusual:
    if ((tag == 0) || ((tag & 7) == 4)) {
      CHK_(ptr);
      ctx->SetLastTag(tag);
      goto message_done;
    }
    ptr = UnknownFieldParse(
        tag,
        _internal_metadata_.mutable_unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(),
        ptr, ctx);
    CHK_(ptr != nullptr);
  }  // while
message_done:
  return ptr;
failure:
  ptr = nullptr;
  goto message_done;
#undef CHK_
}

::herogoogle::protobuf::uint8* GroupStats::_InternalSerialize(
    ::herogoogle::protobuf::uint8* target, ::herogoogle::protobuf::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:heroim.client.v3beta.dto.group.model.GroupStats)
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  // int64 userCount = 2;
  if (this->_internal_usercount() != 0) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt64ToArray(2, this->_internal_usercount(), target);
  }

  // int64 onlineCount = 3;
  if (this->_internal_onlinecount() != 0) {
    target = stream->EnsureSpace(target);
    target = ::herogoogle::protobuf::internal::WireFormatLite::WriteInt64ToArray(3, this->_internal_onlinecount(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::herogoogle::protobuf::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields<::herogoogle::protobuf::UnknownFieldSet>(::herogoogle::protobuf::UnknownFieldSet::default_instance), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:heroim.client.v3beta.dto.group.model.GroupStats)
  return target;
}

size_t GroupStats::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:heroim.client.v3beta.dto.group.model.GroupStats)
  size_t total_size = 0;

  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  // int64 userCount = 2;
  if (this->_internal_usercount() != 0) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int64SizePlusOne(this->_internal_usercount());
  }

  // int64 onlineCount = 3;
  if (this->_internal_onlinecount() != 0) {
    total_size += ::herogoogle::protobuf::internal::WireFormatLite::Int64SizePlusOne(this->_internal_onlinecount());
  }

  return MaybeComputeUnknownFieldsSize(total_size, &_cached_size_);
}

const ::herogoogle::protobuf::Message::ClassData GroupStats::_class_data_ = {
    ::herogoogle::protobuf::Message::CopyWithSizeCheck,
    GroupStats::MergeImpl
};
const ::herogoogle::protobuf::Message::ClassData*GroupStats::GetClassData() const { return &_class_data_; }

void GroupStats::MergeImpl(::herogoogle::protobuf::Message* to,
                      const ::herogoogle::protobuf::Message& from) {
  static_cast<GroupStats *>(to)->MergeFrom(
      static_cast<const GroupStats &>(from));
}


void GroupStats::MergeFrom(const GroupStats& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:heroim.client.v3beta.dto.group.model.GroupStats)
  GOOGLE_DCHECK_NE(&from, this);
  ::herogoogle::protobuf::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from._internal_usercount() != 0) {
    _internal_set_usercount(from._internal_usercount());
  }
  if (from._internal_onlinecount() != 0) {
    _internal_set_onlinecount(from._internal_onlinecount());
  }
  _internal_metadata_.MergeFrom<::herogoogle::protobuf::UnknownFieldSet>(from._internal_metadata_);
}

void GroupStats::CopyFrom(const GroupStats& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:heroim.client.v3beta.dto.group.model.GroupStats)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

bool GroupStats::IsInitialized() const {
  return true;
}

void GroupStats::InternalSwap(GroupStats* other) {
  using std::swap;
  _internal_metadata_.InternalSwap(&other->_internal_metadata_);
  ::herogoogle::protobuf::internal::memswap<
      PROTOBUF_FIELD_OFFSET(GroupStats, onlinecount_)
      + sizeof(GroupStats::onlinecount_)
      - PROTOBUF_FIELD_OFFSET(GroupStats, usercount_)>(
          reinterpret_cast<char*>(&usercount_),
          reinterpret_cast<char*>(&other->usercount_));
}

::herogoogle::protobuf::Metadata GroupStats::GetMetadata() const {
  return ::herogoogle::protobuf::internal::AssignDescriptors(
      &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_getter, &descriptor_table_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto_once,
      file_level_metadata_client_2fv3beta_2fdto_2fgroup_2fmodel_2fgroup_5fmodel_2eproto[5]);
}

// @@protoc_insertion_point(namespace_scope)
}  // namespace model
}  // namespace group
}  // namespace dto
}  // namespace v3beta
}  // namespace client
}  // namespace heroim
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::GroupKey* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::GroupKey >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::GroupKey >(arena);
}
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::Group_ExtraEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::Group* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::Group >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::Group >(arena);
}
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::GroupSimple_ExtraEntry_DoNotUse >(arena);
}
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::GroupSimple* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::GroupSimple >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::GroupSimple >(arena);
}
template<> PROTOBUF_NOINLINE ::heroim::client::v3beta::dto::group::model::GroupStats* Arena::CreateMaybeMessage< ::heroim::client::v3beta::dto::group::model::GroupStats >(Arena* arena) {
  return Arena::CreateMessageInternal< ::heroim::client::v3beta::dto::group::model::GroupStats >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)

