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

#include "s2clientprotocol/score.pb.h"

#include <algorithm>

#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/descriptor.h>
#include <google/protobuf/generated_message_reflection.h>
#include <google/protobuf/reflection_ops.h>
#include <google/protobuf/wire_format.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fscore_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fscore_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_s2clientprotocol_2fscore_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto;
namespace SC2APIProtocol {
class ScoreDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<Score> _instance;
} _Score_default_instance_;
class CategoryScoreDetailsDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<CategoryScoreDetails> _instance;
} _CategoryScoreDetails_default_instance_;
class VitalScoreDetailsDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<VitalScoreDetails> _instance;
} _VitalScoreDetails_default_instance_;
class ScoreDetailsDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<ScoreDetails> _instance;
} _ScoreDetails_default_instance_;
}  // namespace SC2APIProtocol
static void InitDefaultsscc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_CategoryScoreDetails_default_instance_;
    new (ptr) ::SC2APIProtocol::CategoryScoreDetails();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::CategoryScoreDetails::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto}, {}};

static void InitDefaultsscc_info_Score_s2clientprotocol_2fscore_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_Score_default_instance_;
    new (ptr) ::SC2APIProtocol::Score();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::Score::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_Score_s2clientprotocol_2fscore_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, 0, InitDefaultsscc_info_Score_s2clientprotocol_2fscore_2eproto}, {
      &scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto.base,}};

static void InitDefaultsscc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_ScoreDetails_default_instance_;
    new (ptr) ::SC2APIProtocol::ScoreDetails();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::ScoreDetails::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, 0, InitDefaultsscc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto}, {
      &scc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto.base,
      &scc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto.base,}};

static void InitDefaultsscc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::SC2APIProtocol::_VitalScoreDetails_default_instance_;
    new (ptr) ::SC2APIProtocol::VitalScoreDetails();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::SC2APIProtocol::VitalScoreDetails::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 0, 0, InitDefaultsscc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto}, {}};

static ::PROTOBUF_NAMESPACE_ID::Metadata file_level_metadata_s2clientprotocol_2fscore_2eproto[4];
static const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* file_level_enum_descriptors_s2clientprotocol_2fscore_2eproto[1];
static constexpr ::PROTOBUF_NAMESPACE_ID::ServiceDescriptor const** file_level_service_descriptors_s2clientprotocol_2fscore_2eproto = nullptr;

const ::PROTOBUF_NAMESPACE_ID::uint32 TableStruct_s2clientprotocol_2fscore_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::Score, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::Score, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::Score, score_type_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::Score, score_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::Score, score_details_),
  2,
  1,
  0,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, none_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, army_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, economy_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, technology_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::CategoryScoreDetails, upgrade_),
  0,
  1,
  2,
  3,
  4,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::VitalScoreDetails, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::VitalScoreDetails, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::VitalScoreDetails, life_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::VitalScoreDetails, shields_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::VitalScoreDetails, energy_),
  0,
  1,
  2,
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, _has_bits_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, _internal_metadata_),
  ~0u,  // no _extensions_
  ~0u,  // no _oneof_case_
  ~0u,  // no _weak_field_map_
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, idle_production_time_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, idle_worker_time_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_value_units_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_value_structures_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, killed_value_units_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, killed_value_structures_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, collected_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, collected_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, collection_rate_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, collection_rate_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, spent_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, spent_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, food_used_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, killed_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, killed_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, lost_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, lost_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, friendly_fire_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, friendly_fire_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, used_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, used_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_used_minerals_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_used_vespene_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_damage_dealt_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_damage_taken_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, total_healed_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, current_apm_),
  PROTOBUF_FIELD_OFFSET(::SC2APIProtocol::ScoreDetails, current_effective_apm_),
  14,
  15,
  16,
  17,
  18,
  19,
  20,
  21,
  22,
  23,
  24,
  25,
  0,
  1,
  2,
  3,
  4,
  5,
  6,
  7,
  8,
  9,
  10,
  11,
  12,
  13,
  26,
  27,
};
static const ::PROTOBUF_NAMESPACE_ID::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
  { 0, 8, sizeof(::SC2APIProtocol::Score)},
  { 11, 21, sizeof(::SC2APIProtocol::CategoryScoreDetails)},
  { 26, 34, sizeof(::SC2APIProtocol::VitalScoreDetails)},
  { 37, 70, sizeof(::SC2APIProtocol::ScoreDetails)},
};

static ::PROTOBUF_NAMESPACE_ID::Message const * const file_default_instances[] = {
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_Score_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_CategoryScoreDetails_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_VitalScoreDetails_default_instance_),
  reinterpret_cast<const ::PROTOBUF_NAMESPACE_ID::Message*>(&::SC2APIProtocol::_ScoreDetails_default_instance_),
};

const char descriptor_table_protodef_s2clientprotocol_2fscore_2eproto[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) =
  "\n\034s2clientprotocol/score.proto\022\016SC2APIPr"
  "otocol\"\250\001\n\005Score\0223\n\nscore_type\030\006 \001(\0162\037.S"
  "C2APIProtocol.Score.ScoreType\022\r\n\005score\030\007"
  " \001(\005\0223\n\rscore_details\030\010 \001(\0132\034.SC2APIProt"
  "ocol.ScoreDetails\"&\n\tScoreType\022\016\n\nCurric"
  "ulum\020\001\022\t\n\005Melee\020\002\"h\n\024CategoryScoreDetail"
  "s\022\014\n\004none\030\001 \001(\002\022\014\n\004army\030\002 \001(\002\022\017\n\007economy"
  "\030\003 \001(\002\022\022\n\ntechnology\030\004 \001(\002\022\017\n\007upgrade\030\005 "
  "\001(\002\"B\n\021VitalScoreDetails\022\014\n\004life\030\001 \001(\002\022\017"
  "\n\007shields\030\002 \001(\002\022\016\n\006energy\030\003 \001(\002\"\212\n\n\014Scor"
  "eDetails\022\034\n\024idle_production_time\030\001 \001(\002\022\030"
  "\n\020idle_worker_time\030\002 \001(\002\022\031\n\021total_value_"
  "units\030\003 \001(\002\022\036\n\026total_value_structures\030\004 "
  "\001(\002\022\032\n\022killed_value_units\030\005 \001(\002\022\037\n\027kille"
  "d_value_structures\030\006 \001(\002\022\032\n\022collected_mi"
  "nerals\030\007 \001(\002\022\031\n\021collected_vespene\030\010 \001(\002\022"
  " \n\030collection_rate_minerals\030\t \001(\002\022\037\n\027col"
  "lection_rate_vespene\030\n \001(\002\022\026\n\016spent_mine"
  "rals\030\013 \001(\002\022\025\n\rspent_vespene\030\014 \001(\002\0227\n\tfoo"
  "d_used\030\r \001(\0132$.SC2APIProtocol.CategorySc"
  "oreDetails\022=\n\017killed_minerals\030\016 \001(\0132$.SC"
  "2APIProtocol.CategoryScoreDetails\022<\n\016kil"
  "led_vespene\030\017 \001(\0132$.SC2APIProtocol.Categ"
  "oryScoreDetails\022;\n\rlost_minerals\030\020 \001(\0132$"
  ".SC2APIProtocol.CategoryScoreDetails\022:\n\014"
  "lost_vespene\030\021 \001(\0132$.SC2APIProtocol.Cate"
  "goryScoreDetails\022D\n\026friendly_fire_minera"
  "ls\030\022 \001(\0132$.SC2APIProtocol.CategoryScoreD"
  "etails\022C\n\025friendly_fire_vespene\030\023 \001(\0132$."
  "SC2APIProtocol.CategoryScoreDetails\022;\n\ru"
  "sed_minerals\030\024 \001(\0132$.SC2APIProtocol.Cate"
  "goryScoreDetails\022:\n\014used_vespene\030\025 \001(\0132$"
  ".SC2APIProtocol.CategoryScoreDetails\022A\n\023"
  "total_used_minerals\030\026 \001(\0132$.SC2APIProtoc"
  "ol.CategoryScoreDetails\022@\n\022total_used_ve"
  "spene\030\027 \001(\0132$.SC2APIProtocol.CategorySco"
  "reDetails\022=\n\022total_damage_dealt\030\030 \001(\0132!."
  "SC2APIProtocol.VitalScoreDetails\022=\n\022tota"
  "l_damage_taken\030\031 \001(\0132!.SC2APIProtocol.Vi"
  "talScoreDetails\0227\n\014total_healed\030\032 \001(\0132!."
  "SC2APIProtocol.VitalScoreDetails\022\023\n\013curr"
  "ent_apm\030\033 \001(\002\022\035\n\025current_effective_apm\030\034"
  " \001(\002"
  ;
static const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable*const descriptor_table_s2clientprotocol_2fscore_2eproto_deps[1] = {
};
static ::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase*const descriptor_table_s2clientprotocol_2fscore_2eproto_sccs[4] = {
  &scc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto.base,
  &scc_info_Score_s2clientprotocol_2fscore_2eproto.base,
  &scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto.base,
  &scc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto.base,
};
static ::PROTOBUF_NAMESPACE_ID::internal::once_flag descriptor_table_s2clientprotocol_2fscore_2eproto_once;
static bool descriptor_table_s2clientprotocol_2fscore_2eproto_initialized = false;
const ::PROTOBUF_NAMESPACE_ID::internal::DescriptorTable descriptor_table_s2clientprotocol_2fscore_2eproto = {
  &descriptor_table_s2clientprotocol_2fscore_2eproto_initialized, descriptor_table_protodef_s2clientprotocol_2fscore_2eproto, "s2clientprotocol/score.proto", 1684,
  &descriptor_table_s2clientprotocol_2fscore_2eproto_once, descriptor_table_s2clientprotocol_2fscore_2eproto_sccs, descriptor_table_s2clientprotocol_2fscore_2eproto_deps, 4, 0,
  schemas, file_default_instances, TableStruct_s2clientprotocol_2fscore_2eproto::offsets,
  file_level_metadata_s2clientprotocol_2fscore_2eproto, 4, file_level_enum_descriptors_s2clientprotocol_2fscore_2eproto, file_level_service_descriptors_s2clientprotocol_2fscore_2eproto,
};

// Force running AddDescriptors() at dynamic initialization time.
static bool dynamic_init_dummy_s2clientprotocol_2fscore_2eproto = (static_cast<void>(::PROTOBUF_NAMESPACE_ID::internal::AddDescriptors(&descriptor_table_s2clientprotocol_2fscore_2eproto)), true);
namespace SC2APIProtocol {
const ::PROTOBUF_NAMESPACE_ID::EnumDescriptor* Score_ScoreType_descriptor() {
  ::PROTOBUF_NAMESPACE_ID::internal::AssignDescriptors(&descriptor_table_s2clientprotocol_2fscore_2eproto);
  return file_level_enum_descriptors_s2clientprotocol_2fscore_2eproto[0];
}
bool Score_ScoreType_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
      return true;
    default:
      return false;
  }
}

#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr Score_ScoreType Score::Curriculum;
constexpr Score_ScoreType Score::Melee;
constexpr Score_ScoreType Score::ScoreType_MIN;
constexpr Score_ScoreType Score::ScoreType_MAX;
constexpr int Score::ScoreType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

void Score::InitAsDefaultInstance() {
  ::SC2APIProtocol::_Score_default_instance_._instance.get_mutable()->score_details_ = const_cast< ::SC2APIProtocol::ScoreDetails*>(
      ::SC2APIProtocol::ScoreDetails::internal_default_instance());
}
class Score::_Internal {
 public:
  using HasBits = decltype(std::declval<Score>()._has_bits_);
  static void set_has_score_type(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_score(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::SC2APIProtocol::ScoreDetails& score_details(const Score* msg);
  static void set_has_score_details(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

const ::SC2APIProtocol::ScoreDetails&
Score::_Internal::score_details(const Score* msg) {
  return *msg->score_details_;
}
Score::Score()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.Score)
}
Score::Score(const Score& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_score_details()) {
    score_details_ = new ::SC2APIProtocol::ScoreDetails(*from.score_details_);
  } else {
    score_details_ = nullptr;
  }
  ::memcpy(&score_, &from.score_,
    static_cast<size_t>(reinterpret_cast<char*>(&score_type_) -
    reinterpret_cast<char*>(&score_)) + sizeof(score_type_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.Score)
}

void Score::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_Score_s2clientprotocol_2fscore_2eproto.base);
  ::memset(&score_details_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&score_) -
      reinterpret_cast<char*>(&score_details_)) + sizeof(score_));
  score_type_ = 1;
}

Score::~Score() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.Score)
  SharedDtor();
}

void Score::SharedDtor() {
  if (this != internal_default_instance()) delete score_details_;
}

void Score::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const Score& Score::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_Score_s2clientprotocol_2fscore_2eproto.base);
  return *internal_default_instance();
}


void Score::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.Score)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    GOOGLE_DCHECK(score_details_ != nullptr);
    score_details_->Clear();
  }
  if (cached_has_bits & 0x00000006u) {
    score_ = 0;
    score_type_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* Score::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional .SC2APIProtocol.Score.ScoreType score_type = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::SC2APIProtocol::Score_ScoreType_IsValid(val))) {
            _internal_set_score_type(static_cast<::SC2APIProtocol::Score_ScoreType>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(6, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional int32 score = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_score(&has_bits);
          score_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint64(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.ScoreDetails score_details = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(_internal_mutable_score_details(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* Score::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.Score)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .SC2APIProtocol.Score.ScoreType score_type = 6;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnumToArray(
      6, this->_internal_score_type(), target);
  }

  // optional int32 score = 7;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32ToArray(7, this->_internal_score(), target);
  }

  // optional .SC2APIProtocol.ScoreDetails score_details = 8;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        8, _Internal::score_details(this), target, stream);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.Score)
  return target;
}

size_t Score::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.Score)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional .SC2APIProtocol.ScoreDetails score_details = 8;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *score_details_);
    }

    // optional int32 score = 7;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->_internal_score());
    }

    // optional .SC2APIProtocol.Score.ScoreType score_type = 6;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->_internal_score_type());
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void Score::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.Score)
  GOOGLE_DCHECK_NE(&from, this);
  const Score* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<Score>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.Score)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.Score)
    MergeFrom(*source);
  }
}

void Score::MergeFrom(const Score& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.Score)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_score_details()->::SC2APIProtocol::ScoreDetails::MergeFrom(from._internal_score_details());
    }
    if (cached_has_bits & 0x00000002u) {
      score_ = from.score_;
    }
    if (cached_has_bits & 0x00000004u) {
      score_type_ = from.score_type_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void Score::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.Score)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void Score::CopyFrom(const Score& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.Score)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void Score::InternalSwap(Score* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(score_details_, other->score_details_);
  swap(score_, other->score_);
  swap(score_type_, other->score_type_);
}

::PROTOBUF_NAMESPACE_ID::Metadata Score::GetMetadata() const {
  return GetMetadataStatic();
}


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

void CategoryScoreDetails::InitAsDefaultInstance() {
}
class CategoryScoreDetails::_Internal {
 public:
  using HasBits = decltype(std::declval<CategoryScoreDetails>()._has_bits_);
  static void set_has_none(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_army(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_economy(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_technology(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_upgrade(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

CategoryScoreDetails::CategoryScoreDetails()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.CategoryScoreDetails)
}
CategoryScoreDetails::CategoryScoreDetails(const CategoryScoreDetails& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&none_, &from.none_,
    static_cast<size_t>(reinterpret_cast<char*>(&upgrade_) -
    reinterpret_cast<char*>(&none_)) + sizeof(upgrade_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.CategoryScoreDetails)
}

void CategoryScoreDetails::SharedCtor() {
  ::memset(&none_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&upgrade_) -
      reinterpret_cast<char*>(&none_)) + sizeof(upgrade_));
}

CategoryScoreDetails::~CategoryScoreDetails() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.CategoryScoreDetails)
  SharedDtor();
}

void CategoryScoreDetails::SharedDtor() {
}

void CategoryScoreDetails::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const CategoryScoreDetails& CategoryScoreDetails::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_CategoryScoreDetails_s2clientprotocol_2fscore_2eproto.base);
  return *internal_default_instance();
}


void CategoryScoreDetails::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.CategoryScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    ::memset(&none_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&upgrade_) -
        reinterpret_cast<char*>(&none_)) + sizeof(upgrade_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* CategoryScoreDetails::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional float none = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_none(&has_bits);
          none_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float army = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_army(&has_bits);
          army_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float economy = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 29)) {
          _Internal::set_has_economy(&has_bits);
          economy_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float technology = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 37)) {
          _Internal::set_has_technology(&has_bits);
          technology_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float upgrade = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 45)) {
          _Internal::set_has_upgrade(&has_bits);
          upgrade_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* CategoryScoreDetails::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.CategoryScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional float none = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_none(), target);
  }

  // optional float army = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_army(), target);
  }

  // optional float economy = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_economy(), target);
  }

  // optional float technology = 4;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(4, this->_internal_technology(), target);
  }

  // optional float upgrade = 5;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(5, this->_internal_upgrade(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.CategoryScoreDetails)
  return target;
}

size_t CategoryScoreDetails::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.CategoryScoreDetails)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional float none = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 4;
    }

    // optional float army = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 4;
    }

    // optional float economy = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 4;
    }

    // optional float technology = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 + 4;
    }

    // optional float upgrade = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 4;
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void CategoryScoreDetails::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.CategoryScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  const CategoryScoreDetails* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<CategoryScoreDetails>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.CategoryScoreDetails)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.CategoryScoreDetails)
    MergeFrom(*source);
  }
}

void CategoryScoreDetails::MergeFrom(const CategoryScoreDetails& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.CategoryScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      none_ = from.none_;
    }
    if (cached_has_bits & 0x00000002u) {
      army_ = from.army_;
    }
    if (cached_has_bits & 0x00000004u) {
      economy_ = from.economy_;
    }
    if (cached_has_bits & 0x00000008u) {
      technology_ = from.technology_;
    }
    if (cached_has_bits & 0x00000010u) {
      upgrade_ = from.upgrade_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void CategoryScoreDetails::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.CategoryScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void CategoryScoreDetails::CopyFrom(const CategoryScoreDetails& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.CategoryScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void CategoryScoreDetails::InternalSwap(CategoryScoreDetails* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(none_, other->none_);
  swap(army_, other->army_);
  swap(economy_, other->economy_);
  swap(technology_, other->technology_);
  swap(upgrade_, other->upgrade_);
}

::PROTOBUF_NAMESPACE_ID::Metadata CategoryScoreDetails::GetMetadata() const {
  return GetMetadataStatic();
}


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

void VitalScoreDetails::InitAsDefaultInstance() {
}
class VitalScoreDetails::_Internal {
 public:
  using HasBits = decltype(std::declval<VitalScoreDetails>()._has_bits_);
  static void set_has_life(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_shields(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_energy(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

VitalScoreDetails::VitalScoreDetails()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.VitalScoreDetails)
}
VitalScoreDetails::VitalScoreDetails(const VitalScoreDetails& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&life_, &from.life_,
    static_cast<size_t>(reinterpret_cast<char*>(&energy_) -
    reinterpret_cast<char*>(&life_)) + sizeof(energy_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.VitalScoreDetails)
}

void VitalScoreDetails::SharedCtor() {
  ::memset(&life_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&energy_) -
      reinterpret_cast<char*>(&life_)) + sizeof(energy_));
}

VitalScoreDetails::~VitalScoreDetails() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.VitalScoreDetails)
  SharedDtor();
}

void VitalScoreDetails::SharedDtor() {
}

void VitalScoreDetails::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const VitalScoreDetails& VitalScoreDetails::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_VitalScoreDetails_s2clientprotocol_2fscore_2eproto.base);
  return *internal_default_instance();
}


void VitalScoreDetails::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.VitalScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    ::memset(&life_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&energy_) -
        reinterpret_cast<char*>(&life_)) + sizeof(energy_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* VitalScoreDetails::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional float life = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_life(&has_bits);
          life_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float shields = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_shields(&has_bits);
          shields_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float energy = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 29)) {
          _Internal::set_has_energy(&has_bits);
          energy_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* VitalScoreDetails::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.VitalScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional float life = 1;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_life(), target);
  }

  // optional float shields = 2;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_shields(), target);
  }

  // optional float energy = 3;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_energy(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.VitalScoreDetails)
  return target;
}

size_t VitalScoreDetails::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.VitalScoreDetails)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    // optional float life = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 4;
    }

    // optional float shields = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 4;
    }

    // optional float energy = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 4;
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void VitalScoreDetails::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.VitalScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  const VitalScoreDetails* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<VitalScoreDetails>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.VitalScoreDetails)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.VitalScoreDetails)
    MergeFrom(*source);
  }
}

void VitalScoreDetails::MergeFrom(const VitalScoreDetails& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.VitalScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      life_ = from.life_;
    }
    if (cached_has_bits & 0x00000002u) {
      shields_ = from.shields_;
    }
    if (cached_has_bits & 0x00000004u) {
      energy_ = from.energy_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void VitalScoreDetails::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.VitalScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void VitalScoreDetails::CopyFrom(const VitalScoreDetails& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.VitalScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void VitalScoreDetails::InternalSwap(VitalScoreDetails* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(life_, other->life_);
  swap(shields_, other->shields_);
  swap(energy_, other->energy_);
}

::PROTOBUF_NAMESPACE_ID::Metadata VitalScoreDetails::GetMetadata() const {
  return GetMetadataStatic();
}


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

void ScoreDetails::InitAsDefaultInstance() {
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->food_used_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->killed_minerals_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->killed_vespene_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->lost_minerals_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->lost_vespene_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->friendly_fire_minerals_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->friendly_fire_vespene_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->used_minerals_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->used_vespene_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->total_used_minerals_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->total_used_vespene_ = const_cast< ::SC2APIProtocol::CategoryScoreDetails*>(
      ::SC2APIProtocol::CategoryScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->total_damage_dealt_ = const_cast< ::SC2APIProtocol::VitalScoreDetails*>(
      ::SC2APIProtocol::VitalScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->total_damage_taken_ = const_cast< ::SC2APIProtocol::VitalScoreDetails*>(
      ::SC2APIProtocol::VitalScoreDetails::internal_default_instance());
  ::SC2APIProtocol::_ScoreDetails_default_instance_._instance.get_mutable()->total_healed_ = const_cast< ::SC2APIProtocol::VitalScoreDetails*>(
      ::SC2APIProtocol::VitalScoreDetails::internal_default_instance());
}
class ScoreDetails::_Internal {
 public:
  using HasBits = decltype(std::declval<ScoreDetails>()._has_bits_);
  static void set_has_idle_production_time(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_idle_worker_time(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_total_value_units(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_total_value_structures(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_killed_value_units(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_killed_value_structures(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_collected_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static void set_has_collected_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
  static void set_has_collection_rate_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static void set_has_collection_rate_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static void set_has_spent_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 16777216u;
  }
  static void set_has_spent_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 33554432u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& food_used(const ScoreDetails* msg);
  static void set_has_food_used(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& killed_minerals(const ScoreDetails* msg);
  static void set_has_killed_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& killed_vespene(const ScoreDetails* msg);
  static void set_has_killed_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& lost_minerals(const ScoreDetails* msg);
  static void set_has_lost_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& lost_vespene(const ScoreDetails* msg);
  static void set_has_lost_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& friendly_fire_minerals(const ScoreDetails* msg);
  static void set_has_friendly_fire_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& friendly_fire_vespene(const ScoreDetails* msg);
  static void set_has_friendly_fire_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& used_minerals(const ScoreDetails* msg);
  static void set_has_used_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& used_vespene(const ScoreDetails* msg);
  static void set_has_used_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& total_used_minerals(const ScoreDetails* msg);
  static void set_has_total_used_minerals(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static const ::SC2APIProtocol::CategoryScoreDetails& total_used_vespene(const ScoreDetails* msg);
  static void set_has_total_used_vespene(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static const ::SC2APIProtocol::VitalScoreDetails& total_damage_dealt(const ScoreDetails* msg);
  static void set_has_total_damage_dealt(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static const ::SC2APIProtocol::VitalScoreDetails& total_damage_taken(const ScoreDetails* msg);
  static void set_has_total_damage_taken(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static const ::SC2APIProtocol::VitalScoreDetails& total_healed(const ScoreDetails* msg);
  static void set_has_total_healed(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_current_apm(HasBits* has_bits) {
    (*has_bits)[0] |= 67108864u;
  }
  static void set_has_current_effective_apm(HasBits* has_bits) {
    (*has_bits)[0] |= 134217728u;
  }
};

const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::food_used(const ScoreDetails* msg) {
  return *msg->food_used_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::killed_minerals(const ScoreDetails* msg) {
  return *msg->killed_minerals_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::killed_vespene(const ScoreDetails* msg) {
  return *msg->killed_vespene_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::lost_minerals(const ScoreDetails* msg) {
  return *msg->lost_minerals_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::lost_vespene(const ScoreDetails* msg) {
  return *msg->lost_vespene_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::friendly_fire_minerals(const ScoreDetails* msg) {
  return *msg->friendly_fire_minerals_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::friendly_fire_vespene(const ScoreDetails* msg) {
  return *msg->friendly_fire_vespene_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::used_minerals(const ScoreDetails* msg) {
  return *msg->used_minerals_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::used_vespene(const ScoreDetails* msg) {
  return *msg->used_vespene_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::total_used_minerals(const ScoreDetails* msg) {
  return *msg->total_used_minerals_;
}
const ::SC2APIProtocol::CategoryScoreDetails&
ScoreDetails::_Internal::total_used_vespene(const ScoreDetails* msg) {
  return *msg->total_used_vespene_;
}
const ::SC2APIProtocol::VitalScoreDetails&
ScoreDetails::_Internal::total_damage_dealt(const ScoreDetails* msg) {
  return *msg->total_damage_dealt_;
}
const ::SC2APIProtocol::VitalScoreDetails&
ScoreDetails::_Internal::total_damage_taken(const ScoreDetails* msg) {
  return *msg->total_damage_taken_;
}
const ::SC2APIProtocol::VitalScoreDetails&
ScoreDetails::_Internal::total_healed(const ScoreDetails* msg) {
  return *msg->total_healed_;
}
ScoreDetails::ScoreDetails()
  : ::PROTOBUF_NAMESPACE_ID::Message(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:SC2APIProtocol.ScoreDetails)
}
ScoreDetails::ScoreDetails(const ScoreDetails& from)
  : ::PROTOBUF_NAMESPACE_ID::Message(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from._internal_has_food_used()) {
    food_used_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.food_used_);
  } else {
    food_used_ = nullptr;
  }
  if (from._internal_has_killed_minerals()) {
    killed_minerals_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.killed_minerals_);
  } else {
    killed_minerals_ = nullptr;
  }
  if (from._internal_has_killed_vespene()) {
    killed_vespene_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.killed_vespene_);
  } else {
    killed_vespene_ = nullptr;
  }
  if (from._internal_has_lost_minerals()) {
    lost_minerals_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.lost_minerals_);
  } else {
    lost_minerals_ = nullptr;
  }
  if (from._internal_has_lost_vespene()) {
    lost_vespene_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.lost_vespene_);
  } else {
    lost_vespene_ = nullptr;
  }
  if (from._internal_has_friendly_fire_minerals()) {
    friendly_fire_minerals_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.friendly_fire_minerals_);
  } else {
    friendly_fire_minerals_ = nullptr;
  }
  if (from._internal_has_friendly_fire_vespene()) {
    friendly_fire_vespene_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.friendly_fire_vespene_);
  } else {
    friendly_fire_vespene_ = nullptr;
  }
  if (from._internal_has_used_minerals()) {
    used_minerals_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.used_minerals_);
  } else {
    used_minerals_ = nullptr;
  }
  if (from._internal_has_used_vespene()) {
    used_vespene_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.used_vespene_);
  } else {
    used_vespene_ = nullptr;
  }
  if (from._internal_has_total_used_minerals()) {
    total_used_minerals_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.total_used_minerals_);
  } else {
    total_used_minerals_ = nullptr;
  }
  if (from._internal_has_total_used_vespene()) {
    total_used_vespene_ = new ::SC2APIProtocol::CategoryScoreDetails(*from.total_used_vespene_);
  } else {
    total_used_vespene_ = nullptr;
  }
  if (from._internal_has_total_damage_dealt()) {
    total_damage_dealt_ = new ::SC2APIProtocol::VitalScoreDetails(*from.total_damage_dealt_);
  } else {
    total_damage_dealt_ = nullptr;
  }
  if (from._internal_has_total_damage_taken()) {
    total_damage_taken_ = new ::SC2APIProtocol::VitalScoreDetails(*from.total_damage_taken_);
  } else {
    total_damage_taken_ = nullptr;
  }
  if (from._internal_has_total_healed()) {
    total_healed_ = new ::SC2APIProtocol::VitalScoreDetails(*from.total_healed_);
  } else {
    total_healed_ = nullptr;
  }
  ::memcpy(&idle_production_time_, &from.idle_production_time_,
    static_cast<size_t>(reinterpret_cast<char*>(&current_effective_apm_) -
    reinterpret_cast<char*>(&idle_production_time_)) + sizeof(current_effective_apm_));
  // @@protoc_insertion_point(copy_constructor:SC2APIProtocol.ScoreDetails)
}

void ScoreDetails::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto.base);
  ::memset(&food_used_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&current_effective_apm_) -
      reinterpret_cast<char*>(&food_used_)) + sizeof(current_effective_apm_));
}

ScoreDetails::~ScoreDetails() {
  // @@protoc_insertion_point(destructor:SC2APIProtocol.ScoreDetails)
  SharedDtor();
}

void ScoreDetails::SharedDtor() {
  if (this != internal_default_instance()) delete food_used_;
  if (this != internal_default_instance()) delete killed_minerals_;
  if (this != internal_default_instance()) delete killed_vespene_;
  if (this != internal_default_instance()) delete lost_minerals_;
  if (this != internal_default_instance()) delete lost_vespene_;
  if (this != internal_default_instance()) delete friendly_fire_minerals_;
  if (this != internal_default_instance()) delete friendly_fire_vespene_;
  if (this != internal_default_instance()) delete used_minerals_;
  if (this != internal_default_instance()) delete used_vespene_;
  if (this != internal_default_instance()) delete total_used_minerals_;
  if (this != internal_default_instance()) delete total_used_vespene_;
  if (this != internal_default_instance()) delete total_damage_dealt_;
  if (this != internal_default_instance()) delete total_damage_taken_;
  if (this != internal_default_instance()) delete total_healed_;
}

void ScoreDetails::SetCachedSize(int size) const {
  _cached_size_.Set(size);
}
const ScoreDetails& ScoreDetails::default_instance() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&::scc_info_ScoreDetails_s2clientprotocol_2fscore_2eproto.base);
  return *internal_default_instance();
}


void ScoreDetails::Clear() {
// @@protoc_insertion_point(message_clear_start:SC2APIProtocol.ScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(food_used_ != nullptr);
      food_used_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(killed_minerals_ != nullptr);
      killed_minerals_->Clear();
    }
    if (cached_has_bits & 0x00000004u) {
      GOOGLE_DCHECK(killed_vespene_ != nullptr);
      killed_vespene_->Clear();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(lost_minerals_ != nullptr);
      lost_minerals_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      GOOGLE_DCHECK(lost_vespene_ != nullptr);
      lost_vespene_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(friendly_fire_minerals_ != nullptr);
      friendly_fire_minerals_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      GOOGLE_DCHECK(friendly_fire_vespene_ != nullptr);
      friendly_fire_vespene_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      GOOGLE_DCHECK(used_minerals_ != nullptr);
      used_minerals_->Clear();
    }
  }
  if (cached_has_bits & 0x00003f00u) {
    if (cached_has_bits & 0x00000100u) {
      GOOGLE_DCHECK(used_vespene_ != nullptr);
      used_vespene_->Clear();
    }
    if (cached_has_bits & 0x00000200u) {
      GOOGLE_DCHECK(total_used_minerals_ != nullptr);
      total_used_minerals_->Clear();
    }
    if (cached_has_bits & 0x00000400u) {
      GOOGLE_DCHECK(total_used_vespene_ != nullptr);
      total_used_vespene_->Clear();
    }
    if (cached_has_bits & 0x00000800u) {
      GOOGLE_DCHECK(total_damage_dealt_ != nullptr);
      total_damage_dealt_->Clear();
    }
    if (cached_has_bits & 0x00001000u) {
      GOOGLE_DCHECK(total_damage_taken_ != nullptr);
      total_damage_taken_->Clear();
    }
    if (cached_has_bits & 0x00002000u) {
      GOOGLE_DCHECK(total_healed_ != nullptr);
      total_healed_->Clear();
    }
  }
  if (cached_has_bits & 0x0000c000u) {
    ::memset(&idle_production_time_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&idle_worker_time_) -
        reinterpret_cast<char*>(&idle_production_time_)) + sizeof(idle_worker_time_));
  }
  if (cached_has_bits & 0x00ff0000u) {
    ::memset(&total_value_units_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&collection_rate_vespene_) -
        reinterpret_cast<char*>(&total_value_units_)) + sizeof(collection_rate_vespene_));
  }
  if (cached_has_bits & 0x0f000000u) {
    ::memset(&spent_minerals_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&current_effective_apm_) -
        reinterpret_cast<char*>(&spent_minerals_)) + sizeof(current_effective_apm_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

const char* ScoreDetails::_InternalParse(const char* ptr, ::PROTOBUF_NAMESPACE_ID::internal::ParseContext* ctx) {
#define CHK_(x) if (PROTOBUF_PREDICT_FALSE(!(x))) goto failure
  _Internal::HasBits has_bits{};
  while (!ctx->Done(&ptr)) {
    ::PROTOBUF_NAMESPACE_ID::uint32 tag;
    ptr = ::PROTOBUF_NAMESPACE_ID::internal::ReadTag(ptr, &tag);
    CHK_(ptr);
    switch (tag >> 3) {
      // optional float idle_production_time = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_idle_production_time(&has_bits);
          idle_production_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float idle_worker_time = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_idle_worker_time(&has_bits);
          idle_worker_time_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float total_value_units = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 29)) {
          _Internal::set_has_total_value_units(&has_bits);
          total_value_units_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float total_value_structures = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 37)) {
          _Internal::set_has_total_value_structures(&has_bits);
          total_value_structures_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float killed_value_units = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 45)) {
          _Internal::set_has_killed_value_units(&has_bits);
          killed_value_units_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float killed_value_structures = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 53)) {
          _Internal::set_has_killed_value_structures(&has_bits);
          killed_value_structures_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float collected_minerals = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 61)) {
          _Internal::set_has_collected_minerals(&has_bits);
          collected_minerals_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float collected_vespene = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 69)) {
          _Internal::set_has_collected_vespene(&has_bits);
          collected_vespene_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float collection_rate_minerals = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) {
          _Internal::set_has_collection_rate_minerals(&has_bits);
          collection_rate_minerals_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float collection_rate_vespene = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 85)) {
          _Internal::set_has_collection_rate_vespene(&has_bits);
          collection_rate_vespene_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float spent_minerals = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 93)) {
          _Internal::set_has_spent_minerals(&has_bits);
          spent_minerals_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float spent_vespene = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 101)) {
          _Internal::set_has_spent_vespene(&has_bits);
          spent_vespene_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails food_used = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) {
          ptr = ctx->ParseMessage(_internal_mutable_food_used(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails killed_minerals = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) {
          ptr = ctx->ParseMessage(_internal_mutable_killed_minerals(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails killed_vespene = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) {
          ptr = ctx->ParseMessage(_internal_mutable_killed_vespene(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails lost_minerals = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) {
          ptr = ctx->ParseMessage(_internal_mutable_lost_minerals(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails lost_vespene = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) {
          ptr = ctx->ParseMessage(_internal_mutable_lost_vespene(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_minerals = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) {
          ptr = ctx->ParseMessage(_internal_mutable_friendly_fire_minerals(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_vespene = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 154)) {
          ptr = ctx->ParseMessage(_internal_mutable_friendly_fire_vespene(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails used_minerals = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) {
          ptr = ctx->ParseMessage(_internal_mutable_used_minerals(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails used_vespene = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 170)) {
          ptr = ctx->ParseMessage(_internal_mutable_used_vespene(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails total_used_minerals = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          ptr = ctx->ParseMessage(_internal_mutable_total_used_minerals(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.CategoryScoreDetails total_used_vespene = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) {
          ptr = ctx->ParseMessage(_internal_mutable_total_used_vespene(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.VitalScoreDetails total_damage_dealt = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) {
          ptr = ctx->ParseMessage(_internal_mutable_total_damage_dealt(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.VitalScoreDetails total_damage_taken = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) {
          ptr = ctx->ParseMessage(_internal_mutable_total_damage_taken(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .SC2APIProtocol.VitalScoreDetails total_healed = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) {
          ptr = ctx->ParseMessage(_internal_mutable_total_healed(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float current_apm = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 221)) {
          _Internal::set_has_current_apm(&has_bits);
          current_apm_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float current_effective_apm = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 229)) {
          _Internal::set_has_current_effective_apm(&has_bits);
          current_effective_apm_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      default: {
      handle_unusual:
        if ((tag & 7) == 4 || tag == 0) {
          ctx->SetLastTag(tag);
          goto success;
        }
        ptr = UnknownFieldParse(tag, &_internal_metadata_, ptr, ctx);
        CHK_(ptr != nullptr);
        continue;
      }
    }  // switch
  }  // while
success:
  _has_bits_.Or(has_bits);
  return ptr;
failure:
  ptr = nullptr;
  goto success;
#undef CHK_
}

::PROTOBUF_NAMESPACE_ID::uint8* ScoreDetails::_InternalSerialize(
    ::PROTOBUF_NAMESPACE_ID::uint8* target, ::PROTOBUF_NAMESPACE_ID::io::EpsCopyOutputStream* stream) const {
  // @@protoc_insertion_point(serialize_to_array_start:SC2APIProtocol.ScoreDetails)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional float idle_production_time = 1;
  if (cached_has_bits & 0x00004000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(1, this->_internal_idle_production_time(), target);
  }

  // optional float idle_worker_time = 2;
  if (cached_has_bits & 0x00008000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(2, this->_internal_idle_worker_time(), target);
  }

  // optional float total_value_units = 3;
  if (cached_has_bits & 0x00010000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(3, this->_internal_total_value_units(), target);
  }

  // optional float total_value_structures = 4;
  if (cached_has_bits & 0x00020000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(4, this->_internal_total_value_structures(), target);
  }

  // optional float killed_value_units = 5;
  if (cached_has_bits & 0x00040000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(5, this->_internal_killed_value_units(), target);
  }

  // optional float killed_value_structures = 6;
  if (cached_has_bits & 0x00080000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(6, this->_internal_killed_value_structures(), target);
  }

  // optional float collected_minerals = 7;
  if (cached_has_bits & 0x00100000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(7, this->_internal_collected_minerals(), target);
  }

  // optional float collected_vespene = 8;
  if (cached_has_bits & 0x00200000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(8, this->_internal_collected_vespene(), target);
  }

  // optional float collection_rate_minerals = 9;
  if (cached_has_bits & 0x00400000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(9, this->_internal_collection_rate_minerals(), target);
  }

  // optional float collection_rate_vespene = 10;
  if (cached_has_bits & 0x00800000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(10, this->_internal_collection_rate_vespene(), target);
  }

  // optional float spent_minerals = 11;
  if (cached_has_bits & 0x01000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(11, this->_internal_spent_minerals(), target);
  }

  // optional float spent_vespene = 12;
  if (cached_has_bits & 0x02000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(12, this->_internal_spent_vespene(), target);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails food_used = 13;
  if (cached_has_bits & 0x00000001u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        13, _Internal::food_used(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails killed_minerals = 14;
  if (cached_has_bits & 0x00000002u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        14, _Internal::killed_minerals(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails killed_vespene = 15;
  if (cached_has_bits & 0x00000004u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        15, _Internal::killed_vespene(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails lost_minerals = 16;
  if (cached_has_bits & 0x00000008u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        16, _Internal::lost_minerals(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails lost_vespene = 17;
  if (cached_has_bits & 0x00000010u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        17, _Internal::lost_vespene(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_minerals = 18;
  if (cached_has_bits & 0x00000020u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        18, _Internal::friendly_fire_minerals(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_vespene = 19;
  if (cached_has_bits & 0x00000040u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        19, _Internal::friendly_fire_vespene(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails used_minerals = 20;
  if (cached_has_bits & 0x00000080u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        20, _Internal::used_minerals(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails used_vespene = 21;
  if (cached_has_bits & 0x00000100u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        21, _Internal::used_vespene(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails total_used_minerals = 22;
  if (cached_has_bits & 0x00000200u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        22, _Internal::total_used_minerals(this), target, stream);
  }

  // optional .SC2APIProtocol.CategoryScoreDetails total_used_vespene = 23;
  if (cached_has_bits & 0x00000400u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        23, _Internal::total_used_vespene(this), target, stream);
  }

  // optional .SC2APIProtocol.VitalScoreDetails total_damage_dealt = 24;
  if (cached_has_bits & 0x00000800u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        24, _Internal::total_damage_dealt(this), target, stream);
  }

  // optional .SC2APIProtocol.VitalScoreDetails total_damage_taken = 25;
  if (cached_has_bits & 0x00001000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        25, _Internal::total_damage_taken(this), target, stream);
  }

  // optional .SC2APIProtocol.VitalScoreDetails total_healed = 26;
  if (cached_has_bits & 0x00002000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      InternalWriteMessage(
        26, _Internal::total_healed(this), target, stream);
  }

  // optional float current_apm = 27;
  if (cached_has_bits & 0x04000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(27, this->_internal_current_apm(), target);
  }

  // optional float current_effective_apm = 28;
  if (cached_has_bits & 0x08000000u) {
    target = stream->EnsureSpace(target);
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloatToArray(28, this->_internal_current_effective_apm(), target);
  }

  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    target = ::PROTOBUF_NAMESPACE_ID::internal::WireFormat::InternalSerializeUnknownFieldsToArray(
        _internal_metadata_.unknown_fields(), target, stream);
  }
  // @@protoc_insertion_point(serialize_to_array_end:SC2APIProtocol.ScoreDetails)
  return target;
}

size_t ScoreDetails::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:SC2APIProtocol.ScoreDetails)
  size_t total_size = 0;

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

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional .SC2APIProtocol.CategoryScoreDetails food_used = 13;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *food_used_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails killed_minerals = 14;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *killed_minerals_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails killed_vespene = 15;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *killed_vespene_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails lost_minerals = 16;
    if (cached_has_bits & 0x00000008u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *lost_minerals_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails lost_vespene = 17;
    if (cached_has_bits & 0x00000010u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *lost_vespene_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_minerals = 18;
    if (cached_has_bits & 0x00000020u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *friendly_fire_minerals_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails friendly_fire_vespene = 19;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *friendly_fire_vespene_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails used_minerals = 20;
    if (cached_has_bits & 0x00000080u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *used_minerals_);
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional .SC2APIProtocol.CategoryScoreDetails used_vespene = 21;
    if (cached_has_bits & 0x00000100u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *used_vespene_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails total_used_minerals = 22;
    if (cached_has_bits & 0x00000200u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *total_used_minerals_);
    }

    // optional .SC2APIProtocol.CategoryScoreDetails total_used_vespene = 23;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *total_used_vespene_);
    }

    // optional .SC2APIProtocol.VitalScoreDetails total_damage_dealt = 24;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *total_damage_dealt_);
    }

    // optional .SC2APIProtocol.VitalScoreDetails total_damage_taken = 25;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *total_damage_taken_);
    }

    // optional .SC2APIProtocol.VitalScoreDetails total_healed = 26;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *total_healed_);
    }

    // optional float idle_production_time = 1;
    if (cached_has_bits & 0x00004000u) {
      total_size += 1 + 4;
    }

    // optional float idle_worker_time = 2;
    if (cached_has_bits & 0x00008000u) {
      total_size += 1 + 4;
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // optional float total_value_units = 3;
    if (cached_has_bits & 0x00010000u) {
      total_size += 1 + 4;
    }

    // optional float total_value_structures = 4;
    if (cached_has_bits & 0x00020000u) {
      total_size += 1 + 4;
    }

    // optional float killed_value_units = 5;
    if (cached_has_bits & 0x00040000u) {
      total_size += 1 + 4;
    }

    // optional float killed_value_structures = 6;
    if (cached_has_bits & 0x00080000u) {
      total_size += 1 + 4;
    }

    // optional float collected_minerals = 7;
    if (cached_has_bits & 0x00100000u) {
      total_size += 1 + 4;
    }

    // optional float collected_vespene = 8;
    if (cached_has_bits & 0x00200000u) {
      total_size += 1 + 4;
    }

    // optional float collection_rate_minerals = 9;
    if (cached_has_bits & 0x00400000u) {
      total_size += 1 + 4;
    }

    // optional float collection_rate_vespene = 10;
    if (cached_has_bits & 0x00800000u) {
      total_size += 1 + 4;
    }

  }
  if (cached_has_bits & 0x0f000000u) {
    // optional float spent_minerals = 11;
    if (cached_has_bits & 0x01000000u) {
      total_size += 1 + 4;
    }

    // optional float spent_vespene = 12;
    if (cached_has_bits & 0x02000000u) {
      total_size += 1 + 4;
    }

    // optional float current_apm = 27;
    if (cached_has_bits & 0x04000000u) {
      total_size += 2 + 4;
    }

    // optional float current_effective_apm = 28;
    if (cached_has_bits & 0x08000000u) {
      total_size += 2 + 4;
    }

  }
  if (PROTOBUF_PREDICT_FALSE(_internal_metadata_.have_unknown_fields())) {
    return ::PROTOBUF_NAMESPACE_ID::internal::ComputeUnknownFieldsSize(
        _internal_metadata_, total_size, &_cached_size_);
  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void ScoreDetails::MergeFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_merge_from_start:SC2APIProtocol.ScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  const ScoreDetails* source =
      ::PROTOBUF_NAMESPACE_ID::DynamicCastToGenerated<ScoreDetails>(
          &from);
  if (source == nullptr) {
  // @@protoc_insertion_point(generalized_merge_from_cast_fail:SC2APIProtocol.ScoreDetails)
    ::PROTOBUF_NAMESPACE_ID::internal::ReflectionOps::Merge(from, this);
  } else {
  // @@protoc_insertion_point(generalized_merge_from_cast_success:SC2APIProtocol.ScoreDetails)
    MergeFrom(*source);
  }
}

void ScoreDetails::MergeFrom(const ScoreDetails& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:SC2APIProtocol.ScoreDetails)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _internal_mutable_food_used()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_food_used());
    }
    if (cached_has_bits & 0x00000002u) {
      _internal_mutable_killed_minerals()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_killed_minerals());
    }
    if (cached_has_bits & 0x00000004u) {
      _internal_mutable_killed_vespene()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_killed_vespene());
    }
    if (cached_has_bits & 0x00000008u) {
      _internal_mutable_lost_minerals()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_lost_minerals());
    }
    if (cached_has_bits & 0x00000010u) {
      _internal_mutable_lost_vespene()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_lost_vespene());
    }
    if (cached_has_bits & 0x00000020u) {
      _internal_mutable_friendly_fire_minerals()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_friendly_fire_minerals());
    }
    if (cached_has_bits & 0x00000040u) {
      _internal_mutable_friendly_fire_vespene()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_friendly_fire_vespene());
    }
    if (cached_has_bits & 0x00000080u) {
      _internal_mutable_used_minerals()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_used_minerals());
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      _internal_mutable_used_vespene()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_used_vespene());
    }
    if (cached_has_bits & 0x00000200u) {
      _internal_mutable_total_used_minerals()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_total_used_minerals());
    }
    if (cached_has_bits & 0x00000400u) {
      _internal_mutable_total_used_vespene()->::SC2APIProtocol::CategoryScoreDetails::MergeFrom(from._internal_total_used_vespene());
    }
    if (cached_has_bits & 0x00000800u) {
      _internal_mutable_total_damage_dealt()->::SC2APIProtocol::VitalScoreDetails::MergeFrom(from._internal_total_damage_dealt());
    }
    if (cached_has_bits & 0x00001000u) {
      _internal_mutable_total_damage_taken()->::SC2APIProtocol::VitalScoreDetails::MergeFrom(from._internal_total_damage_taken());
    }
    if (cached_has_bits & 0x00002000u) {
      _internal_mutable_total_healed()->::SC2APIProtocol::VitalScoreDetails::MergeFrom(from._internal_total_healed());
    }
    if (cached_has_bits & 0x00004000u) {
      idle_production_time_ = from.idle_production_time_;
    }
    if (cached_has_bits & 0x00008000u) {
      idle_worker_time_ = from.idle_worker_time_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      total_value_units_ = from.total_value_units_;
    }
    if (cached_has_bits & 0x00020000u) {
      total_value_structures_ = from.total_value_structures_;
    }
    if (cached_has_bits & 0x00040000u) {
      killed_value_units_ = from.killed_value_units_;
    }
    if (cached_has_bits & 0x00080000u) {
      killed_value_structures_ = from.killed_value_structures_;
    }
    if (cached_has_bits & 0x00100000u) {
      collected_minerals_ = from.collected_minerals_;
    }
    if (cached_has_bits & 0x00200000u) {
      collected_vespene_ = from.collected_vespene_;
    }
    if (cached_has_bits & 0x00400000u) {
      collection_rate_minerals_ = from.collection_rate_minerals_;
    }
    if (cached_has_bits & 0x00800000u) {
      collection_rate_vespene_ = from.collection_rate_vespene_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0f000000u) {
    if (cached_has_bits & 0x01000000u) {
      spent_minerals_ = from.spent_minerals_;
    }
    if (cached_has_bits & 0x02000000u) {
      spent_vespene_ = from.spent_vespene_;
    }
    if (cached_has_bits & 0x04000000u) {
      current_apm_ = from.current_apm_;
    }
    if (cached_has_bits & 0x08000000u) {
      current_effective_apm_ = from.current_effective_apm_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void ScoreDetails::CopyFrom(const ::PROTOBUF_NAMESPACE_ID::Message& from) {
// @@protoc_insertion_point(generalized_copy_from_start:SC2APIProtocol.ScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

void ScoreDetails::CopyFrom(const ScoreDetails& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:SC2APIProtocol.ScoreDetails)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void ScoreDetails::InternalSwap(ScoreDetails* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(food_used_, other->food_used_);
  swap(killed_minerals_, other->killed_minerals_);
  swap(killed_vespene_, other->killed_vespene_);
  swap(lost_minerals_, other->lost_minerals_);
  swap(lost_vespene_, other->lost_vespene_);
  swap(friendly_fire_minerals_, other->friendly_fire_minerals_);
  swap(friendly_fire_vespene_, other->friendly_fire_vespene_);
  swap(used_minerals_, other->used_minerals_);
  swap(used_vespene_, other->used_vespene_);
  swap(total_used_minerals_, other->total_used_minerals_);
  swap(total_used_vespene_, other->total_used_vespene_);
  swap(total_damage_dealt_, other->total_damage_dealt_);
  swap(total_damage_taken_, other->total_damage_taken_);
  swap(total_healed_, other->total_healed_);
  swap(idle_production_time_, other->idle_production_time_);
  swap(idle_worker_time_, other->idle_worker_time_);
  swap(total_value_units_, other->total_value_units_);
  swap(total_value_structures_, other->total_value_structures_);
  swap(killed_value_units_, other->killed_value_units_);
  swap(killed_value_structures_, other->killed_value_structures_);
  swap(collected_minerals_, other->collected_minerals_);
  swap(collected_vespene_, other->collected_vespene_);
  swap(collection_rate_minerals_, other->collection_rate_minerals_);
  swap(collection_rate_vespene_, other->collection_rate_vespene_);
  swap(spent_minerals_, other->spent_minerals_);
  swap(spent_vespene_, other->spent_vespene_);
  swap(current_apm_, other->current_apm_);
  swap(current_effective_apm_, other->current_effective_apm_);
}

::PROTOBUF_NAMESPACE_ID::Metadata ScoreDetails::GetMetadata() const {
  return GetMetadataStatic();
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace SC2APIProtocol
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::Score* Arena::CreateMaybeMessage< ::SC2APIProtocol::Score >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::Score >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::CategoryScoreDetails* Arena::CreateMaybeMessage< ::SC2APIProtocol::CategoryScoreDetails >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::CategoryScoreDetails >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::VitalScoreDetails* Arena::CreateMaybeMessage< ::SC2APIProtocol::VitalScoreDetails >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::VitalScoreDetails >(arena);
}
template<> PROTOBUF_NOINLINE ::SC2APIProtocol::ScoreDetails* Arena::CreateMaybeMessage< ::SC2APIProtocol::ScoreDetails >(Arena* arena) {
  return Arena::CreateInternal< ::SC2APIProtocol::ScoreDetails >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

// @@protoc_insertion_point(global_scope)
#include <google/protobuf/port_undef.inc>
