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

#include "system_profile.pb.h"

#include <algorithm>

#include <google/protobuf/stubs/common.h>
#include <google/protobuf/io/coded_stream.h>
#include <google/protobuf/extension_set.h>
#include <google/protobuf/wire_format_lite.h>
#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
// @@protoc_insertion_point(includes)
#include <google/protobuf/port_def.inc>
extern PROTOBUF_INTERNAL_EXPORT_extension_5finstall_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_ExtensionInstallProto_extension_5finstall_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_AntiVirusProduct_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_ChromeComponent_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_ExternalAccessPoint_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_ExternalAudioVideoDevice_CECCommand_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_FieldTrial_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_GoogleUpdate_ProductInfo_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<4> scc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Hardware_CPU_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Hardware_Drive_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Hardware_Graphics_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Hardware_InternalStorageDevice_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_LinkedAndroidPhoneData_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Network_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_OS_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_OS_Arc_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<0> scc_info_SystemProfileProto_Plugin_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_Stability_system_5fprofile_2eproto;
extern PROTOBUF_INTERNAL_EXPORT_system_5fprofile_2eproto ::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto;
namespace metrics {
class SystemProfileProto_OS_ArcDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_OS_Arc> _instance;
} _SystemProfileProto_OS_Arc_default_instance_;
class SystemProfileProto_OSDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_OS> _instance;
} _SystemProfileProto_OS_default_instance_;
class SystemProfileProto_Hardware_CPUDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Hardware_CPU> _instance;
} _SystemProfileProto_Hardware_CPU_default_instance_;
class SystemProfileProto_Hardware_GraphicsDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Hardware_Graphics> _instance;
} _SystemProfileProto_Hardware_Graphics_default_instance_;
class SystemProfileProto_Hardware_InternalStorageDeviceDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Hardware_InternalStorageDevice> _instance;
} _SystemProfileProto_Hardware_InternalStorageDevice_default_instance_;
class SystemProfileProto_Hardware_DriveDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Hardware_Drive> _instance;
} _SystemProfileProto_Hardware_Drive_default_instance_;
class SystemProfileProto_HardwareDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Hardware> _instance;
} _SystemProfileProto_Hardware_default_instance_;
class SystemProfileProto_NetworkDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Network> _instance;
} _SystemProfileProto_Network_default_instance_;
class SystemProfileProto_GoogleUpdate_ProductInfoDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_GoogleUpdate_ProductInfo> _instance;
} _SystemProfileProto_GoogleUpdate_ProductInfo_default_instance_;
class SystemProfileProto_GoogleUpdateDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_GoogleUpdate> _instance;
} _SystemProfileProto_GoogleUpdate_default_instance_;
class SystemProfileProto_PluginDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Plugin> _instance;
} _SystemProfileProto_Plugin_default_instance_;
class SystemProfileProto_Stability_PluginStabilityDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Stability_PluginStability> _instance;
} _SystemProfileProto_Stability_PluginStability_default_instance_;
class SystemProfileProto_StabilityDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_Stability> _instance;
} _SystemProfileProto_Stability_default_instance_;
class SystemProfileProto_FieldTrialDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_FieldTrial> _instance;
} _SystemProfileProto_FieldTrial_default_instance_;
class SystemProfileProto_ExternalAudioVideoDevice_AudioDescriptionDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_ExternalAudioVideoDevice_AudioDescription> _instance;
} _SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_default_instance_;
class SystemProfileProto_ExternalAudioVideoDevice_CECCommandDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_ExternalAudioVideoDevice_CECCommand> _instance;
} _SystemProfileProto_ExternalAudioVideoDevice_CECCommand_default_instance_;
class SystemProfileProto_ExternalAudioVideoDeviceDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_ExternalAudioVideoDevice> _instance;
} _SystemProfileProto_ExternalAudioVideoDevice_default_instance_;
class SystemProfileProto_ExternalAccessPointDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_ExternalAccessPoint> _instance;
} _SystemProfileProto_ExternalAccessPoint_default_instance_;
class SystemProfileProto_AntiVirusProductDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_AntiVirusProduct> _instance;
} _SystemProfileProto_AntiVirusProduct_default_instance_;
class SystemProfileProto_ChromeComponentDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_ChromeComponent> _instance;
} _SystemProfileProto_ChromeComponent_default_instance_;
class SystemProfileProto_LinkedAndroidPhoneDataDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto_LinkedAndroidPhoneData> _instance;
} _SystemProfileProto_LinkedAndroidPhoneData_default_instance_;
class SystemProfileProtoDefaultTypeInternal {
 public:
  ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<SystemProfileProto> _instance;
} _SystemProfileProto_default_instance_;
}  // namespace metrics
static void InitDefaultsscc_info_SystemProfileProto_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_default_instance_;
    new (ptr) ::metrics::SystemProfileProto();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<13> scc_info_SystemProfileProto_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 13, InitDefaultsscc_info_SystemProfileProto_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_OS_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Network_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Plugin_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Stability_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_FieldTrial_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_ExternalAccessPoint_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_AntiVirusProduct_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_ChromeComponent_system_5fprofile_2eproto.base,
      &scc_info_ExtensionInstallProto_extension_5finstall_2eproto.base,
      &scc_info_SystemProfileProto_LinkedAndroidPhoneData_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_AntiVirusProduct_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_AntiVirusProduct_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_AntiVirusProduct();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_AntiVirusProduct::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_ChromeComponent_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_ChromeComponent_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_ChromeComponent();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_ChromeComponent::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_ExternalAccessPoint_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_ExternalAccessPoint_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_ExternalAccessPoint();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_ExternalAccessPoint::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_ExternalAudioVideoDevice_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_ExternalAudioVideoDevice();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_ExternalAudioVideoDevice::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<2> scc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 2, InitDefaultsscc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_ExternalAudioVideoDevice_CECCommand_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_ExternalAudioVideoDevice_CECCommand_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_ExternalAudioVideoDevice_CECCommand_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_ExternalAudioVideoDevice_CECCommand();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_ExternalAudioVideoDevice_CECCommand::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_FieldTrial_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_FieldTrial_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_FieldTrial();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_FieldTrial::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_GoogleUpdate_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_GoogleUpdate();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_GoogleUpdate::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_GoogleUpdate_ProductInfo_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_GoogleUpdate_ProductInfo_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_GoogleUpdate_ProductInfo_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Hardware_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Hardware();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Hardware::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<4> scc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsscc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_Hardware_CPU_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Hardware_Graphics_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Hardware_InternalStorageDevice_system_5fprofile_2eproto.base,
      &scc_info_SystemProfileProto_Hardware_Drive_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_Hardware_CPU_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Hardware_CPU_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Hardware_CPU();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Hardware_CPU::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Hardware_Drive_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Hardware_Drive_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Hardware_Drive();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Hardware_Drive::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Hardware_Graphics_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Hardware_Graphics_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Hardware_Graphics();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Hardware_Graphics::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Hardware_InternalStorageDevice_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Hardware_InternalStorageDevice_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Hardware_InternalStorageDevice();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Hardware_InternalStorageDevice::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_LinkedAndroidPhoneData_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_LinkedAndroidPhoneData_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_LinkedAndroidPhoneData();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_LinkedAndroidPhoneData::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Network_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Network_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Network();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Network::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_OS_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_OS_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_OS();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_OS::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_OS_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_SystemProfileProto_OS_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_OS_Arc_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_OS_Arc_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_OS_Arc_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_OS_Arc();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_OS_Arc::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Plugin_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Plugin_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Plugin();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Plugin::InitAsDefaultInstance();
}

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

static void InitDefaultsscc_info_SystemProfileProto_Stability_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Stability_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Stability();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Stability::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_Stability_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_SystemProfileProto_Stability_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto.base,}};

static void InitDefaultsscc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto() {
  GOOGLE_PROTOBUF_VERIFY_VERSION;

  {
    void* ptr = &::metrics::_SystemProfileProto_Stability_PluginStability_default_instance_;
    new (ptr) ::metrics::SystemProfileProto_Stability_PluginStability();
    ::PROTOBUF_NAMESPACE_ID::internal::OnShutdownDestroyMessage(ptr);
  }
  ::metrics::SystemProfileProto_Stability_PluginStability::InitAsDefaultInstance();
}

::PROTOBUF_NAMESPACE_ID::internal::SCCInfo<1> scc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto =
    {{ATOMIC_VAR_INIT(::PROTOBUF_NAMESPACE_ID::internal::SCCInfoBase::kUninitialized), 1, InitDefaultsscc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto}, {
      &scc_info_SystemProfileProto_Plugin_system_5fprofile_2eproto.base,}};

namespace metrics {
bool SystemProfileProto_Hardware_InternalStorageDevice_Type_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Hardware_InternalStorageDevice_Type_strings[5] = {};

static const char SystemProfileProto_Hardware_InternalStorageDevice_Type_names[] =
  "TYPE_EMMC"
  "TYPE_NVME"
  "TYPE_SD_EXPRESS_INTERNAL"
  "TYPE_UFS"
  "TYPE_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Hardware_InternalStorageDevice_Type_entries[] = {
  { {SystemProfileProto_Hardware_InternalStorageDevice_Type_names + 0, 9}, 1 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Type_names + 9, 9}, 2 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Type_names + 18, 24}, 4 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Type_names + 42, 8}, 3 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Type_names + 50, 12}, 0 },
};

static const int SystemProfileProto_Hardware_InternalStorageDevice_Type_entries_by_number[] = {
  4, // 0 -> TYPE_UNKNOWN
  0, // 1 -> TYPE_EMMC
  1, // 2 -> TYPE_NVME
  3, // 3 -> TYPE_UFS
  2, // 4 -> TYPE_SD_EXPRESS_INTERNAL
};

const std::string& SystemProfileProto_Hardware_InternalStorageDevice_Type_Name(
    SystemProfileProto_Hardware_InternalStorageDevice_Type value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Hardware_InternalStorageDevice_Type_entries,
          SystemProfileProto_Hardware_InternalStorageDevice_Type_entries_by_number,
          5, SystemProfileProto_Hardware_InternalStorageDevice_Type_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Hardware_InternalStorageDevice_Type_entries,
      SystemProfileProto_Hardware_InternalStorageDevice_Type_entries_by_number,
      5, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Hardware_InternalStorageDevice_Type_strings[idx].get();
}
bool SystemProfileProto_Hardware_InternalStorageDevice_Type_Parse(
    const std::string& name, SystemProfileProto_Hardware_InternalStorageDevice_Type* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Hardware_InternalStorageDevice_Type_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Hardware_InternalStorageDevice_Type>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::TYPE_UNKNOWN;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::TYPE_EMMC;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::TYPE_NVME;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::TYPE_UFS;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::TYPE_SD_EXPRESS_INTERNAL;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::Type_MIN;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Type SystemProfileProto_Hardware_InternalStorageDevice::Type_MAX;
constexpr int SystemProfileProto_Hardware_InternalStorageDevice::Type_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Hardware_InternalStorageDevice_Purpose_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Hardware_InternalStorageDevice_Purpose_strings[4] = {};

static const char SystemProfileProto_Hardware_InternalStorageDevice_Purpose_names[] =
  "PURPOSE_BOOT"
  "PURPOSE_BOOT_SWAP"
  "PURPOSE_SWAP"
  "PURPOSE_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries[] = {
  { {SystemProfileProto_Hardware_InternalStorageDevice_Purpose_names + 0, 12}, 1 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Purpose_names + 12, 17}, 3 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Purpose_names + 29, 12}, 2 },
  { {SystemProfileProto_Hardware_InternalStorageDevice_Purpose_names + 41, 15}, 0 },
};

static const int SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries_by_number[] = {
  3, // 0 -> PURPOSE_UNKNOWN
  0, // 1 -> PURPOSE_BOOT
  2, // 2 -> PURPOSE_SWAP
  1, // 3 -> PURPOSE_BOOT_SWAP
};

const std::string& SystemProfileProto_Hardware_InternalStorageDevice_Purpose_Name(
    SystemProfileProto_Hardware_InternalStorageDevice_Purpose value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries,
          SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries_by_number,
          4, SystemProfileProto_Hardware_InternalStorageDevice_Purpose_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries,
      SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries_by_number,
      4, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Hardware_InternalStorageDevice_Purpose_strings[idx].get();
}
bool SystemProfileProto_Hardware_InternalStorageDevice_Purpose_Parse(
    const std::string& name, SystemProfileProto_Hardware_InternalStorageDevice_Purpose* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Hardware_InternalStorageDevice_Purpose_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Hardware_InternalStorageDevice_Purpose>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::PURPOSE_UNKNOWN;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::PURPOSE_BOOT;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::PURPOSE_SWAP;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::PURPOSE_BOOT_SWAP;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::Purpose_MIN;
constexpr SystemProfileProto_Hardware_InternalStorageDevice_Purpose SystemProfileProto_Hardware_InternalStorageDevice::Purpose_MAX;
constexpr int SystemProfileProto_Hardware_InternalStorageDevice::Purpose_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Hardware_FormFactor_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Hardware_FormFactor_strings[5] = {};

static const char SystemProfileProto_Hardware_FormFactor_names[] =
  "FORM_FACTOR_DESKTOP"
  "FORM_FACTOR_KIOSK"
  "FORM_FACTOR_PHONE"
  "FORM_FACTOR_TABLET"
  "FORM_FACTOR_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Hardware_FormFactor_entries[] = {
  { {SystemProfileProto_Hardware_FormFactor_names + 0, 19}, 1 },
  { {SystemProfileProto_Hardware_FormFactor_names + 19, 17}, 4 },
  { {SystemProfileProto_Hardware_FormFactor_names + 36, 17}, 2 },
  { {SystemProfileProto_Hardware_FormFactor_names + 53, 18}, 3 },
  { {SystemProfileProto_Hardware_FormFactor_names + 71, 19}, 0 },
};

static const int SystemProfileProto_Hardware_FormFactor_entries_by_number[] = {
  4, // 0 -> FORM_FACTOR_UNKNOWN
  0, // 1 -> FORM_FACTOR_DESKTOP
  2, // 2 -> FORM_FACTOR_PHONE
  3, // 3 -> FORM_FACTOR_TABLET
  1, // 4 -> FORM_FACTOR_KIOSK
};

const std::string& SystemProfileProto_Hardware_FormFactor_Name(
    SystemProfileProto_Hardware_FormFactor value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Hardware_FormFactor_entries,
          SystemProfileProto_Hardware_FormFactor_entries_by_number,
          5, SystemProfileProto_Hardware_FormFactor_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Hardware_FormFactor_entries,
      SystemProfileProto_Hardware_FormFactor_entries_by_number,
      5, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Hardware_FormFactor_strings[idx].get();
}
bool SystemProfileProto_Hardware_FormFactor_Parse(
    const std::string& name, SystemProfileProto_Hardware_FormFactor* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Hardware_FormFactor_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Hardware_FormFactor>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FORM_FACTOR_UNKNOWN;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FORM_FACTOR_DESKTOP;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FORM_FACTOR_PHONE;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FORM_FACTOR_TABLET;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FORM_FACTOR_KIOSK;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FormFactor_MIN;
constexpr SystemProfileProto_Hardware_FormFactor SystemProfileProto_Hardware::FormFactor_MAX;
constexpr int SystemProfileProto_Hardware::FormFactor_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Network_ConnectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Network_ConnectionType_strings[10] = {};

static const char SystemProfileProto_Network_ConnectionType_names[] =
  "CONNECTION_2G"
  "CONNECTION_3G"
  "CONNECTION_4G"
  "CONNECTION_5G"
  "CONNECTION_AMBIGUOUS"
  "CONNECTION_BLUETOOTH"
  "CONNECTION_ETHERNET"
  "CONNECTION_NONE"
  "CONNECTION_UNKNOWN"
  "CONNECTION_WIFI";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Network_ConnectionType_entries[] = {
  { {SystemProfileProto_Network_ConnectionType_names + 0, 13}, 3 },
  { {SystemProfileProto_Network_ConnectionType_names + 13, 13}, 4 },
  { {SystemProfileProto_Network_ConnectionType_names + 26, 13}, 5 },
  { {SystemProfileProto_Network_ConnectionType_names + 39, 13}, 9 },
  { {SystemProfileProto_Network_ConnectionType_names + 52, 20}, 8 },
  { {SystemProfileProto_Network_ConnectionType_names + 72, 20}, 6 },
  { {SystemProfileProto_Network_ConnectionType_names + 92, 19}, 1 },
  { {SystemProfileProto_Network_ConnectionType_names + 111, 15}, 7 },
  { {SystemProfileProto_Network_ConnectionType_names + 126, 18}, 0 },
  { {SystemProfileProto_Network_ConnectionType_names + 144, 15}, 2 },
};

static const int SystemProfileProto_Network_ConnectionType_entries_by_number[] = {
  8, // 0 -> CONNECTION_UNKNOWN
  6, // 1 -> CONNECTION_ETHERNET
  9, // 2 -> CONNECTION_WIFI
  0, // 3 -> CONNECTION_2G
  1, // 4 -> CONNECTION_3G
  2, // 5 -> CONNECTION_4G
  5, // 6 -> CONNECTION_BLUETOOTH
  7, // 7 -> CONNECTION_NONE
  4, // 8 -> CONNECTION_AMBIGUOUS
  3, // 9 -> CONNECTION_5G
};

const std::string& SystemProfileProto_Network_ConnectionType_Name(
    SystemProfileProto_Network_ConnectionType value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Network_ConnectionType_entries,
          SystemProfileProto_Network_ConnectionType_entries_by_number,
          10, SystemProfileProto_Network_ConnectionType_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Network_ConnectionType_entries,
      SystemProfileProto_Network_ConnectionType_entries_by_number,
      10, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Network_ConnectionType_strings[idx].get();
}
bool SystemProfileProto_Network_ConnectionType_Parse(
    const std::string& name, SystemProfileProto_Network_ConnectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Network_ConnectionType_entries, 10, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Network_ConnectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_UNKNOWN;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_ETHERNET;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_WIFI;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_2G;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_3G;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_4G;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_BLUETOOTH;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_NONE;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_AMBIGUOUS;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::CONNECTION_5G;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::ConnectionType_MIN;
constexpr SystemProfileProto_Network_ConnectionType SystemProfileProto_Network::ConnectionType_MAX;
constexpr int SystemProfileProto_Network::ConnectionType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Network_WifiPHYLayerProtocol_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Network_WifiPHYLayerProtocol_strings[7] = {};

static const char SystemProfileProto_Network_WifiPHYLayerProtocol_names[] =
  "WIFI_PHY_LAYER_PROTOCOL_A"
  "WIFI_PHY_LAYER_PROTOCOL_ANCIENT"
  "WIFI_PHY_LAYER_PROTOCOL_B"
  "WIFI_PHY_LAYER_PROTOCOL_G"
  "WIFI_PHY_LAYER_PROTOCOL_N"
  "WIFI_PHY_LAYER_PROTOCOL_NONE"
  "WIFI_PHY_LAYER_PROTOCOL_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Network_WifiPHYLayerProtocol_entries[] = {
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 0, 25}, 2 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 25, 31}, 1 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 56, 25}, 3 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 81, 25}, 4 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 106, 25}, 5 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 131, 28}, 0 },
  { {SystemProfileProto_Network_WifiPHYLayerProtocol_names + 159, 31}, 6 },
};

static const int SystemProfileProto_Network_WifiPHYLayerProtocol_entries_by_number[] = {
  5, // 0 -> WIFI_PHY_LAYER_PROTOCOL_NONE
  1, // 1 -> WIFI_PHY_LAYER_PROTOCOL_ANCIENT
  0, // 2 -> WIFI_PHY_LAYER_PROTOCOL_A
  2, // 3 -> WIFI_PHY_LAYER_PROTOCOL_B
  3, // 4 -> WIFI_PHY_LAYER_PROTOCOL_G
  4, // 5 -> WIFI_PHY_LAYER_PROTOCOL_N
  6, // 6 -> WIFI_PHY_LAYER_PROTOCOL_UNKNOWN
};

const std::string& SystemProfileProto_Network_WifiPHYLayerProtocol_Name(
    SystemProfileProto_Network_WifiPHYLayerProtocol value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Network_WifiPHYLayerProtocol_entries,
          SystemProfileProto_Network_WifiPHYLayerProtocol_entries_by_number,
          7, SystemProfileProto_Network_WifiPHYLayerProtocol_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Network_WifiPHYLayerProtocol_entries,
      SystemProfileProto_Network_WifiPHYLayerProtocol_entries_by_number,
      7, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Network_WifiPHYLayerProtocol_strings[idx].get();
}
bool SystemProfileProto_Network_WifiPHYLayerProtocol_Parse(
    const std::string& name, SystemProfileProto_Network_WifiPHYLayerProtocol* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Network_WifiPHYLayerProtocol_entries, 7, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Network_WifiPHYLayerProtocol>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_NONE;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_ANCIENT;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_A;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_B;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_G;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_N;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WIFI_PHY_LAYER_PROTOCOL_UNKNOWN;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WifiPHYLayerProtocol_MIN;
constexpr SystemProfileProto_Network_WifiPHYLayerProtocol SystemProfileProto_Network::WifiPHYLayerProtocol_MAX;
constexpr int SystemProfileProto_Network::WifiPHYLayerProtocol_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Network_EffectiveConnectionType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Network_EffectiveConnectionType_strings[7] = {};

static const char SystemProfileProto_Network_EffectiveConnectionType_names[] =
  "DEPRECATED_EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS"
  "EFFECTIVE_CONNECTION_TYPE_2G"
  "EFFECTIVE_CONNECTION_TYPE_3G"
  "EFFECTIVE_CONNECTION_TYPE_4G"
  "EFFECTIVE_CONNECTION_TYPE_OFFLINE"
  "EFFECTIVE_CONNECTION_TYPE_SLOW_2G"
  "EFFECTIVE_CONNECTION_TYPE_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Network_EffectiveConnectionType_entries[] = {
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 0, 46}, 1 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 46, 28}, 4 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 74, 28}, 5 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 102, 28}, 6 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 130, 33}, 2 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 163, 33}, 3 },
  { {SystemProfileProto_Network_EffectiveConnectionType_names + 196, 33}, 0 },
};

static const int SystemProfileProto_Network_EffectiveConnectionType_entries_by_number[] = {
  6, // 0 -> EFFECTIVE_CONNECTION_TYPE_UNKNOWN
  0, // 1 -> DEPRECATED_EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS
  4, // 2 -> EFFECTIVE_CONNECTION_TYPE_OFFLINE
  5, // 3 -> EFFECTIVE_CONNECTION_TYPE_SLOW_2G
  1, // 4 -> EFFECTIVE_CONNECTION_TYPE_2G
  2, // 5 -> EFFECTIVE_CONNECTION_TYPE_3G
  3, // 6 -> EFFECTIVE_CONNECTION_TYPE_4G
};

const std::string& SystemProfileProto_Network_EffectiveConnectionType_Name(
    SystemProfileProto_Network_EffectiveConnectionType value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Network_EffectiveConnectionType_entries,
          SystemProfileProto_Network_EffectiveConnectionType_entries_by_number,
          7, SystemProfileProto_Network_EffectiveConnectionType_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Network_EffectiveConnectionType_entries,
      SystemProfileProto_Network_EffectiveConnectionType_entries_by_number,
      7, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Network_EffectiveConnectionType_strings[idx].get();
}
bool SystemProfileProto_Network_EffectiveConnectionType_Parse(
    const std::string& name, SystemProfileProto_Network_EffectiveConnectionType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Network_EffectiveConnectionType_entries, 7, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Network_EffectiveConnectionType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::DEPRECATED_EFFECTIVE_CONNECTION_TYPE_AMBIGUOUS;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_OFFLINE;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_SLOW_2G;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_2G;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_3G;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EFFECTIVE_CONNECTION_TYPE_4G;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EffectiveConnectionType_MIN;
constexpr SystemProfileProto_Network_EffectiveConnectionType SystemProfileProto_Network::EffectiveConnectionType_MAX;
constexpr int SystemProfileProto_Network::EffectiveConnectionType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_strings[5] = {};

static const char SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names[] =
  "INSTALL_RESULT_EXIT_CODE"
  "INSTALL_RESULT_FAILED_CUSTOM_ERROR"
  "INSTALL_RESULT_FAILED_MSI_ERROR"
  "INSTALL_RESULT_FAILED_SYSTEM_ERROR"
  "INSTALL_RESULT_SUCCESS";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries[] = {
  { {SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names + 0, 24}, 4 },
  { {SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names + 24, 34}, 1 },
  { {SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names + 58, 31}, 2 },
  { {SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names + 89, 34}, 3 },
  { {SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_names + 123, 22}, 0 },
};

static const int SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries_by_number[] = {
  4, // 0 -> INSTALL_RESULT_SUCCESS
  1, // 1 -> INSTALL_RESULT_FAILED_CUSTOM_ERROR
  2, // 2 -> INSTALL_RESULT_FAILED_MSI_ERROR
  3, // 3 -> INSTALL_RESULT_FAILED_SYSTEM_ERROR
  0, // 4 -> INSTALL_RESULT_EXIT_CODE
};

const std::string& SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_Name(
    SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries,
          SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries_by_number,
          5, SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries,
      SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries_by_number,
      5, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_strings[idx].get();
}
bool SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_Parse(
    const std::string& name, SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::INSTALL_RESULT_SUCCESS;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::INSTALL_RESULT_FAILED_CUSTOM_ERROR;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::INSTALL_RESULT_FAILED_MSI_ERROR;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::INSTALL_RESULT_FAILED_SYSTEM_ERROR;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::INSTALL_RESULT_EXIT_CODE;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::InstallResult_MIN;
constexpr SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult SystemProfileProto_GoogleUpdate_ProductInfo::InstallResult_MAX;
constexpr int SystemProfileProto_GoogleUpdate_ProductInfo::InstallResult_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_strings[15] = {};

static const char SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names[] =
  "AUDIO_FORMAT_AAC"
  "AUDIO_FORMAT_AC_3"
  "AUDIO_FORMAT_ATRAC"
  "AUDIO_FORMAT_DD_PLUS"
  "AUDIO_FORMAT_DST_AUDIO"
  "AUDIO_FORMAT_DTS"
  "AUDIO_FORMAT_DTS_HD"
  "AUDIO_FORMAT_LPCM"
  "AUDIO_FORMAT_MICROSOFT_WMA_PRO"
  "AUDIO_FORMAT_MLP_DOLBY_TRUEHD"
  "AUDIO_FORMAT_MP3"
  "AUDIO_FORMAT_MPEG1"
  "AUDIO_FORMAT_MPEG2"
  "AUDIO_FORMAT_ONE_BIT"
  "AUDIO_FORMAT_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries[] = {
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 0, 16}, 6 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 16, 17}, 2 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 33, 18}, 8 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 51, 20}, 10 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 71, 22}, 13 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 93, 16}, 7 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 109, 19}, 11 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 128, 17}, 1 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 145, 30}, 14 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 175, 29}, 12 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 204, 16}, 4 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 220, 18}, 3 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 238, 18}, 5 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 256, 20}, 9 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_names + 276, 20}, 0 },
};

static const int SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries_by_number[] = {
  14, // 0 -> AUDIO_FORMAT_UNKNOWN
  7, // 1 -> AUDIO_FORMAT_LPCM
  1, // 2 -> AUDIO_FORMAT_AC_3
  11, // 3 -> AUDIO_FORMAT_MPEG1
  10, // 4 -> AUDIO_FORMAT_MP3
  12, // 5 -> AUDIO_FORMAT_MPEG2
  0, // 6 -> AUDIO_FORMAT_AAC
  5, // 7 -> AUDIO_FORMAT_DTS
  2, // 8 -> AUDIO_FORMAT_ATRAC
  13, // 9 -> AUDIO_FORMAT_ONE_BIT
  3, // 10 -> AUDIO_FORMAT_DD_PLUS
  6, // 11 -> AUDIO_FORMAT_DTS_HD
  9, // 12 -> AUDIO_FORMAT_MLP_DOLBY_TRUEHD
  4, // 13 -> AUDIO_FORMAT_DST_AUDIO
  8, // 14 -> AUDIO_FORMAT_MICROSOFT_WMA_PRO
};

const std::string& SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_Name(
    SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries,
          SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries_by_number,
          15, SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries,
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries_by_number,
      15, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_strings[idx].get();
}
bool SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_Parse(
    const std::string& name, SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_entries, 15, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_UNKNOWN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_LPCM;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_AC_3;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_MPEG1;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_MP3;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_MPEG2;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_AAC;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_DTS;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_ATRAC;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_ONE_BIT;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_DD_PLUS;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_DTS_HD;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_MLP_DOLBY_TRUEHD;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_DST_AUDIO;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AUDIO_FORMAT_MICROSOFT_WMA_PRO;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AudioFormat_MIN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AudioFormat_MAX;
constexpr int SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::AudioFormat_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_strings[2] = {};

static const char SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_names[] =
  "ANALOG"
  "DIGITAL";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries[] = {
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_names + 0, 6}, 0 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_names + 6, 7}, 1 },
};

static const int SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries_by_number[] = {
  0, // 0 -> ANALOG
  1, // 1 -> DIGITAL
};

const std::string& SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_Name(
    SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries,
          SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries_by_number,
          2, SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries,
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries_by_number,
      2, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_strings[idx].get();
}
bool SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_Parse(
    const std::string& name, SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_entries, 2, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::ANALOG;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::DIGITAL;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::OutputMode_MIN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::OutputMode_MAX;
constexpr int SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::OutputMode_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_strings[6] = {};

static const char SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names[] =
  "AV_DEVICE_TYPE_AUDIO_SYSTEM"
  "AV_DEVICE_TYPE_PLAYER"
  "AV_DEVICE_TYPE_RECORDER"
  "AV_DEVICE_TYPE_TUNER"
  "AV_DEVICE_TYPE_TV"
  "AV_DEVICE_TYPE_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries[] = {
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 0, 27}, 5 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 27, 21}, 4 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 48, 23}, 2 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 71, 20}, 3 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 91, 17}, 1 },
  { {SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_names + 108, 22}, 0 },
};

static const int SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries_by_number[] = {
  5, // 0 -> AV_DEVICE_TYPE_UNKNOWN
  4, // 1 -> AV_DEVICE_TYPE_TV
  2, // 2 -> AV_DEVICE_TYPE_RECORDER
  3, // 3 -> AV_DEVICE_TYPE_TUNER
  1, // 4 -> AV_DEVICE_TYPE_PLAYER
  0, // 5 -> AV_DEVICE_TYPE_AUDIO_SYSTEM
};

const std::string& SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_Name(
    SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries,
          SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries_by_number,
          6, SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries,
      SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries_by_number,
      6, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_strings[idx].get();
}
bool SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_Parse(
    const std::string& name, SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_entries, 6, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_UNKNOWN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_TV;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_RECORDER;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_TUNER;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_PLAYER;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AV_DEVICE_TYPE_AUDIO_SYSTEM;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AVDeviceType_MIN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType SystemProfileProto_ExternalAudioVideoDevice::AVDeviceType_MAX;
constexpr int SystemProfileProto_ExternalAudioVideoDevice::AVDeviceType_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_strings[5] = {};

static const char SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names[] =
  "COLOR_ENCODING_RGB"
  "COLOR_ENCODING_UNKNOWN"
  "COLOR_ENCODING_YUV420"
  "COLOR_ENCODING_YUV422"
  "COLOR_ENCODING_YUV444";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries[] = {
  { {SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names + 0, 18}, 1 },
  { {SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names + 18, 22}, 0 },
  { {SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names + 40, 21}, 4 },
  { {SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names + 61, 21}, 3 },
  { {SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_names + 82, 21}, 2 },
};

static const int SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries_by_number[] = {
  1, // 0 -> COLOR_ENCODING_UNKNOWN
  0, // 1 -> COLOR_ENCODING_RGB
  4, // 2 -> COLOR_ENCODING_YUV444
  3, // 3 -> COLOR_ENCODING_YUV422
  2, // 4 -> COLOR_ENCODING_YUV420
};

const std::string& SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_Name(
    SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries,
          SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries_by_number,
          5, SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries,
      SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries_by_number,
      5, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_strings[idx].get();
}
bool SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_Parse(
    const std::string& name, SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::COLOR_ENCODING_UNKNOWN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::COLOR_ENCODING_RGB;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::COLOR_ENCODING_YUV444;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::COLOR_ENCODING_YUV422;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::COLOR_ENCODING_YUV420;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::ColorEncoding_MIN;
constexpr SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding SystemProfileProto_ExternalAudioVideoDevice::ColorEncoding_MAX;
constexpr int SystemProfileProto_ExternalAudioVideoDevice::ColorEncoding_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_Channel_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
    case 4:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_Channel_strings[5] = {};

static const char SystemProfileProto_Channel_names[] =
  "CHANNEL_BETA"
  "CHANNEL_CANARY"
  "CHANNEL_DEV"
  "CHANNEL_STABLE"
  "CHANNEL_UNKNOWN";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_Channel_entries[] = {
  { {SystemProfileProto_Channel_names + 0, 12}, 3 },
  { {SystemProfileProto_Channel_names + 12, 14}, 1 },
  { {SystemProfileProto_Channel_names + 26, 11}, 2 },
  { {SystemProfileProto_Channel_names + 37, 14}, 4 },
  { {SystemProfileProto_Channel_names + 51, 15}, 0 },
};

static const int SystemProfileProto_Channel_entries_by_number[] = {
  4, // 0 -> CHANNEL_UNKNOWN
  1, // 1 -> CHANNEL_CANARY
  2, // 2 -> CHANNEL_DEV
  0, // 3 -> CHANNEL_BETA
  3, // 4 -> CHANNEL_STABLE
};

const std::string& SystemProfileProto_Channel_Name(
    SystemProfileProto_Channel value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_Channel_entries,
          SystemProfileProto_Channel_entries_by_number,
          5, SystemProfileProto_Channel_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_Channel_entries,
      SystemProfileProto_Channel_entries_by_number,
      5, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_Channel_strings[idx].get();
}
bool SystemProfileProto_Channel_Parse(
    const std::string& name, SystemProfileProto_Channel* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_Channel_entries, 5, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_Channel>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_Channel SystemProfileProto::CHANNEL_UNKNOWN;
constexpr SystemProfileProto_Channel SystemProfileProto::CHANNEL_CANARY;
constexpr SystemProfileProto_Channel SystemProfileProto::CHANNEL_DEV;
constexpr SystemProfileProto_Channel SystemProfileProto::CHANNEL_BETA;
constexpr SystemProfileProto_Channel SystemProfileProto::CHANNEL_STABLE;
constexpr SystemProfileProto_Channel SystemProfileProto::Channel_MIN;
constexpr SystemProfileProto_Channel SystemProfileProto::Channel_MAX;
constexpr int SystemProfileProto::Channel_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ExtensionsState_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ExtensionsState_strings[4] = {};

static const char SystemProfileProto_ExtensionsState_names[] =
  "HAS_OFFSTORE"
  "NO_EXTENSIONS"
  "NO_OFFSTORE_UNVERIFIED"
  "NO_OFFSTORE_VERIFIED";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ExtensionsState_entries[] = {
  { {SystemProfileProto_ExtensionsState_names + 0, 12}, 3 },
  { {SystemProfileProto_ExtensionsState_names + 12, 13}, 0 },
  { {SystemProfileProto_ExtensionsState_names + 25, 22}, 2 },
  { {SystemProfileProto_ExtensionsState_names + 47, 20}, 1 },
};

static const int SystemProfileProto_ExtensionsState_entries_by_number[] = {
  1, // 0 -> NO_EXTENSIONS
  3, // 1 -> NO_OFFSTORE_VERIFIED
  2, // 2 -> NO_OFFSTORE_UNVERIFIED
  0, // 3 -> HAS_OFFSTORE
};

const std::string& SystemProfileProto_ExtensionsState_Name(
    SystemProfileProto_ExtensionsState value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ExtensionsState_entries,
          SystemProfileProto_ExtensionsState_entries_by_number,
          4, SystemProfileProto_ExtensionsState_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ExtensionsState_entries,
      SystemProfileProto_ExtensionsState_entries_by_number,
      4, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ExtensionsState_strings[idx].get();
}
bool SystemProfileProto_ExtensionsState_Parse(
    const std::string& name, SystemProfileProto_ExtensionsState* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ExtensionsState_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ExtensionsState>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::NO_EXTENSIONS;
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::NO_OFFSTORE_VERIFIED;
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::NO_OFFSTORE_UNVERIFIED;
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::HAS_OFFSTORE;
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::ExtensionsState_MIN;
constexpr SystemProfileProto_ExtensionsState SystemProfileProto::ExtensionsState_MAX;
constexpr int SystemProfileProto::ExtensionsState_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_UmaDefaultState_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_UmaDefaultState_strings[4] = {};

static const char SystemProfileProto_UmaDefaultState_names[] =
  "OPT_IN"
  "OPT_OUT"
  "OPT_UNKNOWN"
  "POLICY_FORCED_ENABLED";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_UmaDefaultState_entries[] = {
  { {SystemProfileProto_UmaDefaultState_names + 0, 6}, 0 },
  { {SystemProfileProto_UmaDefaultState_names + 6, 7}, 1 },
  { {SystemProfileProto_UmaDefaultState_names + 13, 11}, 3 },
  { {SystemProfileProto_UmaDefaultState_names + 24, 21}, 2 },
};

static const int SystemProfileProto_UmaDefaultState_entries_by_number[] = {
  0, // 0 -> OPT_IN
  1, // 1 -> OPT_OUT
  3, // 2 -> POLICY_FORCED_ENABLED
  2, // 3 -> OPT_UNKNOWN
};

const std::string& SystemProfileProto_UmaDefaultState_Name(
    SystemProfileProto_UmaDefaultState value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_UmaDefaultState_entries,
          SystemProfileProto_UmaDefaultState_entries_by_number,
          4, SystemProfileProto_UmaDefaultState_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_UmaDefaultState_entries,
      SystemProfileProto_UmaDefaultState_entries_by_number,
      4, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_UmaDefaultState_strings[idx].get();
}
bool SystemProfileProto_UmaDefaultState_Parse(
    const std::string& name, SystemProfileProto_UmaDefaultState* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_UmaDefaultState_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_UmaDefaultState>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::OPT_IN;
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::OPT_OUT;
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::POLICY_FORCED_ENABLED;
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::OPT_UNKNOWN;
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::UmaDefaultState_MIN;
constexpr SystemProfileProto_UmaDefaultState SystemProfileProto::UmaDefaultState_MAX;
constexpr int SystemProfileProto::UmaDefaultState_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_AntiVirusState_IsValid(int value) {
  switch (value) {
    case 0:
    case 1:
    case 2:
    case 3:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_AntiVirusState_strings[4] = {};

static const char SystemProfileProto_AntiVirusState_names[] =
  "STATE_EXPIRED"
  "STATE_OFF"
  "STATE_ON"
  "STATE_SNOOZED";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_AntiVirusState_entries[] = {
  { {SystemProfileProto_AntiVirusState_names + 0, 13}, 3 },
  { {SystemProfileProto_AntiVirusState_names + 13, 9}, 1 },
  { {SystemProfileProto_AntiVirusState_names + 22, 8}, 0 },
  { {SystemProfileProto_AntiVirusState_names + 30, 13}, 2 },
};

static const int SystemProfileProto_AntiVirusState_entries_by_number[] = {
  2, // 0 -> STATE_ON
  1, // 1 -> STATE_OFF
  3, // 2 -> STATE_SNOOZED
  0, // 3 -> STATE_EXPIRED
};

const std::string& SystemProfileProto_AntiVirusState_Name(
    SystemProfileProto_AntiVirusState value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_AntiVirusState_entries,
          SystemProfileProto_AntiVirusState_entries_by_number,
          4, SystemProfileProto_AntiVirusState_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_AntiVirusState_entries,
      SystemProfileProto_AntiVirusState_entries_by_number,
      4, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_AntiVirusState_strings[idx].get();
}
bool SystemProfileProto_AntiVirusState_Parse(
    const std::string& name, SystemProfileProto_AntiVirusState* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_AntiVirusState_entries, 4, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_AntiVirusState>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::STATE_ON;
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::STATE_OFF;
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::STATE_SNOOZED;
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::STATE_EXPIRED;
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::AntiVirusState_MIN;
constexpr SystemProfileProto_AntiVirusState SystemProfileProto::AntiVirusState_MAX;
constexpr int SystemProfileProto::AntiVirusState_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
bool SystemProfileProto_ComponentId_IsValid(int value) {
  switch (value) {
    case 1:
    case 2:
    case 3:
    case 4:
    case 5:
    case 6:
    case 7:
    case 8:
    case 9:
    case 10:
    case 11:
    case 12:
    case 13:
    case 14:
    case 15:
    case 16:
    case 17:
    case 18:
    case 19:
    case 20:
    case 21:
    case 22:
    case 23:
    case 24:
    case 25:
    case 26:
    case 27:
    case 28:
      return true;
    default:
      return false;
  }
}

static ::PROTOBUF_NAMESPACE_ID::internal::ExplicitlyConstructed<std::string> SystemProfileProto_ComponentId_strings[28] = {};

static const char SystemProfileProto_ComponentId_names[] =
  "AUTOFILL_REGEX_CONSTANTS"
  "CELLULAR"
  "CRL_SET"
  "CROS_SMART_DIM"
  "CROS_TERMINA"
  "DEMO_MODE_RESOURCES"
  "DOWNLOADABLE_STRINGS"
  "EPSON_INKJET_PRINTER_ESCPR"
  "FILE_TYPE_POLICIES"
  "ON_DEVICE_HEAD_SUGGEST"
  "OPTIMIZATION_HINTS"
  "ORIGIN_TRIALS"
  "PEPPER_FLASH"
  "PEPPER_FLASH_CHROMEOS"
  "PNACL"
  "RECOVERY"
  "RTANALYTICS_FULL"
  "RTANALYTICS_LIGHT"
  "SPEECH_SYNTHESIS_SV_SE"
  "SSL_ERROR_ASSISTANT"
  "STAR_CUPS_DRIVER"
  "STH_SET"
  "SUBRESOURCE_FILTER"
  "SW_REPORTER"
  "UNKNOWN"
  "VR_ASSETS"
  "WIDEVINE_CDM"
  "ZXCVBN_DATA";

static const ::PROTOBUF_NAMESPACE_ID::internal::EnumEntry SystemProfileProto_ComponentId_entries[] = {
  { {SystemProfileProto_ComponentId_names + 0, 24}, 28 },
  { {SystemProfileProto_ComponentId_names + 24, 8}, 23 },
  { {SystemProfileProto_ComponentId_names + 32, 7}, 10 },
  { {SystemProfileProto_ComponentId_names + 39, 14}, 26 },
  { {SystemProfileProto_ComponentId_names + 53, 12}, 15 },
  { {SystemProfileProto_ComponentId_names + 65, 19}, 24 },
  { {SystemProfileProto_ComponentId_names + 84, 20}, 19 },
  { {SystemProfileProto_ComponentId_names + 104, 26}, 14 },
  { {SystemProfileProto_ComponentId_names + 130, 18}, 2 },
  { {SystemProfileProto_ComponentId_names + 148, 22}, 25 },
  { {SystemProfileProto_ComponentId_names + 170, 18}, 18 },
  { {SystemProfileProto_ComponentId_names + 188, 13}, 3 },
  { {SystemProfileProto_ComponentId_names + 201, 12}, 4 },
  { {SystemProfileProto_ComponentId_names + 213, 21}, 5 },
  { {SystemProfileProto_ComponentId_names + 234, 5}, 6 },
  { {SystemProfileProto_ComponentId_names + 239, 8}, 7 },
  { {SystemProfileProto_ComponentId_names + 247, 16}, 22 },
  { {SystemProfileProto_ComponentId_names + 263, 17}, 21 },
  { {SystemProfileProto_ComponentId_names + 280, 22}, 17 },
  { {SystemProfileProto_ComponentId_names + 302, 19}, 8 },
  { {SystemProfileProto_ComponentId_names + 321, 16}, 16 },
  { {SystemProfileProto_ComponentId_names + 337, 7}, 9 },
  { {SystemProfileProto_ComponentId_names + 344, 18}, 11 },
  { {SystemProfileProto_ComponentId_names + 362, 11}, 12 },
  { {SystemProfileProto_ComponentId_names + 373, 7}, 1 },
  { {SystemProfileProto_ComponentId_names + 380, 9}, 20 },
  { {SystemProfileProto_ComponentId_names + 389, 12}, 13 },
  { {SystemProfileProto_ComponentId_names + 401, 11}, 27 },
};

static const int SystemProfileProto_ComponentId_entries_by_number[] = {
  24, // 1 -> UNKNOWN
  8, // 2 -> FILE_TYPE_POLICIES
  11, // 3 -> ORIGIN_TRIALS
  12, // 4 -> PEPPER_FLASH
  13, // 5 -> PEPPER_FLASH_CHROMEOS
  14, // 6 -> PNACL
  15, // 7 -> RECOVERY
  19, // 8 -> SSL_ERROR_ASSISTANT
  21, // 9 -> STH_SET
  2, // 10 -> CRL_SET
  22, // 11 -> SUBRESOURCE_FILTER
  23, // 12 -> SW_REPORTER
  26, // 13 -> WIDEVINE_CDM
  7, // 14 -> EPSON_INKJET_PRINTER_ESCPR
  4, // 15 -> CROS_TERMINA
  20, // 16 -> STAR_CUPS_DRIVER
  18, // 17 -> SPEECH_SYNTHESIS_SV_SE
  10, // 18 -> OPTIMIZATION_HINTS
  6, // 19 -> DOWNLOADABLE_STRINGS
  25, // 20 -> VR_ASSETS
  17, // 21 -> RTANALYTICS_LIGHT
  16, // 22 -> RTANALYTICS_FULL
  1, // 23 -> CELLULAR
  5, // 24 -> DEMO_MODE_RESOURCES
  9, // 25 -> ON_DEVICE_HEAD_SUGGEST
  3, // 26 -> CROS_SMART_DIM
  27, // 27 -> ZXCVBN_DATA
  0, // 28 -> AUTOFILL_REGEX_CONSTANTS
};

const std::string& SystemProfileProto_ComponentId_Name(
    SystemProfileProto_ComponentId value) {
  static const bool dummy =
      ::PROTOBUF_NAMESPACE_ID::internal::InitializeEnumStrings(
          SystemProfileProto_ComponentId_entries,
          SystemProfileProto_ComponentId_entries_by_number,
          28, SystemProfileProto_ComponentId_strings);
  (void) dummy;
  int idx = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumName(
      SystemProfileProto_ComponentId_entries,
      SystemProfileProto_ComponentId_entries_by_number,
      28, value);
  return idx == -1 ? ::PROTOBUF_NAMESPACE_ID::internal::GetEmptyString() :
                     SystemProfileProto_ComponentId_strings[idx].get();
}
bool SystemProfileProto_ComponentId_Parse(
    const std::string& name, SystemProfileProto_ComponentId* value) {
  int int_value;
  bool success = ::PROTOBUF_NAMESPACE_ID::internal::LookUpEnumValue(
      SystemProfileProto_ComponentId_entries, 28, name, &int_value);
  if (success) {
    *value = static_cast<SystemProfileProto_ComponentId>(int_value);
  }
  return success;
}
#if (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)
constexpr SystemProfileProto_ComponentId SystemProfileProto::UNKNOWN;
constexpr SystemProfileProto_ComponentId SystemProfileProto::FILE_TYPE_POLICIES;
constexpr SystemProfileProto_ComponentId SystemProfileProto::ORIGIN_TRIALS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::PEPPER_FLASH;
constexpr SystemProfileProto_ComponentId SystemProfileProto::PEPPER_FLASH_CHROMEOS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::PNACL;
constexpr SystemProfileProto_ComponentId SystemProfileProto::RECOVERY;
constexpr SystemProfileProto_ComponentId SystemProfileProto::SSL_ERROR_ASSISTANT;
constexpr SystemProfileProto_ComponentId SystemProfileProto::STH_SET;
constexpr SystemProfileProto_ComponentId SystemProfileProto::CRL_SET;
constexpr SystemProfileProto_ComponentId SystemProfileProto::SUBRESOURCE_FILTER;
constexpr SystemProfileProto_ComponentId SystemProfileProto::SW_REPORTER;
constexpr SystemProfileProto_ComponentId SystemProfileProto::WIDEVINE_CDM;
constexpr SystemProfileProto_ComponentId SystemProfileProto::EPSON_INKJET_PRINTER_ESCPR;
constexpr SystemProfileProto_ComponentId SystemProfileProto::CROS_TERMINA;
constexpr SystemProfileProto_ComponentId SystemProfileProto::STAR_CUPS_DRIVER;
constexpr SystemProfileProto_ComponentId SystemProfileProto::SPEECH_SYNTHESIS_SV_SE;
constexpr SystemProfileProto_ComponentId SystemProfileProto::OPTIMIZATION_HINTS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::DOWNLOADABLE_STRINGS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::VR_ASSETS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::RTANALYTICS_LIGHT;
constexpr SystemProfileProto_ComponentId SystemProfileProto::RTANALYTICS_FULL;
constexpr SystemProfileProto_ComponentId SystemProfileProto::CELLULAR;
constexpr SystemProfileProto_ComponentId SystemProfileProto::DEMO_MODE_RESOURCES;
constexpr SystemProfileProto_ComponentId SystemProfileProto::ON_DEVICE_HEAD_SUGGEST;
constexpr SystemProfileProto_ComponentId SystemProfileProto::CROS_SMART_DIM;
constexpr SystemProfileProto_ComponentId SystemProfileProto::ZXCVBN_DATA;
constexpr SystemProfileProto_ComponentId SystemProfileProto::AUTOFILL_REGEX_CONSTANTS;
constexpr SystemProfileProto_ComponentId SystemProfileProto::ComponentId_MIN;
constexpr SystemProfileProto_ComponentId SystemProfileProto::ComponentId_MAX;
constexpr int SystemProfileProto::ComponentId_ARRAYSIZE;
#endif  // (__cplusplus < 201703) && (!defined(_MSC_VER) || _MSC_VER >= 1900)

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

void SystemProfileProto_OS_Arc::InitAsDefaultInstance() {
}
class SystemProfileProto_OS_Arc::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_OS_Arc>()._has_bits_);
  static void set_has_release(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

SystemProfileProto_OS_Arc::SystemProfileProto_OS_Arc()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.OS.Arc)
}
SystemProfileProto_OS_Arc::SystemProfileProto_OS_Arc(const SystemProfileProto_OS_Arc& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  release_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_release()) {
    release_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.release_);
  }
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.OS.Arc)
}

void SystemProfileProto_OS_Arc::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_OS_Arc_system_5fprofile_2eproto.base);
  release_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

SystemProfileProto_OS_Arc::~SystemProfileProto_OS_Arc() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.OS.Arc)
  SharedDtor();
}

void SystemProfileProto_OS_Arc::SharedDtor() {
  release_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_OS_Arc::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.OS.Arc)
  ::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) {
    release_.ClearNonDefaultToEmptyNoArena();
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_OS_Arc::_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 string release = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_release(), ptr, ctx);
          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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_OS_Arc::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.OS.Arc)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string release = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_release()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.OS.Arc)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.OS.Arc)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_OS_Arc::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.OS.Arc)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string release = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->release(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.OS.Arc)
}

size_t SystemProfileProto_OS_Arc::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.OS.Arc)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // optional string release = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
        this->release());
  }

  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_OS_Arc::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_OS_Arc*>(
      &from));
}

void SystemProfileProto_OS_Arc::MergeFrom(const SystemProfileProto_OS_Arc& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.OS.Arc)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_release()) {
    _has_bits_[0] |= 0x00000001u;
    release_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.release_);
  }
}

void SystemProfileProto_OS_Arc::CopyFrom(const SystemProfileProto_OS_Arc& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.OS.Arc)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_OS_Arc::InternalSwap(SystemProfileProto_OS_Arc* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  release_.Swap(&other->release_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
}

std::string SystemProfileProto_OS_Arc::GetTypeName() const {
  return "metrics.SystemProfileProto.OS.Arc";
}


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

void SystemProfileProto_OS::InitAsDefaultInstance() {
  ::metrics::_SystemProfileProto_OS_default_instance_._instance.get_mutable()->arc_ = const_cast< ::metrics::SystemProfileProto_OS_Arc*>(
      ::metrics::SystemProfileProto_OS_Arc::internal_default_instance());
}
class SystemProfileProto_OS::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_OS>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_version(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_build_fingerprint(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_is_jailbroken(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_build_number(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_kernel_version(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::metrics::SystemProfileProto_OS_Arc& arc(const SystemProfileProto_OS* msg);
  static void set_has_arc(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
};

const ::metrics::SystemProfileProto_OS_Arc&
SystemProfileProto_OS::_Internal::arc(const SystemProfileProto_OS* msg) {
  return *msg->arc_;
}
SystemProfileProto_OS::SystemProfileProto_OS()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.OS)
}
SystemProfileProto_OS::SystemProfileProto_OS(const SystemProfileProto_OS& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_name()) {
    name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_version()) {
    version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
  }
  build_fingerprint_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_build_fingerprint()) {
    build_fingerprint_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.build_fingerprint_);
  }
  build_number_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_build_number()) {
    build_number_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.build_number_);
  }
  kernel_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_kernel_version()) {
    kernel_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.kernel_version_);
  }
  if (from.has_arc()) {
    arc_ = new ::metrics::SystemProfileProto_OS_Arc(*from.arc_);
  } else {
    arc_ = nullptr;
  }
  is_jailbroken_ = from.is_jailbroken_;
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.OS)
}

void SystemProfileProto_OS::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_OS_system_5fprofile_2eproto.base);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  build_fingerprint_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  build_number_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  kernel_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&arc_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_jailbroken_) -
      reinterpret_cast<char*>(&arc_)) + sizeof(is_jailbroken_));
}

SystemProfileProto_OS::~SystemProfileProto_OS() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.OS)
  SharedDtor();
}

void SystemProfileProto_OS::SharedDtor() {
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  build_fingerprint_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  build_number_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  kernel_version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete arc_;
}

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


void SystemProfileProto_OS::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.OS)
  ::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 & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      version_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      build_fingerprint_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000008u) {
      build_number_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000010u) {
      kernel_version_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(arc_ != nullptr);
      arc_->Clear();
    }
  }
  is_jailbroken_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_OS::_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 string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string version = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string build_fingerprint = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_build_fingerprint(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_jailbroken = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_is_jailbroken(&has_bits);
          is_jailbroken_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string build_number = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_build_number(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string kernel_version = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_kernel_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.OS.Arc arc = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) {
          ptr = ctx->ParseMessage(mutable_arc(), 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_OS::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.OS)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string name = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string version = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string build_fingerprint = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_build_fingerprint()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_jailbroken = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_is_jailbroken(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_jailbroken_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string build_number = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_build_number()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string kernel_version = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (50 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_kernel_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.OS.Arc arc = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (58 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_arc()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.OS)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.OS)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_OS::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.OS)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->name(), output);
  }

  // optional string version = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->version(), output);
  }

  // optional string build_fingerprint = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->build_fingerprint(), output);
  }

  // optional bool is_jailbroken = 4;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(4, this->is_jailbroken(), output);
  }

  // optional string build_number = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      5, this->build_number(), output);
  }

  // optional string kernel_version = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      6, this->kernel_version(), output);
  }

  // optional .metrics.SystemProfileProto.OS.Arc arc = 7;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      7, _Internal::arc(this), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.OS)
}

size_t SystemProfileProto_OS::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.OS)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000007fu) {
    // optional string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->name());
    }

    // optional string version = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->version());
    }

    // optional string build_fingerprint = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->build_fingerprint());
    }

    // optional string build_number = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->build_number());
    }

    // optional string kernel_version = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->kernel_version());
    }

    // optional .metrics.SystemProfileProto.OS.Arc arc = 7;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *arc_);
    }

    // optional bool is_jailbroken = 4;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 + 1;
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_OS::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_OS*>(
      &from));
}

void SystemProfileProto_OS::MergeFrom(const SystemProfileProto_OS& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.OS)
  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 & 0x0000007fu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      build_fingerprint_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.build_fingerprint_);
    }
    if (cached_has_bits & 0x00000008u) {
      _has_bits_[0] |= 0x00000008u;
      build_number_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.build_number_);
    }
    if (cached_has_bits & 0x00000010u) {
      _has_bits_[0] |= 0x00000010u;
      kernel_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.kernel_version_);
    }
    if (cached_has_bits & 0x00000020u) {
      mutable_arc()->::metrics::SystemProfileProto_OS_Arc::MergeFrom(from.arc());
    }
    if (cached_has_bits & 0x00000040u) {
      is_jailbroken_ = from.is_jailbroken_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_OS::CopyFrom(const SystemProfileProto_OS& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.OS)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_OS::InternalSwap(SystemProfileProto_OS* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  build_fingerprint_.Swap(&other->build_fingerprint_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  build_number_.Swap(&other->build_number_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  kernel_version_.Swap(&other->kernel_version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(arc_, other->arc_);
  swap(is_jailbroken_, other->is_jailbroken_);
}

std::string SystemProfileProto_OS::GetTypeName() const {
  return "metrics.SystemProfileProto.OS";
}


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

void SystemProfileProto_Hardware_CPU::InitAsDefaultInstance() {
}
class SystemProfileProto_Hardware_CPU::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Hardware_CPU>()._has_bits_);
  static void set_has_vendor_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_signature(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_num_cores(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_is_hypervisor(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

SystemProfileProto_Hardware_CPU::SystemProfileProto_Hardware_CPU()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Hardware.CPU)
}
SystemProfileProto_Hardware_CPU::SystemProfileProto_Hardware_CPU(const SystemProfileProto_Hardware_CPU& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  vendor_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_vendor_name()) {
    vendor_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.vendor_name_);
  }
  ::memcpy(&signature_, &from.signature_,
    static_cast<size_t>(reinterpret_cast<char*>(&is_hypervisor_) -
    reinterpret_cast<char*>(&signature_)) + sizeof(is_hypervisor_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Hardware.CPU)
}

void SystemProfileProto_Hardware_CPU::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Hardware_CPU_system_5fprofile_2eproto.base);
  vendor_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&signature_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_hypervisor_) -
      reinterpret_cast<char*>(&signature_)) + sizeof(is_hypervisor_));
}

SystemProfileProto_Hardware_CPU::~SystemProfileProto_Hardware_CPU() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Hardware.CPU)
  SharedDtor();
}

void SystemProfileProto_Hardware_CPU::SharedDtor() {
  vendor_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_Hardware_CPU::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Hardware.CPU)
  ::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) {
    vendor_name_.ClearNonDefaultToEmptyNoArena();
  }
  if (cached_has_bits & 0x0000000eu) {
    ::memset(&signature_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&is_hypervisor_) -
        reinterpret_cast<char*>(&signature_)) + sizeof(is_hypervisor_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Hardware_CPU::_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 string vendor_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_vendor_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 signature = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_signature(&has_bits);
          signature_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 num_cores = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_num_cores(&has_bits);
          num_cores_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_hypervisor = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_is_hypervisor(&has_bits);
          is_hypervisor_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Hardware_CPU::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Hardware.CPU)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string vendor_name = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_vendor_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 signature = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_signature(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &signature_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 num_cores = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_num_cores(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &num_cores_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_hypervisor = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_is_hypervisor(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_hypervisor_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Hardware.CPU)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Hardware.CPU)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Hardware_CPU::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Hardware.CPU)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string vendor_name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->vendor_name(), output);
  }

  // optional uint32 signature = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(2, this->signature(), output);
  }

  // optional uint32 num_cores = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(3, this->num_cores(), output);
  }

  // optional bool is_hypervisor = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(4, this->is_hypervisor(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Hardware.CPU)
}

size_t SystemProfileProto_Hardware_CPU::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Hardware.CPU)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000000fu) {
    // optional string vendor_name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->vendor_name());
    }

    // optional uint32 signature = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->signature());
    }

    // optional uint32 num_cores = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->num_cores());
    }

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

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Hardware_CPU::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Hardware_CPU*>(
      &from));
}

void SystemProfileProto_Hardware_CPU::MergeFrom(const SystemProfileProto_Hardware_CPU& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Hardware.CPU)
  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 & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      vendor_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.vendor_name_);
    }
    if (cached_has_bits & 0x00000002u) {
      signature_ = from.signature_;
    }
    if (cached_has_bits & 0x00000004u) {
      num_cores_ = from.num_cores_;
    }
    if (cached_has_bits & 0x00000008u) {
      is_hypervisor_ = from.is_hypervisor_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Hardware_CPU::CopyFrom(const SystemProfileProto_Hardware_CPU& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Hardware.CPU)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Hardware_CPU::InternalSwap(SystemProfileProto_Hardware_CPU* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  vendor_name_.Swap(&other->vendor_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(signature_, other->signature_);
  swap(num_cores_, other->num_cores_);
  swap(is_hypervisor_, other->is_hypervisor_);
}

std::string SystemProfileProto_Hardware_CPU::GetTypeName() const {
  return "metrics.SystemProfileProto.Hardware.CPU";
}


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

void SystemProfileProto_Hardware_Graphics::InitAsDefaultInstance() {
}
class SystemProfileProto_Hardware_Graphics::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Hardware_Graphics>()._has_bits_);
  static void set_has_vendor_id(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_device_id(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_driver_version(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_gl_vendor(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_gl_renderer(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
};

SystemProfileProto_Hardware_Graphics::SystemProfileProto_Hardware_Graphics()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Hardware.Graphics)
}
SystemProfileProto_Hardware_Graphics::SystemProfileProto_Hardware_Graphics(const SystemProfileProto_Hardware_Graphics& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  driver_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_driver_version()) {
    driver_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.driver_version_);
  }
  gl_vendor_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_gl_vendor()) {
    gl_vendor_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.gl_vendor_);
  }
  gl_renderer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_gl_renderer()) {
    gl_renderer_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.gl_renderer_);
  }
  ::memcpy(&vendor_id_, &from.vendor_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&device_id_) -
    reinterpret_cast<char*>(&vendor_id_)) + sizeof(device_id_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Hardware.Graphics)
}

void SystemProfileProto_Hardware_Graphics::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Hardware_Graphics_system_5fprofile_2eproto.base);
  driver_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  gl_vendor_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  gl_renderer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&vendor_id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&device_id_) -
      reinterpret_cast<char*>(&vendor_id_)) + sizeof(device_id_));
}

SystemProfileProto_Hardware_Graphics::~SystemProfileProto_Hardware_Graphics() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Hardware.Graphics)
  SharedDtor();
}

void SystemProfileProto_Hardware_Graphics::SharedDtor() {
  driver_version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  gl_vendor_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  gl_renderer_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_Hardware_Graphics::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Hardware.Graphics)
  ::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) {
    if (cached_has_bits & 0x00000001u) {
      driver_version_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      gl_vendor_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      gl_renderer_.ClearNonDefaultToEmptyNoArena();
    }
  }
  if (cached_has_bits & 0x00000018u) {
    ::memset(&vendor_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&device_id_) -
        reinterpret_cast<char*>(&vendor_id_)) + sizeof(device_id_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Hardware_Graphics::_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 uint32 vendor_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_vendor_id(&has_bits);
          vendor_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 device_id = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_device_id(&has_bits);
          device_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string driver_version = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_driver_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string gl_vendor = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_gl_vendor(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string gl_renderer = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_gl_renderer(), ptr, ctx);
          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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Hardware_Graphics::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Hardware.Graphics)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 vendor_id = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_vendor_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &vendor_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 device_id = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_device_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &device_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string driver_version = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_driver_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string gl_vendor = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (50 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_gl_vendor()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string gl_renderer = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (58 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_gl_renderer()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Hardware.Graphics)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Hardware.Graphics)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Hardware_Graphics::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Hardware.Graphics)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint32 vendor_id = 1;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(1, this->vendor_id(), output);
  }

  // optional uint32 device_id = 2;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(2, this->device_id(), output);
  }

  // optional string driver_version = 3;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->driver_version(), output);
  }

  // optional string gl_vendor = 6;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      6, this->gl_vendor(), output);
  }

  // optional string gl_renderer = 7;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      7, this->gl_renderer(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Hardware.Graphics)
}

size_t SystemProfileProto_Hardware_Graphics::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Hardware.Graphics)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string driver_version = 3;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->driver_version());
    }

    // optional string gl_vendor = 6;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->gl_vendor());
    }

    // optional string gl_renderer = 7;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->gl_renderer());
    }

    // optional uint32 vendor_id = 1;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->vendor_id());
    }

    // optional uint32 device_id = 2;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->device_id());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Hardware_Graphics::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Hardware_Graphics*>(
      &from));
}

void SystemProfileProto_Hardware_Graphics::MergeFrom(const SystemProfileProto_Hardware_Graphics& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Hardware.Graphics)
  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) {
      _has_bits_[0] |= 0x00000001u;
      driver_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.driver_version_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      gl_vendor_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.gl_vendor_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      gl_renderer_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.gl_renderer_);
    }
    if (cached_has_bits & 0x00000008u) {
      vendor_id_ = from.vendor_id_;
    }
    if (cached_has_bits & 0x00000010u) {
      device_id_ = from.device_id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Hardware_Graphics::CopyFrom(const SystemProfileProto_Hardware_Graphics& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Hardware.Graphics)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Hardware_Graphics::InternalSwap(SystemProfileProto_Hardware_Graphics* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  driver_version_.Swap(&other->driver_version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  gl_vendor_.Swap(&other->gl_vendor_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  gl_renderer_.Swap(&other->gl_renderer_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(vendor_id_, other->vendor_id_);
  swap(device_id_, other->device_id_);
}

std::string SystemProfileProto_Hardware_Graphics::GetTypeName() const {
  return "metrics.SystemProfileProto.Hardware.Graphics";
}


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

void SystemProfileProto_Hardware_InternalStorageDevice::InitAsDefaultInstance() {
}
class SystemProfileProto_Hardware_InternalStorageDevice::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Hardware_InternalStorageDevice>()._has_bits_);
  static void set_has_vendor_id(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_product_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_revision(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_model(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_size_mb(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_firmware_version(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_type(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_purpose(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
};

SystemProfileProto_Hardware_InternalStorageDevice::SystemProfileProto_Hardware_InternalStorageDevice()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
}
SystemProfileProto_Hardware_InternalStorageDevice::SystemProfileProto_Hardware_InternalStorageDevice(const SystemProfileProto_Hardware_InternalStorageDevice& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  model_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_model()) {
    model_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_);
  }
  ::memcpy(&product_id_, &from.product_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&purpose_) -
    reinterpret_cast<char*>(&product_id_)) + sizeof(purpose_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
}

void SystemProfileProto_Hardware_InternalStorageDevice::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Hardware_InternalStorageDevice_system_5fprofile_2eproto.base);
  model_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&product_id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&purpose_) -
      reinterpret_cast<char*>(&product_id_)) + sizeof(purpose_));
}

SystemProfileProto_Hardware_InternalStorageDevice::~SystemProfileProto_Hardware_InternalStorageDevice() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  SharedDtor();
}

void SystemProfileProto_Hardware_InternalStorageDevice::SharedDtor() {
  model_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_Hardware_InternalStorageDevice::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  ::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) {
    model_.ClearNonDefaultToEmptyNoArena();
  }
  if (cached_has_bits & 0x000000feu) {
    ::memset(&product_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&purpose_) -
        reinterpret_cast<char*>(&product_id_)) + sizeof(purpose_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Hardware_InternalStorageDevice::_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 uint32 vendor_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_vendor_id(&has_bits);
          vendor_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint64 product_id = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_product_id(&has_bits);
          product_id_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 revision = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_revision(&has_bits);
          revision_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string model = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_model(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 size_mb = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_size_mb(&has_bits);
          size_mb_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint64 firmware_version = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_firmware_version(&has_bits);
          firmware_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Type type = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Type_IsValid(val))) {
            set_type(static_cast<::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Type>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(7, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Purpose purpose = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Purpose_IsValid(val))) {
            set_purpose(static_cast<::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Purpose>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(8, val, mutable_unknown_fields());
          }
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Hardware_InternalStorageDevice::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional uint32 vendor_id = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_vendor_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &vendor_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint64 product_id = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_product_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT64>(
                 input, &product_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 revision = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_revision(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &revision_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string model = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_model()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 size_mb = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_size_mb(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &size_mb_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint64 firmware_version = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          _Internal::set_has_firmware_version(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT64>(
                 input, &firmware_version_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Type type = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Type_IsValid(value)) {
            set_type(static_cast< ::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Type >(value));
          } else {
            unknown_fields_stream.WriteVarint32(56u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Purpose purpose = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Purpose_IsValid(value)) {
            set_purpose(static_cast< ::metrics::SystemProfileProto_Hardware_InternalStorageDevice_Purpose >(value));
          } else {
            unknown_fields_stream.WriteVarint32(64u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Hardware_InternalStorageDevice::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional uint32 vendor_id = 1;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(1, this->vendor_id(), output);
  }

  // optional uint64 product_id = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(2, this->product_id(), output);
  }

  // optional uint32 revision = 3;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(3, this->revision(), output);
  }

  // optional string model = 4;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->model(), output);
  }

  // optional uint32 size_mb = 5;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(5, this->size_mb(), output);
  }

  // optional uint64 firmware_version = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt64(6, this->firmware_version(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Type type = 7;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      7, this->type(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Purpose purpose = 8;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      8, this->purpose(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
}

size_t SystemProfileProto_Hardware_InternalStorageDevice::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string model = 4;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->model());
    }

    // optional uint64 product_id = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->product_id());
    }

    // optional uint32 vendor_id = 1;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->vendor_id());
    }

    // optional uint32 revision = 3;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->revision());
    }

    // optional uint64 firmware_version = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt64Size(
          this->firmware_version());
    }

    // optional uint32 size_mb = 5;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->size_mb());
    }

    // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Type type = 7;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->type());
    }

    // optional .metrics.SystemProfileProto.Hardware.InternalStorageDevice.Purpose purpose = 8;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->purpose());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Hardware_InternalStorageDevice::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Hardware_InternalStorageDevice*>(
      &from));
}

void SystemProfileProto_Hardware_InternalStorageDevice::MergeFrom(const SystemProfileProto_Hardware_InternalStorageDevice& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  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) {
      _has_bits_[0] |= 0x00000001u;
      model_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_);
    }
    if (cached_has_bits & 0x00000002u) {
      product_id_ = from.product_id_;
    }
    if (cached_has_bits & 0x00000004u) {
      vendor_id_ = from.vendor_id_;
    }
    if (cached_has_bits & 0x00000008u) {
      revision_ = from.revision_;
    }
    if (cached_has_bits & 0x00000010u) {
      firmware_version_ = from.firmware_version_;
    }
    if (cached_has_bits & 0x00000020u) {
      size_mb_ = from.size_mb_;
    }
    if (cached_has_bits & 0x00000040u) {
      type_ = from.type_;
    }
    if (cached_has_bits & 0x00000080u) {
      purpose_ = from.purpose_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Hardware_InternalStorageDevice::CopyFrom(const SystemProfileProto_Hardware_InternalStorageDevice& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Hardware.InternalStorageDevice)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Hardware_InternalStorageDevice::InternalSwap(SystemProfileProto_Hardware_InternalStorageDevice* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  model_.Swap(&other->model_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(product_id_, other->product_id_);
  swap(vendor_id_, other->vendor_id_);
  swap(revision_, other->revision_);
  swap(firmware_version_, other->firmware_version_);
  swap(size_mb_, other->size_mb_);
  swap(type_, other->type_);
  swap(purpose_, other->purpose_);
}

std::string SystemProfileProto_Hardware_InternalStorageDevice::GetTypeName() const {
  return "metrics.SystemProfileProto.Hardware.InternalStorageDevice";
}


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

void SystemProfileProto_Hardware_Drive::InitAsDefaultInstance() {
}
class SystemProfileProto_Hardware_Drive::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Hardware_Drive>()._has_bits_);
  static void set_has_has_seek_penalty(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
};

SystemProfileProto_Hardware_Drive::SystemProfileProto_Hardware_Drive()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Hardware.Drive)
}
SystemProfileProto_Hardware_Drive::SystemProfileProto_Hardware_Drive(const SystemProfileProto_Hardware_Drive& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  has_seek_penalty_ = from.has_seek_penalty_;
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Hardware.Drive)
}

void SystemProfileProto_Hardware_Drive::SharedCtor() {
  has_seek_penalty_ = false;
}

SystemProfileProto_Hardware_Drive::~SystemProfileProto_Hardware_Drive() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Hardware.Drive)
  SharedDtor();
}

void SystemProfileProto_Hardware_Drive::SharedDtor() {
}

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


void SystemProfileProto_Hardware_Drive::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Hardware.Drive)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  has_seek_penalty_ = false;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Hardware_Drive::_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 bool has_seek_penalty = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_has_seek_penalty(&has_bits);
          has_seek_penalty_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Hardware_Drive::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Hardware.Drive)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool has_seek_penalty = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_has_seek_penalty(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &has_seek_penalty_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Hardware.Drive)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Hardware.Drive)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Hardware_Drive::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Hardware.Drive)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool has_seek_penalty = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(1, this->has_seek_penalty(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Hardware.Drive)
}

size_t SystemProfileProto_Hardware_Drive::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Hardware.Drive)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // optional bool has_seek_penalty = 1;
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000001u) {
    total_size += 1 + 1;
  }

  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Hardware_Drive::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Hardware_Drive*>(
      &from));
}

void SystemProfileProto_Hardware_Drive::MergeFrom(const SystemProfileProto_Hardware_Drive& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Hardware.Drive)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  if (from.has_has_seek_penalty()) {
    set_has_seek_penalty(from.has_seek_penalty());
  }
}

void SystemProfileProto_Hardware_Drive::CopyFrom(const SystemProfileProto_Hardware_Drive& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Hardware.Drive)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

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

std::string SystemProfileProto_Hardware_Drive::GetTypeName() const {
  return "metrics.SystemProfileProto.Hardware.Drive";
}


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

void SystemProfileProto_Hardware::InitAsDefaultInstance() {
  ::metrics::_SystemProfileProto_Hardware_default_instance_._instance.get_mutable()->cpu_ = const_cast< ::metrics::SystemProfileProto_Hardware_CPU*>(
      ::metrics::SystemProfileProto_Hardware_CPU::internal_default_instance());
  ::metrics::_SystemProfileProto_Hardware_default_instance_._instance.get_mutable()->gpu_ = const_cast< ::metrics::SystemProfileProto_Hardware_Graphics*>(
      ::metrics::SystemProfileProto_Hardware_Graphics::internal_default_instance());
  ::metrics::_SystemProfileProto_Hardware_default_instance_._instance.get_mutable()->app_drive_ = const_cast< ::metrics::SystemProfileProto_Hardware_Drive*>(
      ::metrics::SystemProfileProto_Hardware_Drive::internal_default_instance());
  ::metrics::_SystemProfileProto_Hardware_default_instance_._instance.get_mutable()->user_data_drive_ = const_cast< ::metrics::SystemProfileProto_Hardware_Drive*>(
      ::metrics::SystemProfileProto_Hardware_Drive::internal_default_instance());
}
class SystemProfileProto_Hardware::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Hardware>()._has_bits_);
  static void set_has_cpu_architecture(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_system_ram_mb(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_dll_base(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_hardware_class(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_full_hardware_class(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_screen_count(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_primary_screen_width(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_primary_screen_height(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_primary_screen_scale_factor(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_max_dpi_x(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_max_dpi_y(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_form_factor(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static const ::metrics::SystemProfileProto_Hardware_CPU& cpu(const SystemProfileProto_Hardware* msg);
  static void set_has_cpu(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static const ::metrics::SystemProfileProto_Hardware_Graphics& gpu(const SystemProfileProto_Hardware* msg);
  static void set_has_gpu(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_internal_display_supports_touch(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static const ::metrics::SystemProfileProto_Hardware_Drive& app_drive(const SystemProfileProto_Hardware* msg);
  static void set_has_app_drive(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::metrics::SystemProfileProto_Hardware_Drive& user_data_drive(const SystemProfileProto_Hardware* msg);
  static void set_has_user_data_drive(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
};

const ::metrics::SystemProfileProto_Hardware_CPU&
SystemProfileProto_Hardware::_Internal::cpu(const SystemProfileProto_Hardware* msg) {
  return *msg->cpu_;
}
const ::metrics::SystemProfileProto_Hardware_Graphics&
SystemProfileProto_Hardware::_Internal::gpu(const SystemProfileProto_Hardware* msg) {
  return *msg->gpu_;
}
const ::metrics::SystemProfileProto_Hardware_Drive&
SystemProfileProto_Hardware::_Internal::app_drive(const SystemProfileProto_Hardware* msg) {
  return *msg->app_drive_;
}
const ::metrics::SystemProfileProto_Hardware_Drive&
SystemProfileProto_Hardware::_Internal::user_data_drive(const SystemProfileProto_Hardware* msg) {
  return *msg->user_data_drive_;
}
SystemProfileProto_Hardware::SystemProfileProto_Hardware()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Hardware)
}
SystemProfileProto_Hardware::SystemProfileProto_Hardware(const SystemProfileProto_Hardware& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      internal_storage_devices_(from.internal_storage_devices_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  cpu_architecture_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_cpu_architecture()) {
    cpu_architecture_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.cpu_architecture_);
  }
  hardware_class_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_hardware_class()) {
    hardware_class_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.hardware_class_);
  }
  full_hardware_class_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_full_hardware_class()) {
    full_hardware_class_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.full_hardware_class_);
  }
  if (from.has_gpu()) {
    gpu_ = new ::metrics::SystemProfileProto_Hardware_Graphics(*from.gpu_);
  } else {
    gpu_ = nullptr;
  }
  if (from.has_cpu()) {
    cpu_ = new ::metrics::SystemProfileProto_Hardware_CPU(*from.cpu_);
  } else {
    cpu_ = nullptr;
  }
  if (from.has_app_drive()) {
    app_drive_ = new ::metrics::SystemProfileProto_Hardware_Drive(*from.app_drive_);
  } else {
    app_drive_ = nullptr;
  }
  if (from.has_user_data_drive()) {
    user_data_drive_ = new ::metrics::SystemProfileProto_Hardware_Drive(*from.user_data_drive_);
  } else {
    user_data_drive_ = nullptr;
  }
  ::memcpy(&system_ram_mb_, &from.system_ram_mb_,
    static_cast<size_t>(reinterpret_cast<char*>(&form_factor_) -
    reinterpret_cast<char*>(&system_ram_mb_)) + sizeof(form_factor_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Hardware)
}

void SystemProfileProto_Hardware::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Hardware_system_5fprofile_2eproto.base);
  cpu_architecture_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  hardware_class_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  full_hardware_class_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&gpu_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&form_factor_) -
      reinterpret_cast<char*>(&gpu_)) + sizeof(form_factor_));
}

SystemProfileProto_Hardware::~SystemProfileProto_Hardware() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Hardware)
  SharedDtor();
}

void SystemProfileProto_Hardware::SharedDtor() {
  cpu_architecture_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  hardware_class_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  full_hardware_class_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete gpu_;
  if (this != internal_default_instance()) delete cpu_;
  if (this != internal_default_instance()) delete app_drive_;
  if (this != internal_default_instance()) delete user_data_drive_;
}

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


void SystemProfileProto_Hardware::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Hardware)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  internal_storage_devices_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000007fu) {
    if (cached_has_bits & 0x00000001u) {
      cpu_architecture_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      hardware_class_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      full_hardware_class_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000008u) {
      GOOGLE_DCHECK(gpu_ != nullptr);
      gpu_->Clear();
    }
    if (cached_has_bits & 0x00000010u) {
      GOOGLE_DCHECK(cpu_ != nullptr);
      cpu_->Clear();
    }
    if (cached_has_bits & 0x00000020u) {
      GOOGLE_DCHECK(app_drive_ != nullptr);
      app_drive_->Clear();
    }
    if (cached_has_bits & 0x00000040u) {
      GOOGLE_DCHECK(user_data_drive_ != nullptr);
      user_data_drive_->Clear();
    }
  }
  system_ram_mb_ = PROTOBUF_LONGLONG(0);
  if (cached_has_bits & 0x0000ff00u) {
    ::memset(&dll_base_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&internal_display_supports_touch_) -
        reinterpret_cast<char*>(&dll_base_)) + sizeof(internal_display_supports_touch_));
  }
  form_factor_ = 0;
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Hardware::_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 string cpu_architecture = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_cpu_architecture(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 system_ram_mb = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_system_ram_mb(&has_bits);
          system_ram_mb_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 dll_base = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_dll_base(&has_bits);
          dll_base_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string hardware_class = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_hardware_class(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 screen_count = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_screen_count(&has_bits);
          screen_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 primary_screen_width = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_primary_screen_width(&has_bits);
          primary_screen_width_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 primary_screen_height = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_primary_screen_height(&has_bits);
          primary_screen_height_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.Graphics gpu = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(mutable_gpu(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional float max_dpi_x = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 77)) {
          _Internal::set_has_max_dpi_x(&has_bits);
          max_dpi_x_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float max_dpi_y = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 85)) {
          _Internal::set_has_max_dpi_y(&has_bits);
          max_dpi_y_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional float primary_screen_scale_factor = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 101)) {
          _Internal::set_has_primary_screen_scale_factor(&has_bits);
          primary_screen_scale_factor_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<float>(ptr);
          ptr += sizeof(float);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.CPU cpu = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) {
          ptr = ctx->ParseMessage(mutable_cpu(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool internal_display_supports_touch = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) {
          _Internal::set_has_internal_display_supports_touch(&has_bits);
          internal_display_supports_touch_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.Drive app_drive = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 130)) {
          ptr = ctx->ParseMessage(mutable_app_drive(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.Drive user_data_drive = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 138)) {
          ptr = ctx->ParseMessage(mutable_user_data_drive(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string full_hardware_class = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_full_hardware_class(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware.FormFactor form_factor = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Hardware_FormFactor_IsValid(val))) {
            set_form_factor(static_cast<::metrics::SystemProfileProto_Hardware_FormFactor>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(19, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.Hardware.InternalStorageDevice internal_storage_devices = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 162)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(add_internal_storage_devices(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 418);
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Hardware::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Hardware)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string cpu_architecture = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_cpu_architecture()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 system_ram_mb = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_system_ram_mb(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &system_ram_mb_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 dll_base = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_dll_base(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &dll_base_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string hardware_class = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_hardware_class()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 screen_count = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_screen_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &screen_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 primary_screen_width = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          _Internal::set_has_primary_screen_width(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &primary_screen_width_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 primary_screen_height = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          _Internal::set_has_primary_screen_height(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &primary_screen_height_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.Graphics gpu = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (66 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_gpu()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional float max_dpi_x = 9;
      case 9: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (77 & 0xFF)) {
          _Internal::set_has_max_dpi_x(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   float, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &max_dpi_x_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional float max_dpi_y = 10;
      case 10: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (85 & 0xFF)) {
          _Internal::set_has_max_dpi_y(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   float, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &max_dpi_y_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional float primary_screen_scale_factor = 12;
      case 12: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (101 & 0xFF)) {
          _Internal::set_has_primary_screen_scale_factor(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   float, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FLOAT>(
                 input, &primary_screen_scale_factor_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.CPU cpu = 13;
      case 13: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (106 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_cpu()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool internal_display_supports_touch = 14;
      case 14: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (112 & 0xFF)) {
          _Internal::set_has_internal_display_supports_touch(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &internal_display_supports_touch_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.Drive app_drive = 16;
      case 16: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (130 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_app_drive()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.Drive user_data_drive = 17;
      case 17: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (138 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_user_data_drive()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string full_hardware_class = 18;
      case 18: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (146 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_full_hardware_class()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware.FormFactor form_factor = 19;
      case 19: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (152 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Hardware_FormFactor_IsValid(value)) {
            set_form_factor(static_cast< ::metrics::SystemProfileProto_Hardware_FormFactor >(value));
          } else {
            unknown_fields_stream.WriteVarint32(152u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.Hardware.InternalStorageDevice internal_storage_devices = 20;
      case 20: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (162 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_internal_storage_devices()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Hardware)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Hardware)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Hardware::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Hardware)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string cpu_architecture = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->cpu_architecture(), output);
  }

  // optional int64 system_ram_mb = 2;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(2, this->system_ram_mb(), output);
  }

  // optional int64 dll_base = 3;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(3, this->dll_base(), output);
  }

  // optional string hardware_class = 4;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->hardware_class(), output);
  }

  // optional int32 screen_count = 5;
  if (cached_has_bits & 0x00000200u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->screen_count(), output);
  }

  // optional int32 primary_screen_width = 6;
  if (cached_has_bits & 0x00000400u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(6, this->primary_screen_width(), output);
  }

  // optional int32 primary_screen_height = 7;
  if (cached_has_bits & 0x00000800u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(7, this->primary_screen_height(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.Graphics gpu = 8;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      8, _Internal::gpu(this), output);
  }

  // optional float max_dpi_x = 9;
  if (cached_has_bits & 0x00001000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloat(9, this->max_dpi_x(), output);
  }

  // optional float max_dpi_y = 10;
  if (cached_has_bits & 0x00002000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloat(10, this->max_dpi_y(), output);
  }

  // optional float primary_screen_scale_factor = 12;
  if (cached_has_bits & 0x00004000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFloat(12, this->primary_screen_scale_factor(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.CPU cpu = 13;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      13, _Internal::cpu(this), output);
  }

  // optional bool internal_display_supports_touch = 14;
  if (cached_has_bits & 0x00008000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(14, this->internal_display_supports_touch(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.Drive app_drive = 16;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      16, _Internal::app_drive(this), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.Drive user_data_drive = 17;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      17, _Internal::user_data_drive(this), output);
  }

  // optional string full_hardware_class = 18;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      18, this->full_hardware_class(), output);
  }

  // optional .metrics.SystemProfileProto.Hardware.FormFactor form_factor = 19;
  if (cached_has_bits & 0x00010000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      19, this->form_factor(), output);
  }

  // repeated .metrics.SystemProfileProto.Hardware.InternalStorageDevice internal_storage_devices = 20;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->internal_storage_devices_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      20,
      this->internal_storage_devices(static_cast<int>(i)),
      output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Hardware)
}

size_t SystemProfileProto_Hardware::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Hardware)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // repeated .metrics.SystemProfileProto.Hardware.InternalStorageDevice internal_storage_devices = 20;
  {
    unsigned int count = static_cast<unsigned int>(this->internal_storage_devices_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->internal_storage_devices(static_cast<int>(i)));
    }
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string cpu_architecture = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->cpu_architecture());
    }

    // optional string hardware_class = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->hardware_class());
    }

    // optional string full_hardware_class = 18;
    if (cached_has_bits & 0x00000004u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->full_hardware_class());
    }

    // optional .metrics.SystemProfileProto.Hardware.Graphics gpu = 8;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *gpu_);
    }

    // optional .metrics.SystemProfileProto.Hardware.CPU cpu = 13;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *cpu_);
    }

    // optional .metrics.SystemProfileProto.Hardware.Drive app_drive = 16;
    if (cached_has_bits & 0x00000020u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *app_drive_);
    }

    // optional .metrics.SystemProfileProto.Hardware.Drive user_data_drive = 17;
    if (cached_has_bits & 0x00000040u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *user_data_drive_);
    }

    // optional int64 system_ram_mb = 2;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->system_ram_mb());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional int64 dll_base = 3;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->dll_base());
    }

    // optional int32 screen_count = 5;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->screen_count());
    }

    // optional int32 primary_screen_width = 6;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->primary_screen_width());
    }

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

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

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

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

    // optional bool internal_display_supports_touch = 14;
    if (cached_has_bits & 0x00008000u) {
      total_size += 1 + 1;
    }

  }
  // optional .metrics.SystemProfileProto.Hardware.FormFactor form_factor = 19;
  if (cached_has_bits & 0x00010000u) {
    total_size += 2 +
      ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->form_factor());
  }

  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Hardware::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Hardware*>(
      &from));
}

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

  internal_storage_devices_.MergeFrom(from.internal_storage_devices_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      cpu_architecture_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.cpu_architecture_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      hardware_class_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.hardware_class_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      full_hardware_class_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.full_hardware_class_);
    }
    if (cached_has_bits & 0x00000008u) {
      mutable_gpu()->::metrics::SystemProfileProto_Hardware_Graphics::MergeFrom(from.gpu());
    }
    if (cached_has_bits & 0x00000010u) {
      mutable_cpu()->::metrics::SystemProfileProto_Hardware_CPU::MergeFrom(from.cpu());
    }
    if (cached_has_bits & 0x00000020u) {
      mutable_app_drive()->::metrics::SystemProfileProto_Hardware_Drive::MergeFrom(from.app_drive());
    }
    if (cached_has_bits & 0x00000040u) {
      mutable_user_data_drive()->::metrics::SystemProfileProto_Hardware_Drive::MergeFrom(from.user_data_drive());
    }
    if (cached_has_bits & 0x00000080u) {
      system_ram_mb_ = from.system_ram_mb_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      dll_base_ = from.dll_base_;
    }
    if (cached_has_bits & 0x00000200u) {
      screen_count_ = from.screen_count_;
    }
    if (cached_has_bits & 0x00000400u) {
      primary_screen_width_ = from.primary_screen_width_;
    }
    if (cached_has_bits & 0x00000800u) {
      primary_screen_height_ = from.primary_screen_height_;
    }
    if (cached_has_bits & 0x00001000u) {
      max_dpi_x_ = from.max_dpi_x_;
    }
    if (cached_has_bits & 0x00002000u) {
      max_dpi_y_ = from.max_dpi_y_;
    }
    if (cached_has_bits & 0x00004000u) {
      primary_screen_scale_factor_ = from.primary_screen_scale_factor_;
    }
    if (cached_has_bits & 0x00008000u) {
      internal_display_supports_touch_ = from.internal_display_supports_touch_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00010000u) {
    set_form_factor(from.form_factor());
  }
}

void SystemProfileProto_Hardware::CopyFrom(const SystemProfileProto_Hardware& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Hardware)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Hardware::InternalSwap(SystemProfileProto_Hardware* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  CastToBase(&internal_storage_devices_)->InternalSwap(CastToBase(&other->internal_storage_devices_));
  cpu_architecture_.Swap(&other->cpu_architecture_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  hardware_class_.Swap(&other->hardware_class_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  full_hardware_class_.Swap(&other->full_hardware_class_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(gpu_, other->gpu_);
  swap(cpu_, other->cpu_);
  swap(app_drive_, other->app_drive_);
  swap(user_data_drive_, other->user_data_drive_);
  swap(system_ram_mb_, other->system_ram_mb_);
  swap(dll_base_, other->dll_base_);
  swap(screen_count_, other->screen_count_);
  swap(primary_screen_width_, other->primary_screen_width_);
  swap(primary_screen_height_, other->primary_screen_height_);
  swap(max_dpi_x_, other->max_dpi_x_);
  swap(max_dpi_y_, other->max_dpi_y_);
  swap(primary_screen_scale_factor_, other->primary_screen_scale_factor_);
  swap(internal_display_supports_touch_, other->internal_display_supports_touch_);
  swap(form_factor_, other->form_factor_);
}

std::string SystemProfileProto_Hardware::GetTypeName() const {
  return "metrics.SystemProfileProto.Hardware";
}


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

void SystemProfileProto_Network::InitAsDefaultInstance() {
}
class SystemProfileProto_Network::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Network>()._has_bits_);
  static void set_has_connection_type_is_ambiguous(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_connection_type(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_wifi_phy_layer_protocol_is_ambiguous(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_wifi_phy_layer_protocol(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_min_effective_connection_type(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_max_effective_connection_type(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
};

SystemProfileProto_Network::SystemProfileProto_Network()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Network)
}
SystemProfileProto_Network::SystemProfileProto_Network(const SystemProfileProto_Network& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&connection_type_, &from.connection_type_,
    static_cast<size_t>(reinterpret_cast<char*>(&max_effective_connection_type_) -
    reinterpret_cast<char*>(&connection_type_)) + sizeof(max_effective_connection_type_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Network)
}

void SystemProfileProto_Network::SharedCtor() {
  ::memset(&connection_type_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&max_effective_connection_type_) -
      reinterpret_cast<char*>(&connection_type_)) + sizeof(max_effective_connection_type_));
}

SystemProfileProto_Network::~SystemProfileProto_Network() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Network)
  SharedDtor();
}

void SystemProfileProto_Network::SharedDtor() {
}

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


void SystemProfileProto_Network::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Network)
  ::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 & 0x0000003fu) {
    ::memset(&connection_type_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&max_effective_connection_type_) -
        reinterpret_cast<char*>(&connection_type_)) + sizeof(max_effective_connection_type_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Network::_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 bool connection_type_is_ambiguous = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_connection_type_is_ambiguous(&has_bits);
          connection_type_is_ambiguous_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Network.ConnectionType connection_type = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Network_ConnectionType_IsValid(val))) {
            set_connection_type(static_cast<::metrics::SystemProfileProto_Network_ConnectionType>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(2, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional bool wifi_phy_layer_protocol_is_ambiguous = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_wifi_phy_layer_protocol_is_ambiguous(&has_bits);
          wifi_phy_layer_protocol_is_ambiguous_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Network.WifiPHYLayerProtocol wifi_phy_layer_protocol = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Network_WifiPHYLayerProtocol_IsValid(val))) {
            set_wifi_phy_layer_protocol(static_cast<::metrics::SystemProfileProto_Network_WifiPHYLayerProtocol>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(4, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType min_effective_connection_type = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Network_EffectiveConnectionType_IsValid(val))) {
            set_min_effective_connection_type(static_cast<::metrics::SystemProfileProto_Network_EffectiveConnectionType>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(7, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType max_effective_connection_type = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Network_EffectiveConnectionType_IsValid(val))) {
            set_max_effective_connection_type(static_cast<::metrics::SystemProfileProto_Network_EffectiveConnectionType>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(8, val, mutable_unknown_fields());
          }
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Network::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Network)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool connection_type_is_ambiguous = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_connection_type_is_ambiguous(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &connection_type_is_ambiguous_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Network.ConnectionType connection_type = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Network_ConnectionType_IsValid(value)) {
            set_connection_type(static_cast< ::metrics::SystemProfileProto_Network_ConnectionType >(value));
          } else {
            unknown_fields_stream.WriteVarint32(16u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool wifi_phy_layer_protocol_is_ambiguous = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_wifi_phy_layer_protocol_is_ambiguous(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &wifi_phy_layer_protocol_is_ambiguous_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Network.WifiPHYLayerProtocol wifi_phy_layer_protocol = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Network_WifiPHYLayerProtocol_IsValid(value)) {
            set_wifi_phy_layer_protocol(static_cast< ::metrics::SystemProfileProto_Network_WifiPHYLayerProtocol >(value));
          } else {
            unknown_fields_stream.WriteVarint32(32u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType min_effective_connection_type = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Network_EffectiveConnectionType_IsValid(value)) {
            set_min_effective_connection_type(static_cast< ::metrics::SystemProfileProto_Network_EffectiveConnectionType >(value));
          } else {
            unknown_fields_stream.WriteVarint32(56u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType max_effective_connection_type = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Network_EffectiveConnectionType_IsValid(value)) {
            set_max_effective_connection_type(static_cast< ::metrics::SystemProfileProto_Network_EffectiveConnectionType >(value));
          } else {
            unknown_fields_stream.WriteVarint32(64u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Network)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Network)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Network::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Network)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool connection_type_is_ambiguous = 1;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(1, this->connection_type_is_ambiguous(), output);
  }

  // optional .metrics.SystemProfileProto.Network.ConnectionType connection_type = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      2, this->connection_type(), output);
  }

  // optional bool wifi_phy_layer_protocol_is_ambiguous = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(3, this->wifi_phy_layer_protocol_is_ambiguous(), output);
  }

  // optional .metrics.SystemProfileProto.Network.WifiPHYLayerProtocol wifi_phy_layer_protocol = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      4, this->wifi_phy_layer_protocol(), output);
  }

  // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType min_effective_connection_type = 7;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      7, this->min_effective_connection_type(), output);
  }

  // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType max_effective_connection_type = 8;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      8, this->max_effective_connection_type(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Network)
}

size_t SystemProfileProto_Network::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Network)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000003fu) {
    // optional .metrics.SystemProfileProto.Network.ConnectionType connection_type = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->connection_type());
    }

    // optional bool connection_type_is_ambiguous = 1;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

    // optional bool wifi_phy_layer_protocol_is_ambiguous = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 1;
    }

    // optional .metrics.SystemProfileProto.Network.WifiPHYLayerProtocol wifi_phy_layer_protocol = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->wifi_phy_layer_protocol());
    }

    // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType min_effective_connection_type = 7;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->min_effective_connection_type());
    }

    // optional .metrics.SystemProfileProto.Network.EffectiveConnectionType max_effective_connection_type = 8;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->max_effective_connection_type());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Network::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Network*>(
      &from));
}

void SystemProfileProto_Network::MergeFrom(const SystemProfileProto_Network& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Network)
  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 & 0x0000003fu) {
    if (cached_has_bits & 0x00000001u) {
      connection_type_ = from.connection_type_;
    }
    if (cached_has_bits & 0x00000002u) {
      connection_type_is_ambiguous_ = from.connection_type_is_ambiguous_;
    }
    if (cached_has_bits & 0x00000004u) {
      wifi_phy_layer_protocol_is_ambiguous_ = from.wifi_phy_layer_protocol_is_ambiguous_;
    }
    if (cached_has_bits & 0x00000008u) {
      wifi_phy_layer_protocol_ = from.wifi_phy_layer_protocol_;
    }
    if (cached_has_bits & 0x00000010u) {
      min_effective_connection_type_ = from.min_effective_connection_type_;
    }
    if (cached_has_bits & 0x00000020u) {
      max_effective_connection_type_ = from.max_effective_connection_type_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Network::CopyFrom(const SystemProfileProto_Network& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Network)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Network::InternalSwap(SystemProfileProto_Network* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(connection_type_, other->connection_type_);
  swap(connection_type_is_ambiguous_, other->connection_type_is_ambiguous_);
  swap(wifi_phy_layer_protocol_is_ambiguous_, other->wifi_phy_layer_protocol_is_ambiguous_);
  swap(wifi_phy_layer_protocol_, other->wifi_phy_layer_protocol_);
  swap(min_effective_connection_type_, other->min_effective_connection_type_);
  swap(max_effective_connection_type_, other->max_effective_connection_type_);
}

std::string SystemProfileProto_Network::GetTypeName() const {
  return "metrics.SystemProfileProto.Network";
}


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

void SystemProfileProto_GoogleUpdate_ProductInfo::InitAsDefaultInstance() {
}
class SystemProfileProto_GoogleUpdate_ProductInfo::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_GoogleUpdate_ProductInfo>()._has_bits_);
  static void set_has_version(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_last_update_success_timestamp(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_last_result(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_last_error(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_last_extra_error(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

SystemProfileProto_GoogleUpdate_ProductInfo::SystemProfileProto_GoogleUpdate_ProductInfo()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
}
SystemProfileProto_GoogleUpdate_ProductInfo::SystemProfileProto_GoogleUpdate_ProductInfo(const SystemProfileProto_GoogleUpdate_ProductInfo& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_version()) {
    version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
  }
  ::memcpy(&last_update_success_timestamp_, &from.last_update_success_timestamp_,
    static_cast<size_t>(reinterpret_cast<char*>(&last_extra_error_) -
    reinterpret_cast<char*>(&last_update_success_timestamp_)) + sizeof(last_extra_error_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
}

void SystemProfileProto_GoogleUpdate_ProductInfo::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_GoogleUpdate_ProductInfo_system_5fprofile_2eproto.base);
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&last_update_success_timestamp_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&last_extra_error_) -
      reinterpret_cast<char*>(&last_update_success_timestamp_)) + sizeof(last_extra_error_));
}

SystemProfileProto_GoogleUpdate_ProductInfo::~SystemProfileProto_GoogleUpdate_ProductInfo() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  SharedDtor();
}

void SystemProfileProto_GoogleUpdate_ProductInfo::SharedDtor() {
  version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_GoogleUpdate_ProductInfo::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  ::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) {
    version_.ClearNonDefaultToEmptyNoArena();
  }
  if (cached_has_bits & 0x0000001eu) {
    ::memset(&last_update_success_timestamp_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&last_extra_error_) -
        reinterpret_cast<char*>(&last_update_success_timestamp_)) + sizeof(last_extra_error_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_GoogleUpdate_ProductInfo::_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 string version = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 last_update_success_timestamp = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_last_update_success_timestamp(&has_bits);
          last_update_success_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo.InstallResult last_result = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_IsValid(val))) {
            set_last_result(static_cast<::metrics::SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(3, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional int32 last_error = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_last_error(&has_bits);
          last_error_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 last_extra_error = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_last_extra_error(&has_bits);
          last_extra_error_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_GoogleUpdate_ProductInfo::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string version = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 last_update_success_timestamp = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_last_update_success_timestamp(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &last_update_success_timestamp_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo.InstallResult last_result = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult_IsValid(value)) {
            set_last_result(static_cast< ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo_InstallResult >(value));
          } else {
            unknown_fields_stream.WriteVarint32(24u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 last_error = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_last_error(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &last_error_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 last_extra_error = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_last_extra_error(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &last_extra_error_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_GoogleUpdate_ProductInfo::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string version = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->version(), output);
  }

  // optional int64 last_update_success_timestamp = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(2, this->last_update_success_timestamp(), output);
  }

  // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo.InstallResult last_result = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      3, this->last_result(), output);
  }

  // optional int32 last_error = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->last_error(), output);
  }

  // optional int32 last_extra_error = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->last_extra_error(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
}

size_t SystemProfileProto_GoogleUpdate_ProductInfo::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string version = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->version());
    }

    // optional int64 last_update_success_timestamp = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->last_update_success_timestamp());
    }

    // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo.InstallResult last_result = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->last_result());
    }

    // optional int32 last_error = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->last_error());
    }

    // optional int32 last_extra_error = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->last_extra_error());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_GoogleUpdate_ProductInfo::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_GoogleUpdate_ProductInfo*>(
      &from));
}

void SystemProfileProto_GoogleUpdate_ProductInfo::MergeFrom(const SystemProfileProto_GoogleUpdate_ProductInfo& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  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) {
      _has_bits_[0] |= 0x00000001u;
      version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
    }
    if (cached_has_bits & 0x00000002u) {
      last_update_success_timestamp_ = from.last_update_success_timestamp_;
    }
    if (cached_has_bits & 0x00000004u) {
      last_result_ = from.last_result_;
    }
    if (cached_has_bits & 0x00000008u) {
      last_error_ = from.last_error_;
    }
    if (cached_has_bits & 0x00000010u) {
      last_extra_error_ = from.last_extra_error_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_GoogleUpdate_ProductInfo::CopyFrom(const SystemProfileProto_GoogleUpdate_ProductInfo& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.GoogleUpdate.ProductInfo)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_GoogleUpdate_ProductInfo::InternalSwap(SystemProfileProto_GoogleUpdate_ProductInfo* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(last_update_success_timestamp_, other->last_update_success_timestamp_);
  swap(last_result_, other->last_result_);
  swap(last_error_, other->last_error_);
  swap(last_extra_error_, other->last_extra_error_);
}

std::string SystemProfileProto_GoogleUpdate_ProductInfo::GetTypeName() const {
  return "metrics.SystemProfileProto.GoogleUpdate.ProductInfo";
}


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

void SystemProfileProto_GoogleUpdate::InitAsDefaultInstance() {
  ::metrics::_SystemProfileProto_GoogleUpdate_default_instance_._instance.get_mutable()->google_update_status_ = const_cast< ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo*>(
      ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo::internal_default_instance());
  ::metrics::_SystemProfileProto_GoogleUpdate_default_instance_._instance.get_mutable()->client_status_ = const_cast< ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo*>(
      ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo::internal_default_instance());
}
class SystemProfileProto_GoogleUpdate::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_GoogleUpdate>()._has_bits_);
  static void set_has_is_system_install(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_last_automatic_start_timestamp(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_last_update_check_timestamp(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo& google_update_status(const SystemProfileProto_GoogleUpdate* msg);
  static void set_has_google_update_status(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static const ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo& client_status(const SystemProfileProto_GoogleUpdate* msg);
  static void set_has_client_status(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

const ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo&
SystemProfileProto_GoogleUpdate::_Internal::google_update_status(const SystemProfileProto_GoogleUpdate* msg) {
  return *msg->google_update_status_;
}
const ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo&
SystemProfileProto_GoogleUpdate::_Internal::client_status(const SystemProfileProto_GoogleUpdate* msg) {
  return *msg->client_status_;
}
SystemProfileProto_GoogleUpdate::SystemProfileProto_GoogleUpdate()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.GoogleUpdate)
}
SystemProfileProto_GoogleUpdate::SystemProfileProto_GoogleUpdate(const SystemProfileProto_GoogleUpdate& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_google_update_status()) {
    google_update_status_ = new ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo(*from.google_update_status_);
  } else {
    google_update_status_ = nullptr;
  }
  if (from.has_client_status()) {
    client_status_ = new ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo(*from.client_status_);
  } else {
    client_status_ = nullptr;
  }
  ::memcpy(&last_automatic_start_timestamp_, &from.last_automatic_start_timestamp_,
    static_cast<size_t>(reinterpret_cast<char*>(&is_system_install_) -
    reinterpret_cast<char*>(&last_automatic_start_timestamp_)) + sizeof(is_system_install_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.GoogleUpdate)
}

void SystemProfileProto_GoogleUpdate::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_GoogleUpdate_system_5fprofile_2eproto.base);
  ::memset(&google_update_status_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_system_install_) -
      reinterpret_cast<char*>(&google_update_status_)) + sizeof(is_system_install_));
}

SystemProfileProto_GoogleUpdate::~SystemProfileProto_GoogleUpdate() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.GoogleUpdate)
  SharedDtor();
}

void SystemProfileProto_GoogleUpdate::SharedDtor() {
  if (this != internal_default_instance()) delete google_update_status_;
  if (this != internal_default_instance()) delete client_status_;
}

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


void SystemProfileProto_GoogleUpdate::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.GoogleUpdate)
  ::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 & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      GOOGLE_DCHECK(google_update_status_ != nullptr);
      google_update_status_->Clear();
    }
    if (cached_has_bits & 0x00000002u) {
      GOOGLE_DCHECK(client_status_ != nullptr);
      client_status_->Clear();
    }
  }
  if (cached_has_bits & 0x0000001cu) {
    ::memset(&last_automatic_start_timestamp_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&is_system_install_) -
        reinterpret_cast<char*>(&last_automatic_start_timestamp_)) + sizeof(is_system_install_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_GoogleUpdate::_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 bool is_system_install = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_is_system_install(&has_bits);
          is_system_install_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 last_automatic_start_timestamp = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_last_automatic_start_timestamp(&has_bits);
          last_automatic_start_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 last_update_check_timestamp = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_last_update_check_timestamp(&has_bits);
          last_update_check_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo google_update_status = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ctx->ParseMessage(mutable_google_update_status(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo client_status = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ctx->ParseMessage(mutable_client_status(), 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_GoogleUpdate::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.GoogleUpdate)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional bool is_system_install = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_is_system_install(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_system_install_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 last_automatic_start_timestamp = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_last_automatic_start_timestamp(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &last_automatic_start_timestamp_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 last_update_check_timestamp = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_last_update_check_timestamp(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &last_update_check_timestamp_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo google_update_status = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_google_update_status()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo client_status = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_client_status()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.GoogleUpdate)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.GoogleUpdate)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_GoogleUpdate::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.GoogleUpdate)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional bool is_system_install = 1;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(1, this->is_system_install(), output);
  }

  // optional int64 last_automatic_start_timestamp = 2;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(2, this->last_automatic_start_timestamp(), output);
  }

  // optional int64 last_update_check_timestamp = 3;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(3, this->last_update_check_timestamp(), output);
  }

  // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo google_update_status = 4;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      4, _Internal::google_update_status(this), output);
  }

  // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo client_status = 5;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      5, _Internal::client_status(this), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.GoogleUpdate)
}

size_t SystemProfileProto_GoogleUpdate::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.GoogleUpdate)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 .metrics.SystemProfileProto.GoogleUpdate.ProductInfo google_update_status = 4;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *google_update_status_);
    }

    // optional .metrics.SystemProfileProto.GoogleUpdate.ProductInfo client_status = 5;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *client_status_);
    }

    // optional int64 last_automatic_start_timestamp = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->last_automatic_start_timestamp());
    }

    // optional int64 last_update_check_timestamp = 3;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->last_update_check_timestamp());
    }

    // optional bool is_system_install = 1;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 1;
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_GoogleUpdate::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_GoogleUpdate*>(
      &from));
}

void SystemProfileProto_GoogleUpdate::MergeFrom(const SystemProfileProto_GoogleUpdate& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.GoogleUpdate)
  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) {
      mutable_google_update_status()->::metrics::SystemProfileProto_GoogleUpdate_ProductInfo::MergeFrom(from.google_update_status());
    }
    if (cached_has_bits & 0x00000002u) {
      mutable_client_status()->::metrics::SystemProfileProto_GoogleUpdate_ProductInfo::MergeFrom(from.client_status());
    }
    if (cached_has_bits & 0x00000004u) {
      last_automatic_start_timestamp_ = from.last_automatic_start_timestamp_;
    }
    if (cached_has_bits & 0x00000008u) {
      last_update_check_timestamp_ = from.last_update_check_timestamp_;
    }
    if (cached_has_bits & 0x00000010u) {
      is_system_install_ = from.is_system_install_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_GoogleUpdate::CopyFrom(const SystemProfileProto_GoogleUpdate& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.GoogleUpdate)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_GoogleUpdate::InternalSwap(SystemProfileProto_GoogleUpdate* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(google_update_status_, other->google_update_status_);
  swap(client_status_, other->client_status_);
  swap(last_automatic_start_timestamp_, other->last_automatic_start_timestamp_);
  swap(last_update_check_timestamp_, other->last_update_check_timestamp_);
  swap(is_system_install_, other->is_system_install_);
}

std::string SystemProfileProto_GoogleUpdate::GetTypeName() const {
  return "metrics.SystemProfileProto.GoogleUpdate";
}


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

void SystemProfileProto_Plugin::InitAsDefaultInstance() {
}
class SystemProfileProto_Plugin::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Plugin>()._has_bits_);
  static void set_has_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_filename(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_version(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_is_disabled(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_is_pepper(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

SystemProfileProto_Plugin::SystemProfileProto_Plugin()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Plugin)
}
SystemProfileProto_Plugin::SystemProfileProto_Plugin(const SystemProfileProto_Plugin& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_name()) {
    name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
  }
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_filename()) {
    filename_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.filename_);
  }
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_version()) {
    version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
  }
  ::memcpy(&is_disabled_, &from.is_disabled_,
    static_cast<size_t>(reinterpret_cast<char*>(&is_pepper_) -
    reinterpret_cast<char*>(&is_disabled_)) + sizeof(is_pepper_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Plugin)
}

void SystemProfileProto_Plugin::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Plugin_system_5fprofile_2eproto.base);
  name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  filename_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&is_disabled_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_pepper_) -
      reinterpret_cast<char*>(&is_disabled_)) + sizeof(is_pepper_));
}

SystemProfileProto_Plugin::~SystemProfileProto_Plugin() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Plugin)
  SharedDtor();
}

void SystemProfileProto_Plugin::SharedDtor() {
  name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  filename_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_Plugin::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Plugin)
  ::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) {
    if (cached_has_bits & 0x00000001u) {
      name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      filename_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      version_.ClearNonDefaultToEmptyNoArena();
    }
  }
  ::memset(&is_disabled_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_pepper_) -
      reinterpret_cast<char*>(&is_disabled_)) + sizeof(is_pepper_));
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Plugin::_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 string name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string filename = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_filename(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string version = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_disabled = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_is_disabled(&has_bits);
          is_disabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_pepper = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_is_pepper(&has_bits);
          is_pepper_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Plugin::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Plugin)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string name = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string filename = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_filename()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string version = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_disabled = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_is_disabled(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_disabled_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_pepper = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_is_pepper(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_pepper_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Plugin)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Plugin)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Plugin::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Plugin)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->name(), output);
  }

  // optional string filename = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->filename(), output);
  }

  // optional string version = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->version(), output);
  }

  // optional bool is_disabled = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(4, this->is_disabled(), output);
  }

  // optional bool is_pepper = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(5, this->is_pepper(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Plugin)
}

size_t SystemProfileProto_Plugin::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Plugin)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->name());
    }

    // optional string filename = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->filename());
    }

    // optional string version = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->version());
    }

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

    // optional bool is_pepper = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 + 1;
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Plugin::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Plugin*>(
      &from));
}

void SystemProfileProto_Plugin::MergeFrom(const SystemProfileProto_Plugin& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Plugin)
  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) {
      _has_bits_[0] |= 0x00000001u;
      name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.name_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      filename_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.filename_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
    }
    if (cached_has_bits & 0x00000008u) {
      is_disabled_ = from.is_disabled_;
    }
    if (cached_has_bits & 0x00000010u) {
      is_pepper_ = from.is_pepper_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Plugin::CopyFrom(const SystemProfileProto_Plugin& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Plugin)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Plugin::InternalSwap(SystemProfileProto_Plugin* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  name_.Swap(&other->name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  filename_.Swap(&other->filename_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(is_disabled_, other->is_disabled_);
  swap(is_pepper_, other->is_pepper_);
}

std::string SystemProfileProto_Plugin::GetTypeName() const {
  return "metrics.SystemProfileProto.Plugin";
}


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

void SystemProfileProto_Stability_PluginStability::InitAsDefaultInstance() {
  ::metrics::_SystemProfileProto_Stability_PluginStability_default_instance_._instance.get_mutable()->plugin_ = const_cast< ::metrics::SystemProfileProto_Plugin*>(
      ::metrics::SystemProfileProto_Plugin::internal_default_instance());
}
class SystemProfileProto_Stability_PluginStability::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Stability_PluginStability>()._has_bits_);
  static const ::metrics::SystemProfileProto_Plugin& plugin(const SystemProfileProto_Stability_PluginStability* msg);
  static void set_has_plugin(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_instance_count(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_loading_error_count(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

const ::metrics::SystemProfileProto_Plugin&
SystemProfileProto_Stability_PluginStability::_Internal::plugin(const SystemProfileProto_Stability_PluginStability* msg) {
  return *msg->plugin_;
}
SystemProfileProto_Stability_PluginStability::SystemProfileProto_Stability_PluginStability()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Stability.PluginStability)
}
SystemProfileProto_Stability_PluginStability::SystemProfileProto_Stability_PluginStability(const SystemProfileProto_Stability_PluginStability& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  if (from.has_plugin()) {
    plugin_ = new ::metrics::SystemProfileProto_Plugin(*from.plugin_);
  } else {
    plugin_ = nullptr;
  }
  ::memcpy(&launch_count_, &from.launch_count_,
    static_cast<size_t>(reinterpret_cast<char*>(&loading_error_count_) -
    reinterpret_cast<char*>(&launch_count_)) + sizeof(loading_error_count_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Stability.PluginStability)
}

void SystemProfileProto_Stability_PluginStability::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Stability_PluginStability_system_5fprofile_2eproto.base);
  ::memset(&plugin_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&loading_error_count_) -
      reinterpret_cast<char*>(&plugin_)) + sizeof(loading_error_count_));
}

SystemProfileProto_Stability_PluginStability::~SystemProfileProto_Stability_PluginStability() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Stability.PluginStability)
  SharedDtor();
}

void SystemProfileProto_Stability_PluginStability::SharedDtor() {
  if (this != internal_default_instance()) delete plugin_;
}

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


void SystemProfileProto_Stability_PluginStability::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Stability.PluginStability)
  ::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(plugin_ != nullptr);
    plugin_->Clear();
  }
  if (cached_has_bits & 0x0000001eu) {
    ::memset(&launch_count_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&loading_error_count_) -
        reinterpret_cast<char*>(&launch_count_)) + sizeof(loading_error_count_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Stability_PluginStability::_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 .metrics.SystemProfileProto.Plugin plugin = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ctx->ParseMessage(mutable_plugin(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 launch_count = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_launch_count(&has_bits);
          launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 instance_count = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_instance_count(&has_bits);
          instance_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 crash_count = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_crash_count(&has_bits);
          crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 loading_error_count = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_loading_error_count(&has_bits);
          loading_error_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Stability_PluginStability::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Stability.PluginStability)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .metrics.SystemProfileProto.Plugin plugin = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_plugin()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 launch_count = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 instance_count = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_instance_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &instance_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 crash_count = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 loading_error_count = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_loading_error_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &loading_error_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Stability.PluginStability)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Stability.PluginStability)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Stability_PluginStability::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Stability.PluginStability)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .metrics.SystemProfileProto.Plugin plugin = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      1, _Internal::plugin(this), output);
  }

  // optional int32 launch_count = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(2, this->launch_count(), output);
  }

  // optional int32 instance_count = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->instance_count(), output);
  }

  // optional int32 crash_count = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->crash_count(), output);
  }

  // optional int32 loading_error_count = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->loading_error_count(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Stability.PluginStability)
}

size_t SystemProfileProto_Stability_PluginStability::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Stability.PluginStability)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 .metrics.SystemProfileProto.Plugin plugin = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *plugin_);
    }

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

    // optional int32 instance_count = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->instance_count());
    }

    // optional int32 crash_count = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->crash_count());
    }

    // optional int32 loading_error_count = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->loading_error_count());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Stability_PluginStability::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Stability_PluginStability*>(
      &from));
}

void SystemProfileProto_Stability_PluginStability::MergeFrom(const SystemProfileProto_Stability_PluginStability& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.Stability.PluginStability)
  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) {
      mutable_plugin()->::metrics::SystemProfileProto_Plugin::MergeFrom(from.plugin());
    }
    if (cached_has_bits & 0x00000002u) {
      launch_count_ = from.launch_count_;
    }
    if (cached_has_bits & 0x00000004u) {
      instance_count_ = from.instance_count_;
    }
    if (cached_has_bits & 0x00000008u) {
      crash_count_ = from.crash_count_;
    }
    if (cached_has_bits & 0x00000010u) {
      loading_error_count_ = from.loading_error_count_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Stability_PluginStability::CopyFrom(const SystemProfileProto_Stability_PluginStability& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Stability.PluginStability)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Stability_PluginStability::InternalSwap(SystemProfileProto_Stability_PluginStability* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(plugin_, other->plugin_);
  swap(launch_count_, other->launch_count_);
  swap(instance_count_, other->instance_count_);
  swap(crash_count_, other->crash_count_);
  swap(loading_error_count_, other->loading_error_count_);
}

std::string SystemProfileProto_Stability_PluginStability::GetTypeName() const {
  return "metrics.SystemProfileProto.Stability.PluginStability";
}


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

void SystemProfileProto_Stability::InitAsDefaultInstance() {
}
class SystemProfileProto_Stability::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_Stability>()._has_bits_);
  static void set_has_incremental_uptime_sec(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_uptime_sec(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_page_load_count(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_renderer_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_renderer_hang_count(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_renderer_failed_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_renderer_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_extension_renderer_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_extension_renderer_failed_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_extension_renderer_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static void set_has_child_process_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_gpu_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static void set_has_other_user_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_kernel_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_unclean_system_shutdown_count(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_launch_count(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_crash_count(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_crash_count_due_to_gms_core_update(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static void set_has_incomplete_shutdown_count(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_breakpad_registration_success_count(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_breakpad_registration_failure_count(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_debugger_present_count(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_debugger_not_present_count(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_from_previous_run(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
};

SystemProfileProto_Stability::SystemProfileProto_Stability()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.Stability)
}
SystemProfileProto_Stability::SystemProfileProto_Stability(const SystemProfileProto_Stability& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      plugin_stability_(from.plugin_stability_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&incremental_uptime_sec_, &from.incremental_uptime_sec_,
    static_cast<size_t>(reinterpret_cast<char*>(&gpu_crash_count_) -
    reinterpret_cast<char*>(&incremental_uptime_sec_)) + sizeof(gpu_crash_count_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.Stability)
}

void SystemProfileProto_Stability::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_Stability_system_5fprofile_2eproto.base);
  ::memset(&incremental_uptime_sec_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&gpu_crash_count_) -
      reinterpret_cast<char*>(&incremental_uptime_sec_)) + sizeof(gpu_crash_count_));
}

SystemProfileProto_Stability::~SystemProfileProto_Stability() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.Stability)
  SharedDtor();
}

void SystemProfileProto_Stability::SharedDtor() {
}

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


void SystemProfileProto_Stability::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.Stability)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  plugin_stability_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    ::memset(&incremental_uptime_sec_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&kernel_crash_count_) -
        reinterpret_cast<char*>(&incremental_uptime_sec_)) + sizeof(kernel_crash_count_));
  }
  if (cached_has_bits & 0x0000ff00u) {
    ::memset(&unclean_system_shutdown_count_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&debugger_not_present_count_) -
        reinterpret_cast<char*>(&unclean_system_shutdown_count_)) + sizeof(debugger_not_present_count_));
  }
  if (cached_has_bits & 0x00ff0000u) {
    ::memset(&renderer_failed_launch_count_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&gpu_crash_count_) -
        reinterpret_cast<char*>(&renderer_failed_launch_count_)) + sizeof(gpu_crash_count_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_Stability::_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 int64 incremental_uptime_sec = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_incremental_uptime_sec(&has_bits);
          incremental_uptime_sec_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 page_load_count = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_page_load_count(&has_bits);
          page_load_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 renderer_crash_count = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_renderer_crash_count(&has_bits);
          renderer_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 renderer_hang_count = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_renderer_hang_count(&has_bits);
          renderer_hang_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 extension_renderer_crash_count = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_extension_renderer_crash_count(&has_bits);
          extension_renderer_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 child_process_crash_count = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_child_process_crash_count(&has_bits);
          child_process_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 other_user_crash_count = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_other_user_crash_count(&has_bits);
          other_user_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 kernel_crash_count = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          _Internal::set_has_kernel_crash_count(&has_bits);
          kernel_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 unclean_system_shutdown_count = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 72)) {
          _Internal::set_has_unclean_system_shutdown_count(&has_bits);
          unclean_system_shutdown_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 launch_count = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 120)) {
          _Internal::set_has_launch_count(&has_bits);
          launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 crash_count = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) {
          _Internal::set_has_crash_count(&has_bits);
          crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 incomplete_shutdown_count = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) {
          _Internal::set_has_incomplete_shutdown_count(&has_bits);
          incomplete_shutdown_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 breakpad_registration_success_count = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) {
          _Internal::set_has_breakpad_registration_success_count(&has_bits);
          breakpad_registration_success_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 breakpad_registration_failure_count = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) {
          _Internal::set_has_breakpad_registration_failure_count(&has_bits);
          breakpad_registration_failure_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 debugger_present_count = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) {
          _Internal::set_has_debugger_present_count(&has_bits);
          debugger_present_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 debugger_not_present_count = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 168)) {
          _Internal::set_has_debugger_not_present_count(&has_bits);
          debugger_not_present_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.Stability.PluginStability plugin_stability = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 178)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(add_plugin_stability(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 434);
        } else goto handle_unusual;
        continue;
      // optional int64 uptime_sec = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 184)) {
          _Internal::set_has_uptime_sec(&has_bits);
          uptime_sec_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 renderer_failed_launch_count = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 192)) {
          _Internal::set_has_renderer_failed_launch_count(&has_bits);
          renderer_failed_launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 extension_renderer_failed_launch_count = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 200)) {
          _Internal::set_has_extension_renderer_failed_launch_count(&has_bits);
          extension_renderer_failed_launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 renderer_launch_count = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 208)) {
          _Internal::set_has_renderer_launch_count(&has_bits);
          renderer_launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 extension_renderer_launch_count = 27;
      case 27:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 216)) {
          _Internal::set_has_extension_renderer_launch_count(&has_bits);
          extension_renderer_launch_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool from_previous_run = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 232)) {
          _Internal::set_has_from_previous_run(&has_bits);
          from_previous_run_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 crash_count_due_to_gms_core_update = 30;
      case 30:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 240)) {
          _Internal::set_has_crash_count_due_to_gms_core_update(&has_bits);
          crash_count_due_to_gms_core_update_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 gpu_crash_count = 31;
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 248)) {
          _Internal::set_has_gpu_crash_count(&has_bits);
          gpu_crash_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_Stability::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.Stability)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int64 incremental_uptime_sec = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_incremental_uptime_sec(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &incremental_uptime_sec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 page_load_count = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_page_load_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &page_load_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 renderer_crash_count = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_renderer_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &renderer_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 renderer_hang_count = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_renderer_hang_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &renderer_hang_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 extension_renderer_crash_count = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_extension_renderer_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &extension_renderer_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 child_process_crash_count = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          _Internal::set_has_child_process_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &child_process_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 other_user_crash_count = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          _Internal::set_has_other_user_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &other_user_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 kernel_crash_count = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) {
          _Internal::set_has_kernel_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &kernel_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 unclean_system_shutdown_count = 9;
      case 9: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (72 & 0xFF)) {
          _Internal::set_has_unclean_system_shutdown_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &unclean_system_shutdown_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 launch_count = 15;
      case 15: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (120 & 0xFF)) {
          _Internal::set_has_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 crash_count = 16;
      case 16: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (128 & 0xFF)) {
          _Internal::set_has_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 incomplete_shutdown_count = 17;
      case 17: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (136 & 0xFF)) {
          _Internal::set_has_incomplete_shutdown_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &incomplete_shutdown_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 breakpad_registration_success_count = 18;
      case 18: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (144 & 0xFF)) {
          _Internal::set_has_breakpad_registration_success_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &breakpad_registration_success_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 breakpad_registration_failure_count = 19;
      case 19: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (152 & 0xFF)) {
          _Internal::set_has_breakpad_registration_failure_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &breakpad_registration_failure_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 debugger_present_count = 20;
      case 20: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (160 & 0xFF)) {
          _Internal::set_has_debugger_present_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &debugger_present_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 debugger_not_present_count = 21;
      case 21: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (168 & 0xFF)) {
          _Internal::set_has_debugger_not_present_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &debugger_not_present_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.Stability.PluginStability plugin_stability = 22;
      case 22: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (178 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_plugin_stability()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 uptime_sec = 23;
      case 23: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (184 & 0xFF)) {
          _Internal::set_has_uptime_sec(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &uptime_sec_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 renderer_failed_launch_count = 24;
      case 24: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (192 & 0xFF)) {
          _Internal::set_has_renderer_failed_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &renderer_failed_launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 extension_renderer_failed_launch_count = 25;
      case 25: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (200 & 0xFF)) {
          _Internal::set_has_extension_renderer_failed_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &extension_renderer_failed_launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 renderer_launch_count = 26;
      case 26: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (208 & 0xFF)) {
          _Internal::set_has_renderer_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &renderer_launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 extension_renderer_launch_count = 27;
      case 27: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (216 & 0xFF)) {
          _Internal::set_has_extension_renderer_launch_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &extension_renderer_launch_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool from_previous_run = 29;
      case 29: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (232 & 0xFF)) {
          _Internal::set_has_from_previous_run(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &from_previous_run_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 crash_count_due_to_gms_core_update = 30;
      case 30: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (240 & 0xFF)) {
          _Internal::set_has_crash_count_due_to_gms_core_update(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &crash_count_due_to_gms_core_update_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 gpu_crash_count = 31;
      case 31: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (248 & 0xFF)) {
          _Internal::set_has_gpu_crash_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &gpu_crash_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.Stability)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.Stability)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_Stability::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.Stability)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int64 incremental_uptime_sec = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(1, this->incremental_uptime_sec(), output);
  }

  // optional int32 page_load_count = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(2, this->page_load_count(), output);
  }

  // optional int32 renderer_crash_count = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->renderer_crash_count(), output);
  }

  // optional int32 renderer_hang_count = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->renderer_hang_count(), output);
  }

  // optional int32 extension_renderer_crash_count = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->extension_renderer_crash_count(), output);
  }

  // optional int32 child_process_crash_count = 6;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(6, this->child_process_crash_count(), output);
  }

  // optional int32 other_user_crash_count = 7;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(7, this->other_user_crash_count(), output);
  }

  // optional int32 kernel_crash_count = 8;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(8, this->kernel_crash_count(), output);
  }

  // optional int32 unclean_system_shutdown_count = 9;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(9, this->unclean_system_shutdown_count(), output);
  }

  // optional int32 launch_count = 15;
  if (cached_has_bits & 0x00000200u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(15, this->launch_count(), output);
  }

  // optional int32 crash_count = 16;
  if (cached_has_bits & 0x00000400u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(16, this->crash_count(), output);
  }

  // optional int32 incomplete_shutdown_count = 17;
  if (cached_has_bits & 0x00000800u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(17, this->incomplete_shutdown_count(), output);
  }

  // optional int32 breakpad_registration_success_count = 18;
  if (cached_has_bits & 0x00001000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(18, this->breakpad_registration_success_count(), output);
  }

  // optional int32 breakpad_registration_failure_count = 19;
  if (cached_has_bits & 0x00002000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(19, this->breakpad_registration_failure_count(), output);
  }

  // optional int32 debugger_present_count = 20;
  if (cached_has_bits & 0x00004000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(20, this->debugger_present_count(), output);
  }

  // optional int32 debugger_not_present_count = 21;
  if (cached_has_bits & 0x00008000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(21, this->debugger_not_present_count(), output);
  }

  // repeated .metrics.SystemProfileProto.Stability.PluginStability plugin_stability = 22;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->plugin_stability_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      22,
      this->plugin_stability(static_cast<int>(i)),
      output);
  }

  // optional int64 uptime_sec = 23;
  if (cached_has_bits & 0x00020000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(23, this->uptime_sec(), output);
  }

  // optional int32 renderer_failed_launch_count = 24;
  if (cached_has_bits & 0x00010000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(24, this->renderer_failed_launch_count(), output);
  }

  // optional int32 extension_renderer_failed_launch_count = 25;
  if (cached_has_bits & 0x00040000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(25, this->extension_renderer_failed_launch_count(), output);
  }

  // optional int32 renderer_launch_count = 26;
  if (cached_has_bits & 0x00080000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(26, this->renderer_launch_count(), output);
  }

  // optional int32 extension_renderer_launch_count = 27;
  if (cached_has_bits & 0x00100000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(27, this->extension_renderer_launch_count(), output);
  }

  // optional bool from_previous_run = 29;
  if (cached_has_bits & 0x00200000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(29, this->from_previous_run(), output);
  }

  // optional int32 crash_count_due_to_gms_core_update = 30;
  if (cached_has_bits & 0x00400000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(30, this->crash_count_due_to_gms_core_update(), output);
  }

  // optional int32 gpu_crash_count = 31;
  if (cached_has_bits & 0x00800000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(31, this->gpu_crash_count(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.Stability)
}

size_t SystemProfileProto_Stability::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.Stability)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // repeated .metrics.SystemProfileProto.Stability.PluginStability plugin_stability = 22;
  {
    unsigned int count = static_cast<unsigned int>(this->plugin_stability_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->plugin_stability(static_cast<int>(i)));
    }
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional int64 incremental_uptime_sec = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->incremental_uptime_sec());
    }

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

    // optional int32 renderer_crash_count = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->renderer_crash_count());
    }

    // optional int32 renderer_hang_count = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->renderer_hang_count());
    }

    // optional int32 extension_renderer_crash_count = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->extension_renderer_crash_count());
    }

    // optional int32 child_process_crash_count = 6;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->child_process_crash_count());
    }

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

    // optional int32 kernel_crash_count = 8;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->kernel_crash_count());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional int32 unclean_system_shutdown_count = 9;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->unclean_system_shutdown_count());
    }

    // optional int32 launch_count = 15;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->launch_count());
    }

    // optional int32 crash_count = 16;
    if (cached_has_bits & 0x00000400u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->crash_count());
    }

    // optional int32 incomplete_shutdown_count = 17;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->incomplete_shutdown_count());
    }

    // optional int32 breakpad_registration_success_count = 18;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->breakpad_registration_success_count());
    }

    // optional int32 breakpad_registration_failure_count = 19;
    if (cached_has_bits & 0x00002000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->breakpad_registration_failure_count());
    }

    // optional int32 debugger_present_count = 20;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->debugger_present_count());
    }

    // optional int32 debugger_not_present_count = 21;
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->debugger_not_present_count());
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // optional int32 renderer_failed_launch_count = 24;
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->renderer_failed_launch_count());
    }

    // optional int64 uptime_sec = 23;
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->uptime_sec());
    }

    // optional int32 extension_renderer_failed_launch_count = 25;
    if (cached_has_bits & 0x00040000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->extension_renderer_failed_launch_count());
    }

    // optional int32 renderer_launch_count = 26;
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->renderer_launch_count());
    }

    // optional int32 extension_renderer_launch_count = 27;
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->extension_renderer_launch_count());
    }

    // optional bool from_previous_run = 29;
    if (cached_has_bits & 0x00200000u) {
      total_size += 2 + 1;
    }

    // optional int32 crash_count_due_to_gms_core_update = 30;
    if (cached_has_bits & 0x00400000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->crash_count_due_to_gms_core_update());
    }

    // optional int32 gpu_crash_count = 31;
    if (cached_has_bits & 0x00800000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->gpu_crash_count());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_Stability::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_Stability*>(
      &from));
}

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

  plugin_stability_.MergeFrom(from.plugin_stability_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      incremental_uptime_sec_ = from.incremental_uptime_sec_;
    }
    if (cached_has_bits & 0x00000002u) {
      page_load_count_ = from.page_load_count_;
    }
    if (cached_has_bits & 0x00000004u) {
      renderer_crash_count_ = from.renderer_crash_count_;
    }
    if (cached_has_bits & 0x00000008u) {
      renderer_hang_count_ = from.renderer_hang_count_;
    }
    if (cached_has_bits & 0x00000010u) {
      extension_renderer_crash_count_ = from.extension_renderer_crash_count_;
    }
    if (cached_has_bits & 0x00000020u) {
      child_process_crash_count_ = from.child_process_crash_count_;
    }
    if (cached_has_bits & 0x00000040u) {
      other_user_crash_count_ = from.other_user_crash_count_;
    }
    if (cached_has_bits & 0x00000080u) {
      kernel_crash_count_ = from.kernel_crash_count_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      unclean_system_shutdown_count_ = from.unclean_system_shutdown_count_;
    }
    if (cached_has_bits & 0x00000200u) {
      launch_count_ = from.launch_count_;
    }
    if (cached_has_bits & 0x00000400u) {
      crash_count_ = from.crash_count_;
    }
    if (cached_has_bits & 0x00000800u) {
      incomplete_shutdown_count_ = from.incomplete_shutdown_count_;
    }
    if (cached_has_bits & 0x00001000u) {
      breakpad_registration_success_count_ = from.breakpad_registration_success_count_;
    }
    if (cached_has_bits & 0x00002000u) {
      breakpad_registration_failure_count_ = from.breakpad_registration_failure_count_;
    }
    if (cached_has_bits & 0x00004000u) {
      debugger_present_count_ = from.debugger_present_count_;
    }
    if (cached_has_bits & 0x00008000u) {
      debugger_not_present_count_ = from.debugger_not_present_count_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      renderer_failed_launch_count_ = from.renderer_failed_launch_count_;
    }
    if (cached_has_bits & 0x00020000u) {
      uptime_sec_ = from.uptime_sec_;
    }
    if (cached_has_bits & 0x00040000u) {
      extension_renderer_failed_launch_count_ = from.extension_renderer_failed_launch_count_;
    }
    if (cached_has_bits & 0x00080000u) {
      renderer_launch_count_ = from.renderer_launch_count_;
    }
    if (cached_has_bits & 0x00100000u) {
      extension_renderer_launch_count_ = from.extension_renderer_launch_count_;
    }
    if (cached_has_bits & 0x00200000u) {
      from_previous_run_ = from.from_previous_run_;
    }
    if (cached_has_bits & 0x00400000u) {
      crash_count_due_to_gms_core_update_ = from.crash_count_due_to_gms_core_update_;
    }
    if (cached_has_bits & 0x00800000u) {
      gpu_crash_count_ = from.gpu_crash_count_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_Stability::CopyFrom(const SystemProfileProto_Stability& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.Stability)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_Stability::InternalSwap(SystemProfileProto_Stability* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  CastToBase(&plugin_stability_)->InternalSwap(CastToBase(&other->plugin_stability_));
  swap(incremental_uptime_sec_, other->incremental_uptime_sec_);
  swap(page_load_count_, other->page_load_count_);
  swap(renderer_crash_count_, other->renderer_crash_count_);
  swap(renderer_hang_count_, other->renderer_hang_count_);
  swap(extension_renderer_crash_count_, other->extension_renderer_crash_count_);
  swap(child_process_crash_count_, other->child_process_crash_count_);
  swap(other_user_crash_count_, other->other_user_crash_count_);
  swap(kernel_crash_count_, other->kernel_crash_count_);
  swap(unclean_system_shutdown_count_, other->unclean_system_shutdown_count_);
  swap(launch_count_, other->launch_count_);
  swap(crash_count_, other->crash_count_);
  swap(incomplete_shutdown_count_, other->incomplete_shutdown_count_);
  swap(breakpad_registration_success_count_, other->breakpad_registration_success_count_);
  swap(breakpad_registration_failure_count_, other->breakpad_registration_failure_count_);
  swap(debugger_present_count_, other->debugger_present_count_);
  swap(debugger_not_present_count_, other->debugger_not_present_count_);
  swap(renderer_failed_launch_count_, other->renderer_failed_launch_count_);
  swap(uptime_sec_, other->uptime_sec_);
  swap(extension_renderer_failed_launch_count_, other->extension_renderer_failed_launch_count_);
  swap(renderer_launch_count_, other->renderer_launch_count_);
  swap(extension_renderer_launch_count_, other->extension_renderer_launch_count_);
  swap(from_previous_run_, other->from_previous_run_);
  swap(crash_count_due_to_gms_core_update_, other->crash_count_due_to_gms_core_update_);
  swap(gpu_crash_count_, other->gpu_crash_count_);
}

std::string SystemProfileProto_Stability::GetTypeName() const {
  return "metrics.SystemProfileProto.Stability";
}


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

void SystemProfileProto_FieldTrial::InitAsDefaultInstance() {
}
class SystemProfileProto_FieldTrial::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_FieldTrial>()._has_bits_);
  static void set_has_name_id(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_group_id(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
};

SystemProfileProto_FieldTrial::SystemProfileProto_FieldTrial()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.FieldTrial)
}
SystemProfileProto_FieldTrial::SystemProfileProto_FieldTrial(const SystemProfileProto_FieldTrial& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&name_id_, &from.name_id_,
    static_cast<size_t>(reinterpret_cast<char*>(&group_id_) -
    reinterpret_cast<char*>(&name_id_)) + sizeof(group_id_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.FieldTrial)
}

void SystemProfileProto_FieldTrial::SharedCtor() {
  ::memset(&name_id_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&group_id_) -
      reinterpret_cast<char*>(&name_id_)) + sizeof(group_id_));
}

SystemProfileProto_FieldTrial::~SystemProfileProto_FieldTrial() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.FieldTrial)
  SharedDtor();
}

void SystemProfileProto_FieldTrial::SharedDtor() {
}

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


void SystemProfileProto_FieldTrial::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.FieldTrial)
  ::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 & 0x00000003u) {
    ::memset(&name_id_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&group_id_) -
        reinterpret_cast<char*>(&name_id_)) + sizeof(group_id_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_FieldTrial::_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 fixed32 name_id = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_name_id(&has_bits);
          name_id_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } else goto handle_unusual;
        continue;
      // optional fixed32 group_id = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_group_id(&has_bits);
          group_id_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_FieldTrial::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.FieldTrial)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional fixed32 name_id = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (13 & 0xFF)) {
          _Internal::set_has_name_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &name_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 group_id = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (21 & 0xFF)) {
          _Internal::set_has_group_id(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &group_id_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.FieldTrial)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.FieldTrial)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_FieldTrial::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.FieldTrial)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional fixed32 name_id = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(1, this->name_id(), output);
  }

  // optional fixed32 group_id = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(2, this->group_id(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.FieldTrial)
}

size_t SystemProfileProto_FieldTrial::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.FieldTrial)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x00000003u) {
    // optional fixed32 name_id = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 4;
    }

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

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_FieldTrial::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_FieldTrial*>(
      &from));
}

void SystemProfileProto_FieldTrial::MergeFrom(const SystemProfileProto_FieldTrial& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.FieldTrial)
  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 & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      name_id_ = from.name_id_;
    }
    if (cached_has_bits & 0x00000002u) {
      group_id_ = from.group_id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_FieldTrial::CopyFrom(const SystemProfileProto_FieldTrial& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.FieldTrial)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_FieldTrial::InternalSwap(SystemProfileProto_FieldTrial* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(name_id_, other->name_id_);
  swap(group_id_, other->group_id_);
}

std::string SystemProfileProto_FieldTrial::GetTypeName() const {
  return "metrics.SystemProfileProto.FieldTrial";
}


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

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::InitAsDefaultInstance() {
}
class SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_ExternalAudioVideoDevice_AudioDescription>()._has_bits_);
  static void set_has_audio_format(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_num_channels(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_max_bit_rate_per_second(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_bit_depth(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_output_mode(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
}
SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription(const SystemProfileProto_ExternalAudioVideoDevice_AudioDescription& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      sample_frequency_hz_(from.sample_frequency_hz_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&audio_format_, &from.audio_format_,
    static_cast<size_t>(reinterpret_cast<char*>(&output_mode_) -
    reinterpret_cast<char*>(&audio_format_)) + sizeof(output_mode_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
}

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::SharedCtor() {
  ::memset(&audio_format_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&output_mode_) -
      reinterpret_cast<char*>(&audio_format_)) + sizeof(output_mode_));
}

SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::~SystemProfileProto_ExternalAudioVideoDevice_AudioDescription() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  SharedDtor();
}

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::SharedDtor() {
}

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


void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

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

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::_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 .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.AudioFormat audio_format = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_IsValid(val))) {
            set_audio_format(static_cast<::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional int32 num_channels = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_num_channels(&has_bits);
          num_channels_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated int32 sample_frequency_hz = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          ptr -= 1;
          do {
            ptr += 1;
            add_sample_frequency_hz(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 24);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(mutable_sample_frequency_hz(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 max_bit_rate_per_second = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_max_bit_rate_per_second(&has_bits);
          max_bit_rate_per_second_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 bit_depth = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_bit_depth(&has_bits);
          bit_depth_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.OutputMode output_mode = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_IsValid(val))) {
            set_output_mode(static_cast<::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(6, val, mutable_unknown_fields());
          }
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.AudioFormat audio_format = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat_IsValid(value)) {
            set_audio_format(static_cast< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_AudioFormat >(value));
          } else {
            unknown_fields_stream.WriteVarint32(8u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_channels = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_num_channels(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_channels_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int32 sample_frequency_hz = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 1, 24u, input, this->mutable_sample_frequency_hz())));
        } else if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_sample_frequency_hz())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 max_bit_rate_per_second = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_max_bit_rate_per_second(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &max_bit_rate_per_second_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 bit_depth = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_bit_depth(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &bit_depth_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.OutputMode output_mode = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode_IsValid(value)) {
            set_output_mode(static_cast< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription_OutputMode >(value));
          } else {
            unknown_fields_stream.WriteVarint32(48u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.AudioFormat audio_format = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      1, this->audio_format(), output);
  }

  // optional int32 num_channels = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(2, this->num_channels(), output);
  }

  // repeated int32 sample_frequency_hz = 3;
  for (int i = 0, n = this->sample_frequency_hz_size(); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(
      3, this->sample_frequency_hz(i), output);
  }

  // optional int32 max_bit_rate_per_second = 4;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->max_bit_rate_per_second(), output);
  }

  // optional int32 bit_depth = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->bit_depth(), output);
  }

  // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.OutputMode output_mode = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      6, this->output_mode(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
}

size_t SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // repeated int32 sample_frequency_hz = 3;
  {
    size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      Int32Size(this->sample_frequency_hz_);
    total_size += 1 *
                  ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->sample_frequency_hz_size());
    total_size += data_size;
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.AudioFormat audio_format = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->audio_format());
    }

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

    // optional int32 max_bit_rate_per_second = 4;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->max_bit_rate_per_second());
    }

    // optional int32 bit_depth = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->bit_depth());
    }

    // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription.OutputMode output_mode = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->output_mode());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_ExternalAudioVideoDevice_AudioDescription*>(
      &from));
}

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::MergeFrom(const SystemProfileProto_ExternalAudioVideoDevice_AudioDescription& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  GOOGLE_DCHECK_NE(&from, this);
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  sample_frequency_hz_.MergeFrom(from.sample_frequency_hz_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x0000001fu) {
    if (cached_has_bits & 0x00000001u) {
      audio_format_ = from.audio_format_;
    }
    if (cached_has_bits & 0x00000002u) {
      num_channels_ = from.num_channels_;
    }
    if (cached_has_bits & 0x00000004u) {
      max_bit_rate_per_second_ = from.max_bit_rate_per_second_;
    }
    if (cached_has_bits & 0x00000008u) {
      bit_depth_ = from.bit_depth_;
    }
    if (cached_has_bits & 0x00000010u) {
      output_mode_ = from.output_mode_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::CopyFrom(const SystemProfileProto_ExternalAudioVideoDevice_AudioDescription& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::InternalSwap(SystemProfileProto_ExternalAudioVideoDevice_AudioDescription* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  sample_frequency_hz_.InternalSwap(&other->sample_frequency_hz_);
  swap(audio_format_, other->audio_format_);
  swap(num_channels_, other->num_channels_);
  swap(max_bit_rate_per_second_, other->max_bit_rate_per_second_);
  swap(bit_depth_, other->bit_depth_);
  swap(output_mode_, other->output_mode_);
}

std::string SystemProfileProto_ExternalAudioVideoDevice_AudioDescription::GetTypeName() const {
  return "metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription";
}


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

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::InitAsDefaultInstance() {
}
class SystemProfileProto_ExternalAudioVideoDevice_CECCommand::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_ExternalAudioVideoDevice_CECCommand>()._has_bits_);
  static void set_has_opcode(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_num_received_direct(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_num_received_broadcast(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_num_sent_direct(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_num_sent_broadcast(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_num_aborted_unknown_reason(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_num_aborted_unrecognized(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
};

SystemProfileProto_ExternalAudioVideoDevice_CECCommand::SystemProfileProto_ExternalAudioVideoDevice_CECCommand()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
}
SystemProfileProto_ExternalAudioVideoDevice_CECCommand::SystemProfileProto_ExternalAudioVideoDevice_CECCommand(const SystemProfileProto_ExternalAudioVideoDevice_CECCommand& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&opcode_, &from.opcode_,
    static_cast<size_t>(reinterpret_cast<char*>(&num_aborted_unrecognized_) -
    reinterpret_cast<char*>(&opcode_)) + sizeof(num_aborted_unrecognized_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
}

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::SharedCtor() {
  ::memset(&opcode_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&num_aborted_unrecognized_) -
      reinterpret_cast<char*>(&opcode_)) + sizeof(num_aborted_unrecognized_));
}

SystemProfileProto_ExternalAudioVideoDevice_CECCommand::~SystemProfileProto_ExternalAudioVideoDevice_CECCommand() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  SharedDtor();
}

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::SharedDtor() {
}

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


void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  ::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 & 0x0000007fu) {
    ::memset(&opcode_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&num_aborted_unrecognized_) -
        reinterpret_cast<char*>(&opcode_)) + sizeof(num_aborted_unrecognized_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_ExternalAudioVideoDevice_CECCommand::_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 int32 opcode = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_opcode(&has_bits);
          opcode_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_received_direct = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_num_received_direct(&has_bits);
          num_received_direct_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_received_broadcast = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_num_received_broadcast(&has_bits);
          num_received_broadcast_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_sent_direct = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_num_sent_direct(&has_bits);
          num_sent_direct_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_sent_broadcast = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_num_sent_broadcast(&has_bits);
          num_sent_broadcast_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_aborted_unknown_reason = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_num_aborted_unknown_reason(&has_bits);
          num_aborted_unknown_reason_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 num_aborted_unrecognized = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_num_aborted_unrecognized(&has_bits);
          num_aborted_unrecognized_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_ExternalAudioVideoDevice_CECCommand::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int32 opcode = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_opcode(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &opcode_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_received_direct = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_num_received_direct(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_received_direct_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_received_broadcast = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_num_received_broadcast(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_received_broadcast_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_sent_direct = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_num_sent_direct(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_sent_direct_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_sent_broadcast = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_num_sent_broadcast(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_sent_broadcast_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_aborted_unknown_reason = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          _Internal::set_has_num_aborted_unknown_reason(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_aborted_unknown_reason_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 num_aborted_unrecognized = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          _Internal::set_has_num_aborted_unrecognized(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &num_aborted_unrecognized_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int32 opcode = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(1, this->opcode(), output);
  }

  // optional int32 num_received_direct = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(2, this->num_received_direct(), output);
  }

  // optional int32 num_received_broadcast = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(3, this->num_received_broadcast(), output);
  }

  // optional int32 num_sent_direct = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(4, this->num_sent_direct(), output);
  }

  // optional int32 num_sent_broadcast = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->num_sent_broadcast(), output);
  }

  // optional int32 num_aborted_unknown_reason = 6;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(6, this->num_aborted_unknown_reason(), output);
  }

  // optional int32 num_aborted_unrecognized = 7;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(7, this->num_aborted_unrecognized(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
}

size_t SystemProfileProto_ExternalAudioVideoDevice_CECCommand::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000007fu) {
    // optional int32 opcode = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->opcode());
    }

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

    // optional int32 num_received_broadcast = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->num_received_broadcast());
    }

    // optional int32 num_sent_direct = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->num_sent_direct());
    }

    // optional int32 num_sent_broadcast = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->num_sent_broadcast());
    }

    // optional int32 num_aborted_unknown_reason = 6;
    if (cached_has_bits & 0x00000020u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->num_aborted_unknown_reason());
    }

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

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_ExternalAudioVideoDevice_CECCommand*>(
      &from));
}

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::MergeFrom(const SystemProfileProto_ExternalAudioVideoDevice_CECCommand& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  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 & 0x0000007fu) {
    if (cached_has_bits & 0x00000001u) {
      opcode_ = from.opcode_;
    }
    if (cached_has_bits & 0x00000002u) {
      num_received_direct_ = from.num_received_direct_;
    }
    if (cached_has_bits & 0x00000004u) {
      num_received_broadcast_ = from.num_received_broadcast_;
    }
    if (cached_has_bits & 0x00000008u) {
      num_sent_direct_ = from.num_sent_direct_;
    }
    if (cached_has_bits & 0x00000010u) {
      num_sent_broadcast_ = from.num_sent_broadcast_;
    }
    if (cached_has_bits & 0x00000020u) {
      num_aborted_unknown_reason_ = from.num_aborted_unknown_reason_;
    }
    if (cached_has_bits & 0x00000040u) {
      num_aborted_unrecognized_ = from.num_aborted_unrecognized_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::CopyFrom(const SystemProfileProto_ExternalAudioVideoDevice_CECCommand& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_ExternalAudioVideoDevice_CECCommand::InternalSwap(SystemProfileProto_ExternalAudioVideoDevice_CECCommand* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(opcode_, other->opcode_);
  swap(num_received_direct_, other->num_received_direct_);
  swap(num_received_broadcast_, other->num_received_broadcast_);
  swap(num_sent_direct_, other->num_sent_direct_);
  swap(num_sent_broadcast_, other->num_sent_broadcast_);
  swap(num_aborted_unknown_reason_, other->num_aborted_unknown_reason_);
  swap(num_aborted_unrecognized_, other->num_aborted_unrecognized_);
}

std::string SystemProfileProto_ExternalAudioVideoDevice_CECCommand::GetTypeName() const {
  return "metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand";
}


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

void SystemProfileProto_ExternalAudioVideoDevice::InitAsDefaultInstance() {
}
class SystemProfileProto_ExternalAudioVideoDevice::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_ExternalAudioVideoDevice>()._has_bits_);
  static void set_has_manufacturer_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_model_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_product_code(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_manufacture_year(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_manufacture_week(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_horizontal_resolution(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static void set_has_vertical_resolution(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static void set_has_position_in_setup(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static void set_has_is_in_path_to_tv(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_cec_version(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_frame_rate(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static void set_has_color_encoding(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static void set_has_bit_depth(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_tmds(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
  static void set_has_hdr10_support(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_dolby_vision_support(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_eotf_support(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_yuv_support(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_yuv_420_support(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_maximum_supported_hdcp_version(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_current_hdcp_version(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
};

SystemProfileProto_ExternalAudioVideoDevice::SystemProfileProto_ExternalAudioVideoDevice()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice)
}
SystemProfileProto_ExternalAudioVideoDevice::SystemProfileProto_ExternalAudioVideoDevice(const SystemProfileProto_ExternalAudioVideoDevice& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      av_device_type_(from.av_device_type_),
      audio_description_(from.audio_description_),
      cec_command_(from.cec_command_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  manufacturer_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_manufacturer_name()) {
    manufacturer_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.manufacturer_name_);
  }
  model_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_model_name()) {
    model_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_name_);
  }
  product_code_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_product_code()) {
    product_code_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_code_);
  }
  ::memcpy(&manufacture_year_, &from.manufacture_year_,
    static_cast<size_t>(reinterpret_cast<char*>(&current_hdcp_version_) -
    reinterpret_cast<char*>(&manufacture_year_)) + sizeof(current_hdcp_version_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.ExternalAudioVideoDevice)
}

void SystemProfileProto_ExternalAudioVideoDevice::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_ExternalAudioVideoDevice_system_5fprofile_2eproto.base);
  manufacturer_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  product_code_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&manufacture_year_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&current_hdcp_version_) -
      reinterpret_cast<char*>(&manufacture_year_)) + sizeof(current_hdcp_version_));
}

SystemProfileProto_ExternalAudioVideoDevice::~SystemProfileProto_ExternalAudioVideoDevice() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  SharedDtor();
}

void SystemProfileProto_ExternalAudioVideoDevice::SharedDtor() {
  manufacturer_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  product_code_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_ExternalAudioVideoDevice::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  // Prevent compiler warnings about cached_has_bits being unused
  (void) cached_has_bits;

  av_device_type_.Clear();
  audio_description_.Clear();
  cec_command_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x00000007u) {
    if (cached_has_bits & 0x00000001u) {
      manufacturer_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      model_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      product_code_.ClearNonDefaultToEmptyNoArena();
    }
  }
  if (cached_has_bits & 0x000000f8u) {
    ::memset(&manufacture_year_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&position_in_setup_) -
        reinterpret_cast<char*>(&manufacture_year_)) + sizeof(position_in_setup_));
  }
  if (cached_has_bits & 0x0000ff00u) {
    ::memset(&cec_version_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&dolby_vision_support_) -
        reinterpret_cast<char*>(&cec_version_)) + sizeof(dolby_vision_support_));
  }
  if (cached_has_bits & 0x001f0000u) {
    ::memset(&yuv_support_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&current_hdcp_version_) -
        reinterpret_cast<char*>(&yuv_support_)) + sizeof(current_hdcp_version_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_ExternalAudioVideoDevice::_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 string manufacturer_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_manufacturer_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string model_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_model_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string product_code = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_product_code(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AVDeviceType av_device_type = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          ptr -= 1;
          do {
            ptr += 1;
            ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
            CHK_(ptr);
            if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_IsValid(val))) {
              add_av_device_type(static_cast<::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType>(val));
            } else {
              ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(4, val, mutable_unknown_fields());
            }
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 32);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedEnumParser(mutable_av_device_type(), ptr, ctx, ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_IsValid, &_internal_metadata_, 4);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 manufacture_year = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          _Internal::set_has_manufacture_year(&has_bits);
          manufacture_year_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 manufacture_week = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 48)) {
          _Internal::set_has_manufacture_week(&has_bits);
          manufacture_week_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 horizontal_resolution = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 56)) {
          _Internal::set_has_horizontal_resolution(&has_bits);
          horizontal_resolution_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 vertical_resolution = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 64)) {
          _Internal::set_has_vertical_resolution(&has_bits);
          vertical_resolution_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription audio_description = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(add_audio_description(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 74);
        } else goto handle_unusual;
        continue;
      // optional int32 position_in_setup = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) {
          _Internal::set_has_position_in_setup(&has_bits);
          position_in_setup_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_in_path_to_tv = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 88)) {
          _Internal::set_has_is_in_path_to_tv(&has_bits);
          is_in_path_to_tv_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 cec_version = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 96)) {
          _Internal::set_has_cec_version(&has_bits);
          cec_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand cec_command = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(add_cec_command(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 106);
        } else goto handle_unusual;
        continue;
      // optional int32 frame_rate = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 112)) {
          _Internal::set_has_frame_rate(&has_bits);
          frame_rate_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.ColorEncoding color_encoding = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 120)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_IsValid(val))) {
            set_color_encoding(static_cast<::metrics::SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(15, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional int32 bit_depth = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) {
          _Internal::set_has_bit_depth(&has_bits);
          bit_depth_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 tmds = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) {
          _Internal::set_has_tmds(&has_bits);
          tmds_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool hdr10_support = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) {
          _Internal::set_has_hdr10_support(&has_bits);
          hdr10_support_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool dolby_vision_support = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) {
          _Internal::set_has_dolby_vision_support(&has_bits);
          dolby_vision_support_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 eotf_support = 20;
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) {
          _Internal::set_has_eotf_support(&has_bits);
          eotf_support_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool yuv_support = 21;
      case 21:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 168)) {
          _Internal::set_has_yuv_support(&has_bits);
          yuv_support_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool yuv_420_support = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 176)) {
          _Internal::set_has_yuv_420_support(&has_bits);
          yuv_420_support_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 maximum_supported_hdcp_version = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 184)) {
          _Internal::set_has_maximum_supported_hdcp_version(&has_bits);
          maximum_supported_hdcp_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 current_hdcp_version = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 192)) {
          _Internal::set_has_current_hdcp_version(&has_bits);
          current_hdcp_version_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_ExternalAudioVideoDevice::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string manufacturer_name = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_manufacturer_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string model_name = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_model_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string product_code = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_product_code()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AVDeviceType av_device_type = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_IsValid(value)) {
            add_av_device_type(static_cast< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType >(value));
          } else {
            unknown_fields_stream.WriteVarint32(tag);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPackedEnumPreserveUnknowns(
                 input,
                 4,
                 ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AVDeviceType_IsValid,
                 &unknown_fields_stream,
                 this->mutable_av_device_type())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 manufacture_year = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          _Internal::set_has_manufacture_year(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &manufacture_year_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 manufacture_week = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (48 & 0xFF)) {
          _Internal::set_has_manufacture_week(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &manufacture_week_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 horizontal_resolution = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (56 & 0xFF)) {
          _Internal::set_has_horizontal_resolution(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &horizontal_resolution_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 vertical_resolution = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (64 & 0xFF)) {
          _Internal::set_has_vertical_resolution(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &vertical_resolution_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription audio_description = 9;
      case 9: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (74 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_audio_description()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 position_in_setup = 10;
      case 10: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (80 & 0xFF)) {
          _Internal::set_has_position_in_setup(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &position_in_setup_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_in_path_to_tv = 11;
      case 11: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (88 & 0xFF)) {
          _Internal::set_has_is_in_path_to_tv(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_in_path_to_tv_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 cec_version = 12;
      case 12: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (96 & 0xFF)) {
          _Internal::set_has_cec_version(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &cec_version_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand cec_command = 13;
      case 13: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (106 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_cec_command()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 frame_rate = 14;
      case 14: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (112 & 0xFF)) {
          _Internal::set_has_frame_rate(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &frame_rate_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.ColorEncoding color_encoding = 15;
      case 15: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (120 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding_IsValid(value)) {
            set_color_encoding(static_cast< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_ColorEncoding >(value));
          } else {
            unknown_fields_stream.WriteVarint32(120u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 bit_depth = 16;
      case 16: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (128 & 0xFF)) {
          _Internal::set_has_bit_depth(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &bit_depth_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 tmds = 17;
      case 17: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (136 & 0xFF)) {
          _Internal::set_has_tmds(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &tmds_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool hdr10_support = 18;
      case 18: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (144 & 0xFF)) {
          _Internal::set_has_hdr10_support(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &hdr10_support_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool dolby_vision_support = 19;
      case 19: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (152 & 0xFF)) {
          _Internal::set_has_dolby_vision_support(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &dolby_vision_support_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 eotf_support = 20;
      case 20: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (160 & 0xFF)) {
          _Internal::set_has_eotf_support(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &eotf_support_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool yuv_support = 21;
      case 21: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (168 & 0xFF)) {
          _Internal::set_has_yuv_support(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &yuv_support_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool yuv_420_support = 22;
      case 22: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (176 & 0xFF)) {
          _Internal::set_has_yuv_420_support(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &yuv_420_support_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 maximum_supported_hdcp_version = 23;
      case 23: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (184 & 0xFF)) {
          _Internal::set_has_maximum_supported_hdcp_version(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &maximum_supported_hdcp_version_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 current_hdcp_version = 24;
      case 24: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (192 & 0xFF)) {
          _Internal::set_has_current_hdcp_version(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &current_hdcp_version_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_ExternalAudioVideoDevice::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string manufacturer_name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->manufacturer_name(), output);
  }

  // optional string model_name = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->model_name(), output);
  }

  // optional string product_code = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->product_code(), output);
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AVDeviceType av_device_type = 4;
  for (int i = 0, n = this->av_device_type_size(); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      4, this->av_device_type(i), output);
  }

  // optional int32 manufacture_year = 5;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(5, this->manufacture_year(), output);
  }

  // optional int32 manufacture_week = 6;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(6, this->manufacture_week(), output);
  }

  // optional int32 horizontal_resolution = 7;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(7, this->horizontal_resolution(), output);
  }

  // optional int32 vertical_resolution = 8;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(8, this->vertical_resolution(), output);
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription audio_description = 9;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->audio_description_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      9,
      this->audio_description(static_cast<int>(i)),
      output);
  }

  // optional int32 position_in_setup = 10;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(10, this->position_in_setup(), output);
  }

  // optional bool is_in_path_to_tv = 11;
  if (cached_has_bits & 0x00002000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(11, this->is_in_path_to_tv(), output);
  }

  // optional int32 cec_version = 12;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(12, this->cec_version(), output);
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand cec_command = 13;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->cec_command_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      13,
      this->cec_command(static_cast<int>(i)),
      output);
  }

  // optional int32 frame_rate = 14;
  if (cached_has_bits & 0x00000200u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(14, this->frame_rate(), output);
  }

  // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.ColorEncoding color_encoding = 15;
  if (cached_has_bits & 0x00000400u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      15, this->color_encoding(), output);
  }

  // optional int32 bit_depth = 16;
  if (cached_has_bits & 0x00000800u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(16, this->bit_depth(), output);
  }

  // optional int32 tmds = 17;
  if (cached_has_bits & 0x00001000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(17, this->tmds(), output);
  }

  // optional bool hdr10_support = 18;
  if (cached_has_bits & 0x00004000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(18, this->hdr10_support(), output);
  }

  // optional bool dolby_vision_support = 19;
  if (cached_has_bits & 0x00008000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(19, this->dolby_vision_support(), output);
  }

  // optional int32 eotf_support = 20;
  if (cached_has_bits & 0x00020000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(20, this->eotf_support(), output);
  }

  // optional bool yuv_support = 21;
  if (cached_has_bits & 0x00010000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(21, this->yuv_support(), output);
  }

  // optional bool yuv_420_support = 22;
  if (cached_has_bits & 0x00040000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(22, this->yuv_420_support(), output);
  }

  // optional int32 maximum_supported_hdcp_version = 23;
  if (cached_has_bits & 0x00080000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(23, this->maximum_supported_hdcp_version(), output);
  }

  // optional int32 current_hdcp_version = 24;
  if (cached_has_bits & 0x00100000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(24, this->current_hdcp_version(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.ExternalAudioVideoDevice)
}

size_t SystemProfileProto_ExternalAudioVideoDevice::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

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

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AVDeviceType av_device_type = 4;
  {
    size_t data_size = 0;
    unsigned int count = static_cast<unsigned int>(this->av_device_type_size());for (unsigned int i = 0; i < count; i++) {
      data_size += ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(
        this->av_device_type(static_cast<int>(i)));
    }
    total_size += (1UL * count) + data_size;
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.AudioDescription audio_description = 9;
  {
    unsigned int count = static_cast<unsigned int>(this->audio_description_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->audio_description(static_cast<int>(i)));
    }
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice.CECCommand cec_command = 13;
  {
    unsigned int count = static_cast<unsigned int>(this->cec_command_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->cec_command(static_cast<int>(i)));
    }
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string manufacturer_name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->manufacturer_name());
    }

    // optional string model_name = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->model_name());
    }

    // optional string product_code = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->product_code());
    }

    // optional int32 manufacture_year = 5;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->manufacture_year());
    }

    // optional int32 manufacture_week = 6;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->manufacture_week());
    }

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

    // optional int32 vertical_resolution = 8;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->vertical_resolution());
    }

    // optional int32 position_in_setup = 10;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->position_in_setup());
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional int32 cec_version = 12;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->cec_version());
    }

    // optional int32 frame_rate = 14;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->frame_rate());
    }

    // optional .metrics.SystemProfileProto.ExternalAudioVideoDevice.ColorEncoding color_encoding = 15;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->color_encoding());
    }

    // optional int32 bit_depth = 16;
    if (cached_has_bits & 0x00000800u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->bit_depth());
    }

    // optional int32 tmds = 17;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->tmds());
    }

    // optional bool is_in_path_to_tv = 11;
    if (cached_has_bits & 0x00002000u) {
      total_size += 1 + 1;
    }

    // optional bool hdr10_support = 18;
    if (cached_has_bits & 0x00004000u) {
      total_size += 2 + 1;
    }

    // optional bool dolby_vision_support = 19;
    if (cached_has_bits & 0x00008000u) {
      total_size += 2 + 1;
    }

  }
  if (cached_has_bits & 0x001f0000u) {
    // optional bool yuv_support = 21;
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 + 1;
    }

    // optional int32 eotf_support = 20;
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->eotf_support());
    }

    // optional bool yuv_420_support = 22;
    if (cached_has_bits & 0x00040000u) {
      total_size += 2 + 1;
    }

    // optional int32 maximum_supported_hdcp_version = 23;
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->maximum_supported_hdcp_version());
    }

    // optional int32 current_hdcp_version = 24;
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->current_hdcp_version());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_ExternalAudioVideoDevice::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_ExternalAudioVideoDevice*>(
      &from));
}

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

  av_device_type_.MergeFrom(from.av_device_type_);
  audio_description_.MergeFrom(from.audio_description_);
  cec_command_.MergeFrom(from.cec_command_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      manufacturer_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.manufacturer_name_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      model_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_name_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      product_code_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_code_);
    }
    if (cached_has_bits & 0x00000008u) {
      manufacture_year_ = from.manufacture_year_;
    }
    if (cached_has_bits & 0x00000010u) {
      manufacture_week_ = from.manufacture_week_;
    }
    if (cached_has_bits & 0x00000020u) {
      horizontal_resolution_ = from.horizontal_resolution_;
    }
    if (cached_has_bits & 0x00000040u) {
      vertical_resolution_ = from.vertical_resolution_;
    }
    if (cached_has_bits & 0x00000080u) {
      position_in_setup_ = from.position_in_setup_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      cec_version_ = from.cec_version_;
    }
    if (cached_has_bits & 0x00000200u) {
      frame_rate_ = from.frame_rate_;
    }
    if (cached_has_bits & 0x00000400u) {
      color_encoding_ = from.color_encoding_;
    }
    if (cached_has_bits & 0x00000800u) {
      bit_depth_ = from.bit_depth_;
    }
    if (cached_has_bits & 0x00001000u) {
      tmds_ = from.tmds_;
    }
    if (cached_has_bits & 0x00002000u) {
      is_in_path_to_tv_ = from.is_in_path_to_tv_;
    }
    if (cached_has_bits & 0x00004000u) {
      hdr10_support_ = from.hdr10_support_;
    }
    if (cached_has_bits & 0x00008000u) {
      dolby_vision_support_ = from.dolby_vision_support_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x001f0000u) {
    if (cached_has_bits & 0x00010000u) {
      yuv_support_ = from.yuv_support_;
    }
    if (cached_has_bits & 0x00020000u) {
      eotf_support_ = from.eotf_support_;
    }
    if (cached_has_bits & 0x00040000u) {
      yuv_420_support_ = from.yuv_420_support_;
    }
    if (cached_has_bits & 0x00080000u) {
      maximum_supported_hdcp_version_ = from.maximum_supported_hdcp_version_;
    }
    if (cached_has_bits & 0x00100000u) {
      current_hdcp_version_ = from.current_hdcp_version_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_ExternalAudioVideoDevice::CopyFrom(const SystemProfileProto_ExternalAudioVideoDevice& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.ExternalAudioVideoDevice)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_ExternalAudioVideoDevice::InternalSwap(SystemProfileProto_ExternalAudioVideoDevice* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  av_device_type_.InternalSwap(&other->av_device_type_);
  CastToBase(&audio_description_)->InternalSwap(CastToBase(&other->audio_description_));
  CastToBase(&cec_command_)->InternalSwap(CastToBase(&other->cec_command_));
  manufacturer_name_.Swap(&other->manufacturer_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  model_name_.Swap(&other->model_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  product_code_.Swap(&other->product_code_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(manufacture_year_, other->manufacture_year_);
  swap(manufacture_week_, other->manufacture_week_);
  swap(horizontal_resolution_, other->horizontal_resolution_);
  swap(vertical_resolution_, other->vertical_resolution_);
  swap(position_in_setup_, other->position_in_setup_);
  swap(cec_version_, other->cec_version_);
  swap(frame_rate_, other->frame_rate_);
  swap(color_encoding_, other->color_encoding_);
  swap(bit_depth_, other->bit_depth_);
  swap(tmds_, other->tmds_);
  swap(is_in_path_to_tv_, other->is_in_path_to_tv_);
  swap(hdr10_support_, other->hdr10_support_);
  swap(dolby_vision_support_, other->dolby_vision_support_);
  swap(yuv_support_, other->yuv_support_);
  swap(eotf_support_, other->eotf_support_);
  swap(yuv_420_support_, other->yuv_420_support_);
  swap(maximum_supported_hdcp_version_, other->maximum_supported_hdcp_version_);
  swap(current_hdcp_version_, other->current_hdcp_version_);
}

std::string SystemProfileProto_ExternalAudioVideoDevice::GetTypeName() const {
  return "metrics.SystemProfileProto.ExternalAudioVideoDevice";
}


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

void SystemProfileProto_ExternalAccessPoint::InitAsDefaultInstance() {
}
class SystemProfileProto_ExternalAccessPoint::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_ExternalAccessPoint>()._has_bits_);
  static void set_has_manufacturer(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_model_name(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_model_number(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_device_name(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

SystemProfileProto_ExternalAccessPoint::SystemProfileProto_ExternalAccessPoint()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.ExternalAccessPoint)
}
SystemProfileProto_ExternalAccessPoint::SystemProfileProto_ExternalAccessPoint(const SystemProfileProto_ExternalAccessPoint& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  manufacturer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_manufacturer()) {
    manufacturer_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.manufacturer_);
  }
  model_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_model_name()) {
    model_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_name_);
  }
  model_number_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_model_number()) {
    model_number_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_number_);
  }
  device_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_device_name()) {
    device_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.device_name_);
  }
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.ExternalAccessPoint)
}

void SystemProfileProto_ExternalAccessPoint::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_ExternalAccessPoint_system_5fprofile_2eproto.base);
  manufacturer_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_number_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  device_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

SystemProfileProto_ExternalAccessPoint::~SystemProfileProto_ExternalAccessPoint() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.ExternalAccessPoint)
  SharedDtor();
}

void SystemProfileProto_ExternalAccessPoint::SharedDtor() {
  manufacturer_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  model_number_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  device_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_ExternalAccessPoint::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.ExternalAccessPoint)
  ::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 & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      manufacturer_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      model_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      model_number_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000008u) {
      device_name_.ClearNonDefaultToEmptyNoArena();
    }
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_ExternalAccessPoint::_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 string manufacturer = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_manufacturer(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string model_name = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_model_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string model_number = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_model_number(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string device_name = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_device_name(), ptr, ctx);
          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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_ExternalAccessPoint::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.ExternalAccessPoint)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string manufacturer = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_manufacturer()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string model_name = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_model_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string model_number = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_model_number()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string device_name = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_device_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.ExternalAccessPoint)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.ExternalAccessPoint)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_ExternalAccessPoint::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.ExternalAccessPoint)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string manufacturer = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->manufacturer(), output);
  }

  // optional string model_name = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->model_name(), output);
  }

  // optional string model_number = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->model_number(), output);
  }

  // optional string device_name = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->device_name(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.ExternalAccessPoint)
}

size_t SystemProfileProto_ExternalAccessPoint::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.ExternalAccessPoint)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000000fu) {
    // optional string manufacturer = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->manufacturer());
    }

    // optional string model_name = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->model_name());
    }

    // optional string model_number = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->model_number());
    }

    // optional string device_name = 4;
    if (cached_has_bits & 0x00000008u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->device_name());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_ExternalAccessPoint::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_ExternalAccessPoint*>(
      &from));
}

void SystemProfileProto_ExternalAccessPoint::MergeFrom(const SystemProfileProto_ExternalAccessPoint& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.ExternalAccessPoint)
  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 & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      manufacturer_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.manufacturer_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      model_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_name_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      model_number_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.model_number_);
    }
    if (cached_has_bits & 0x00000008u) {
      _has_bits_[0] |= 0x00000008u;
      device_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.device_name_);
    }
  }
}

void SystemProfileProto_ExternalAccessPoint::CopyFrom(const SystemProfileProto_ExternalAccessPoint& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.ExternalAccessPoint)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_ExternalAccessPoint::InternalSwap(SystemProfileProto_ExternalAccessPoint* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  manufacturer_.Swap(&other->manufacturer_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  model_name_.Swap(&other->model_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  model_number_.Swap(&other->model_number_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  device_name_.Swap(&other->device_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
}

std::string SystemProfileProto_ExternalAccessPoint::GetTypeName() const {
  return "metrics.SystemProfileProto.ExternalAccessPoint";
}


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

void SystemProfileProto_AntiVirusProduct::InitAsDefaultInstance() {
}
class SystemProfileProto_AntiVirusProduct::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_AntiVirusProduct>()._has_bits_);
  static void set_has_product_name(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_product_name_hash(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_product_version(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_product_version_hash(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static void set_has_product_state(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
};

SystemProfileProto_AntiVirusProduct::SystemProfileProto_AntiVirusProduct()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.AntiVirusProduct)
}
SystemProfileProto_AntiVirusProduct::SystemProfileProto_AntiVirusProduct(const SystemProfileProto_AntiVirusProduct& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  product_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_product_name()) {
    product_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_name_);
  }
  product_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_product_version()) {
    product_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_version_);
  }
  ::memcpy(&product_name_hash_, &from.product_name_hash_,
    static_cast<size_t>(reinterpret_cast<char*>(&product_state_) -
    reinterpret_cast<char*>(&product_name_hash_)) + sizeof(product_state_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.AntiVirusProduct)
}

void SystemProfileProto_AntiVirusProduct::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_AntiVirusProduct_system_5fprofile_2eproto.base);
  product_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  product_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&product_name_hash_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&product_state_) -
      reinterpret_cast<char*>(&product_name_hash_)) + sizeof(product_state_));
}

SystemProfileProto_AntiVirusProduct::~SystemProfileProto_AntiVirusProduct() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.AntiVirusProduct)
  SharedDtor();
}

void SystemProfileProto_AntiVirusProduct::SharedDtor() {
  product_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  product_version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_AntiVirusProduct::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.AntiVirusProduct)
  ::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 & 0x00000003u) {
    if (cached_has_bits & 0x00000001u) {
      product_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      product_version_.ClearNonDefaultToEmptyNoArena();
    }
  }
  if (cached_has_bits & 0x0000001cu) {
    ::memset(&product_name_hash_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&product_state_) -
        reinterpret_cast<char*>(&product_name_hash_)) + sizeof(product_state_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_AntiVirusProduct::_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 string product_name = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 10)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_product_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional fixed32 product_name_hash = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 21)) {
          _Internal::set_has_product_name_hash(&has_bits);
          product_name_hash_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } else goto handle_unusual;
        continue;
      // optional string product_version = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 26)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_product_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional fixed32 product_version_hash = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 37)) {
          _Internal::set_has_product_version_hash(&has_bits);
          product_version_hash_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.AntiVirusState product_state = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 40)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_AntiVirusState_IsValid(val))) {
            set_product_state(static_cast<::metrics::SystemProfileProto_AntiVirusState>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(5, val, mutable_unknown_fields());
          }
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_AntiVirusProduct::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.AntiVirusProduct)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional string product_name = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (10 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_product_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 product_name_hash = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (21 & 0xFF)) {
          _Internal::set_has_product_name_hash(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &product_name_hash_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string product_version = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (26 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_product_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 product_version_hash = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (37 & 0xFF)) {
          _Internal::set_has_product_version_hash(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &product_version_hash_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.AntiVirusState product_state = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (40 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_AntiVirusState_IsValid(value)) {
            set_product_state(static_cast< ::metrics::SystemProfileProto_AntiVirusState >(value));
          } else {
            unknown_fields_stream.WriteVarint32(40u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.AntiVirusProduct)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.AntiVirusProduct)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_AntiVirusProduct::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.AntiVirusProduct)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional string product_name = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      1, this->product_name(), output);
  }

  // optional fixed32 product_name_hash = 2;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(2, this->product_name_hash(), output);
  }

  // optional string product_version = 3;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      3, this->product_version(), output);
  }

  // optional fixed32 product_version_hash = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(4, this->product_version_hash(), output);
  }

  // optional .metrics.SystemProfileProto.AntiVirusState product_state = 5;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      5, this->product_state(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.AntiVirusProduct)
}

size_t SystemProfileProto_AntiVirusProduct::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.AntiVirusProduct)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string product_name = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->product_name());
    }

    // optional string product_version = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->product_version());
    }

    // optional fixed32 product_name_hash = 2;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 4;
    }

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

    // optional .metrics.SystemProfileProto.AntiVirusState product_state = 5;
    if (cached_has_bits & 0x00000010u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->product_state());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_AntiVirusProduct::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_AntiVirusProduct*>(
      &from));
}

void SystemProfileProto_AntiVirusProduct::MergeFrom(const SystemProfileProto_AntiVirusProduct& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.AntiVirusProduct)
  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) {
      _has_bits_[0] |= 0x00000001u;
      product_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_name_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      product_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.product_version_);
    }
    if (cached_has_bits & 0x00000004u) {
      product_name_hash_ = from.product_name_hash_;
    }
    if (cached_has_bits & 0x00000008u) {
      product_version_hash_ = from.product_version_hash_;
    }
    if (cached_has_bits & 0x00000010u) {
      product_state_ = from.product_state_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_AntiVirusProduct::CopyFrom(const SystemProfileProto_AntiVirusProduct& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.AntiVirusProduct)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_AntiVirusProduct::InternalSwap(SystemProfileProto_AntiVirusProduct* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  product_name_.Swap(&other->product_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  product_version_.Swap(&other->product_version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(product_name_hash_, other->product_name_hash_);
  swap(product_version_hash_, other->product_version_hash_);
  swap(product_state_, other->product_state_);
}

std::string SystemProfileProto_AntiVirusProduct::GetTypeName() const {
  return "metrics.SystemProfileProto.AntiVirusProduct";
}


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

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

SystemProfileProto_ChromeComponent::SystemProfileProto_ChromeComponent()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.ChromeComponent)
}
SystemProfileProto_ChromeComponent::SystemProfileProto_ChromeComponent(const SystemProfileProto_ChromeComponent& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_version()) {
    version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
  }
  ::memcpy(&omaha_fingerprint_, &from.omaha_fingerprint_,
    static_cast<size_t>(reinterpret_cast<char*>(&component_id_) -
    reinterpret_cast<char*>(&omaha_fingerprint_)) + sizeof(component_id_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.ChromeComponent)
}

void SystemProfileProto_ChromeComponent::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_ChromeComponent_system_5fprofile_2eproto.base);
  version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  omaha_fingerprint_ = 0u;
  component_id_ = 1;
}

SystemProfileProto_ChromeComponent::~SystemProfileProto_ChromeComponent() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.ChromeComponent)
  SharedDtor();
}

void SystemProfileProto_ChromeComponent::SharedDtor() {
  version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
}

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


void SystemProfileProto_ChromeComponent::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.ChromeComponent)
  ::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) {
    version_.ClearNonDefaultToEmptyNoArena();
  }
  if (cached_has_bits & 0x00000006u) {
    omaha_fingerprint_ = 0u;
    component_id_ = 1;
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_ChromeComponent::_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 .metrics.SystemProfileProto.ComponentId component_id = 1 [default = UNKNOWN];
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ComponentId_IsValid(val))) {
            set_component_id(static_cast<::metrics::SystemProfileProto_ComponentId>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(1, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional string version = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional fixed32 omaha_fingerprint = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 29)) {
          _Internal::set_has_omaha_fingerprint(&has_bits);
          omaha_fingerprint_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } 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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_ChromeComponent::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.ChromeComponent)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional .metrics.SystemProfileProto.ComponentId component_id = 1 [default = UNKNOWN];
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ComponentId_IsValid(value)) {
            set_component_id(static_cast< ::metrics::SystemProfileProto_ComponentId >(value));
          } else {
            unknown_fields_stream.WriteVarint32(8u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string version = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional fixed32 omaha_fingerprint = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (29 & 0xFF)) {
          _Internal::set_has_omaha_fingerprint(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &omaha_fingerprint_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.ChromeComponent)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.ChromeComponent)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_ChromeComponent::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.ChromeComponent)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional .metrics.SystemProfileProto.ComponentId component_id = 1 [default = UNKNOWN];
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      1, this->component_id(), output);
  }

  // optional string version = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->version(), output);
  }

  // optional fixed32 omaha_fingerprint = 3;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(3, this->omaha_fingerprint(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.ChromeComponent)
}

size_t SystemProfileProto_ChromeComponent::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.ChromeComponent)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 string version = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->version());
    }

    // optional fixed32 omaha_fingerprint = 3;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 4;
    }

    // optional .metrics.SystemProfileProto.ComponentId component_id = 1 [default = UNKNOWN];
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->component_id());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_ChromeComponent::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_ChromeComponent*>(
      &from));
}

void SystemProfileProto_ChromeComponent::MergeFrom(const SystemProfileProto_ChromeComponent& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.ChromeComponent)
  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) {
      _has_bits_[0] |= 0x00000001u;
      version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.version_);
    }
    if (cached_has_bits & 0x00000002u) {
      omaha_fingerprint_ = from.omaha_fingerprint_;
    }
    if (cached_has_bits & 0x00000004u) {
      component_id_ = from.component_id_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_ChromeComponent::CopyFrom(const SystemProfileProto_ChromeComponent& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.ChromeComponent)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_ChromeComponent::InternalSwap(SystemProfileProto_ChromeComponent* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  version_.Swap(&other->version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(omaha_fingerprint_, other->omaha_fingerprint_);
  swap(component_id_, other->component_id_);
}

std::string SystemProfileProto_ChromeComponent::GetTypeName() const {
  return "metrics.SystemProfileProto.ChromeComponent";
}


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

void SystemProfileProto_LinkedAndroidPhoneData::InitAsDefaultInstance() {
}
class SystemProfileProto_LinkedAndroidPhoneData::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto_LinkedAndroidPhoneData>()._has_bits_);
  static void set_has_phone_model_name_hash(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_is_smartlock_enabled(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static void set_has_is_instant_tethering_enabled(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_is_messages_enabled(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
};

SystemProfileProto_LinkedAndroidPhoneData::SystemProfileProto_LinkedAndroidPhoneData()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto.LinkedAndroidPhoneData)
}
SystemProfileProto_LinkedAndroidPhoneData::SystemProfileProto_LinkedAndroidPhoneData(const SystemProfileProto_LinkedAndroidPhoneData& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  ::memcpy(&phone_model_name_hash_, &from.phone_model_name_hash_,
    static_cast<size_t>(reinterpret_cast<char*>(&is_messages_enabled_) -
    reinterpret_cast<char*>(&phone_model_name_hash_)) + sizeof(is_messages_enabled_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto.LinkedAndroidPhoneData)
}

void SystemProfileProto_LinkedAndroidPhoneData::SharedCtor() {
  ::memset(&phone_model_name_hash_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&is_messages_enabled_) -
      reinterpret_cast<char*>(&phone_model_name_hash_)) + sizeof(is_messages_enabled_));
}

SystemProfileProto_LinkedAndroidPhoneData::~SystemProfileProto_LinkedAndroidPhoneData() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  SharedDtor();
}

void SystemProfileProto_LinkedAndroidPhoneData::SharedDtor() {
}

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


void SystemProfileProto_LinkedAndroidPhoneData::Clear() {
// @@protoc_insertion_point(message_clear_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  ::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 & 0x0000000fu) {
    ::memset(&phone_model_name_hash_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&is_messages_enabled_) -
        reinterpret_cast<char*>(&phone_model_name_hash_)) + sizeof(is_messages_enabled_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto_LinkedAndroidPhoneData::_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 fixed32 phone_model_name_hash = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 13)) {
          _Internal::set_has_phone_model_name_hash(&has_bits);
          phone_model_name_hash_ = ::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint32>(ptr);
          ptr += sizeof(::PROTOBUF_NAMESPACE_ID::uint32);
        } else goto handle_unusual;
        continue;
      // optional bool is_smartlock_enabled = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 16)) {
          _Internal::set_has_is_smartlock_enabled(&has_bits);
          is_smartlock_enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_instant_tethering_enabled = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_is_instant_tethering_enabled(&has_bits);
          is_instant_tethering_enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool is_messages_enabled = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 32)) {
          _Internal::set_has_is_messages_enabled(&has_bits);
          is_messages_enabled_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto_LinkedAndroidPhoneData::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional fixed32 phone_model_name_hash = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (13 & 0xFF)) {
          _Internal::set_has_phone_model_name_hash(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_FIXED32>(
                 input, &phone_model_name_hash_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_smartlock_enabled = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (16 & 0xFF)) {
          _Internal::set_has_is_smartlock_enabled(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_smartlock_enabled_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_instant_tethering_enabled = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_is_instant_tethering_enabled(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_instant_tethering_enabled_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_messages_enabled = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (32 & 0xFF)) {
          _Internal::set_has_is_messages_enabled(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_messages_enabled_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto_LinkedAndroidPhoneData::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional fixed32 phone_model_name_hash = 1;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteFixed32(1, this->phone_model_name_hash(), output);
  }

  // optional bool is_smartlock_enabled = 2;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(2, this->is_smartlock_enabled(), output);
  }

  // optional bool is_instant_tethering_enabled = 3;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(3, this->is_instant_tethering_enabled(), output);
  }

  // optional bool is_messages_enabled = 4;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(4, this->is_messages_enabled(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto.LinkedAndroidPhoneData)
}

size_t SystemProfileProto_LinkedAndroidPhoneData::ByteSizeLong() const {
// @@protoc_insertion_point(message_byte_size_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  size_t total_size = 0;

  total_size += _internal_metadata_.unknown_fields().size();

  ::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 & 0x0000000fu) {
    // optional fixed32 phone_model_name_hash = 1;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 + 4;
    }

    // optional bool is_smartlock_enabled = 2;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 + 1;
    }

    // optional bool is_instant_tethering_enabled = 3;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 + 1;
    }

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

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto_LinkedAndroidPhoneData::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto_LinkedAndroidPhoneData*>(
      &from));
}

void SystemProfileProto_LinkedAndroidPhoneData::MergeFrom(const SystemProfileProto_LinkedAndroidPhoneData& from) {
// @@protoc_insertion_point(class_specific_merge_from_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  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 & 0x0000000fu) {
    if (cached_has_bits & 0x00000001u) {
      phone_model_name_hash_ = from.phone_model_name_hash_;
    }
    if (cached_has_bits & 0x00000002u) {
      is_smartlock_enabled_ = from.is_smartlock_enabled_;
    }
    if (cached_has_bits & 0x00000004u) {
      is_instant_tethering_enabled_ = from.is_instant_tethering_enabled_;
    }
    if (cached_has_bits & 0x00000008u) {
      is_messages_enabled_ = from.is_messages_enabled_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

void SystemProfileProto_LinkedAndroidPhoneData::CopyFrom(const SystemProfileProto_LinkedAndroidPhoneData& from) {
// @@protoc_insertion_point(class_specific_copy_from_start:metrics.SystemProfileProto.LinkedAndroidPhoneData)
  if (&from == this) return;
  Clear();
  MergeFrom(from);
}

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

void SystemProfileProto_LinkedAndroidPhoneData::InternalSwap(SystemProfileProto_LinkedAndroidPhoneData* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  swap(phone_model_name_hash_, other->phone_model_name_hash_);
  swap(is_smartlock_enabled_, other->is_smartlock_enabled_);
  swap(is_instant_tethering_enabled_, other->is_instant_tethering_enabled_);
  swap(is_messages_enabled_, other->is_messages_enabled_);
}

std::string SystemProfileProto_LinkedAndroidPhoneData::GetTypeName() const {
  return "metrics.SystemProfileProto.LinkedAndroidPhoneData";
}


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

void SystemProfileProto::InitAsDefaultInstance() {
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->os_ = const_cast< ::metrics::SystemProfileProto_OS*>(
      ::metrics::SystemProfileProto_OS::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->hardware_ = const_cast< ::metrics::SystemProfileProto_Hardware*>(
      ::metrics::SystemProfileProto_Hardware::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->network_ = const_cast< ::metrics::SystemProfileProto_Network*>(
      ::metrics::SystemProfileProto_Network::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->google_update_ = const_cast< ::metrics::SystemProfileProto_GoogleUpdate*>(
      ::metrics::SystemProfileProto_GoogleUpdate::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->stability_ = const_cast< ::metrics::SystemProfileProto_Stability*>(
      ::metrics::SystemProfileProto_Stability::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->external_access_point_ = const_cast< ::metrics::SystemProfileProto_ExternalAccessPoint*>(
      ::metrics::SystemProfileProto_ExternalAccessPoint::internal_default_instance());
  ::metrics::_SystemProfileProto_default_instance_._instance.get_mutable()->linked_android_phone_data_ = const_cast< ::metrics::SystemProfileProto_LinkedAndroidPhoneData*>(
      ::metrics::SystemProfileProto_LinkedAndroidPhoneData::internal_default_instance());
}
class SystemProfileProto::_Internal {
 public:
  using HasBits = decltype(std::declval<SystemProfileProto>()._has_bits_);
  static void set_has_build_timestamp(HasBits* has_bits) {
    (*has_bits)[0] |= 8192u;
  }
  static void set_has_app_version(HasBits* has_bits) {
    (*has_bits)[0] |= 1u;
  }
  static void set_has_brand_code(HasBits* has_bits) {
    (*has_bits)[0] |= 4u;
  }
  static void set_has_channel(HasBits* has_bits) {
    (*has_bits)[0] |= 32768u;
  }
  static void set_has_is_instrumented_build(HasBits* has_bits) {
    (*has_bits)[0] |= 1048576u;
  }
  static void set_has_uma_enabled_date(HasBits* has_bits) {
    (*has_bits)[0] |= 16384u;
  }
  static void set_has_install_date(HasBits* has_bits) {
    (*has_bits)[0] |= 131072u;
  }
  static void set_has_low_entropy_source(HasBits* has_bits) {
    (*has_bits)[0] |= 4194304u;
  }
  static void set_has_old_low_entropy_source(HasBits* has_bits) {
    (*has_bits)[0] |= 8388608u;
  }
  static void set_has_application_locale(HasBits* has_bits) {
    (*has_bits)[0] |= 2u;
  }
  static const ::metrics::SystemProfileProto_OS& os(const SystemProfileProto* msg);
  static void set_has_os(HasBits* has_bits) {
    (*has_bits)[0] |= 64u;
  }
  static const ::metrics::SystemProfileProto_Hardware& hardware(const SystemProfileProto* msg);
  static void set_has_hardware(HasBits* has_bits) {
    (*has_bits)[0] |= 128u;
  }
  static const ::metrics::SystemProfileProto_Network& network(const SystemProfileProto* msg);
  static void set_has_network(HasBits* has_bits) {
    (*has_bits)[0] |= 1024u;
  }
  static const ::metrics::SystemProfileProto_GoogleUpdate& google_update(const SystemProfileProto* msg);
  static void set_has_google_update(HasBits* has_bits) {
    (*has_bits)[0] |= 512u;
  }
  static const ::metrics::SystemProfileProto_Stability& stability(const SystemProfileProto* msg);
  static void set_has_stability(HasBits* has_bits) {
    (*has_bits)[0] |= 256u;
  }
  static void set_has_variations_seed_version(HasBits* has_bits) {
    (*has_bits)[0] |= 16u;
  }
  static void set_has_client_id_was_used_for_trial_assignment(HasBits* has_bits) {
    (*has_bits)[0] |= 2097152u;
  }
  static void set_has_client_uuid(HasBits* has_bits) {
    (*has_bits)[0] |= 32u;
  }
  static const ::metrics::SystemProfileProto_ExternalAccessPoint& external_access_point(const SystemProfileProto* msg);
  static void set_has_external_access_point(HasBits* has_bits) {
    (*has_bits)[0] |= 2048u;
  }
  static void set_has_multi_profile_user_count(HasBits* has_bits) {
    (*has_bits)[0] |= 65536u;
  }
  static void set_has_offstore_extensions_state(HasBits* has_bits) {
    (*has_bits)[0] |= 262144u;
  }
  static void set_has_uma_default_state(HasBits* has_bits) {
    (*has_bits)[0] |= 524288u;
  }
  static void set_has_app_package_name(HasBits* has_bits) {
    (*has_bits)[0] |= 8u;
  }
  static const ::metrics::SystemProfileProto_LinkedAndroidPhoneData& linked_android_phone_data(const SystemProfileProto* msg);
  static void set_has_linked_android_phone_data(HasBits* has_bits) {
    (*has_bits)[0] |= 4096u;
  }
};

const ::metrics::SystemProfileProto_OS&
SystemProfileProto::_Internal::os(const SystemProfileProto* msg) {
  return *msg->os_;
}
const ::metrics::SystemProfileProto_Hardware&
SystemProfileProto::_Internal::hardware(const SystemProfileProto* msg) {
  return *msg->hardware_;
}
const ::metrics::SystemProfileProto_Network&
SystemProfileProto::_Internal::network(const SystemProfileProto* msg) {
  return *msg->network_;
}
const ::metrics::SystemProfileProto_GoogleUpdate&
SystemProfileProto::_Internal::google_update(const SystemProfileProto* msg) {
  return *msg->google_update_;
}
const ::metrics::SystemProfileProto_Stability&
SystemProfileProto::_Internal::stability(const SystemProfileProto* msg) {
  return *msg->stability_;
}
const ::metrics::SystemProfileProto_ExternalAccessPoint&
SystemProfileProto::_Internal::external_access_point(const SystemProfileProto* msg) {
  return *msg->external_access_point_;
}
const ::metrics::SystemProfileProto_LinkedAndroidPhoneData&
SystemProfileProto::_Internal::linked_android_phone_data(const SystemProfileProto* msg) {
  return *msg->linked_android_phone_data_;
}
void SystemProfileProto::clear_extension_install() {
  extension_install_.Clear();
}
SystemProfileProto::SystemProfileProto()
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(), _internal_metadata_(nullptr) {
  SharedCtor();
  // @@protoc_insertion_point(constructor:metrics.SystemProfileProto)
}
SystemProfileProto::SystemProfileProto(const SystemProfileProto& from)
  : ::PROTOBUF_NAMESPACE_ID::MessageLite(),
      _internal_metadata_(nullptr),
      _has_bits_(from._has_bits_),
      plugin_(from.plugin_),
      field_trial_(from.field_trial_),
      external_audio_video_device_(from.external_audio_video_device_),
      occupied_extension_bucket_(from.occupied_extension_bucket_),
      antivirus_product_(from.antivirus_product_),
      chrome_component_(from.chrome_component_),
      extension_install_(from.extension_install_) {
  _internal_metadata_.MergeFrom(from._internal_metadata_);
  app_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_app_version()) {
    app_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.app_version_);
  }
  application_locale_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_application_locale()) {
    application_locale_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.application_locale_);
  }
  brand_code_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_brand_code()) {
    brand_code_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.brand_code_);
  }
  app_package_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_app_package_name()) {
    app_package_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.app_package_name_);
  }
  variations_seed_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_variations_seed_version()) {
    variations_seed_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.variations_seed_version_);
  }
  client_uuid_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (from.has_client_uuid()) {
    client_uuid_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.client_uuid_);
  }
  if (from.has_os()) {
    os_ = new ::metrics::SystemProfileProto_OS(*from.os_);
  } else {
    os_ = nullptr;
  }
  if (from.has_hardware()) {
    hardware_ = new ::metrics::SystemProfileProto_Hardware(*from.hardware_);
  } else {
    hardware_ = nullptr;
  }
  if (from.has_stability()) {
    stability_ = new ::metrics::SystemProfileProto_Stability(*from.stability_);
  } else {
    stability_ = nullptr;
  }
  if (from.has_google_update()) {
    google_update_ = new ::metrics::SystemProfileProto_GoogleUpdate(*from.google_update_);
  } else {
    google_update_ = nullptr;
  }
  if (from.has_network()) {
    network_ = new ::metrics::SystemProfileProto_Network(*from.network_);
  } else {
    network_ = nullptr;
  }
  if (from.has_external_access_point()) {
    external_access_point_ = new ::metrics::SystemProfileProto_ExternalAccessPoint(*from.external_access_point_);
  } else {
    external_access_point_ = nullptr;
  }
  if (from.has_linked_android_phone_data()) {
    linked_android_phone_data_ = new ::metrics::SystemProfileProto_LinkedAndroidPhoneData(*from.linked_android_phone_data_);
  } else {
    linked_android_phone_data_ = nullptr;
  }
  ::memcpy(&build_timestamp_, &from.build_timestamp_,
    static_cast<size_t>(reinterpret_cast<char*>(&old_low_entropy_source_) -
    reinterpret_cast<char*>(&build_timestamp_)) + sizeof(old_low_entropy_source_));
  // @@protoc_insertion_point(copy_constructor:metrics.SystemProfileProto)
}

void SystemProfileProto::SharedCtor() {
  ::PROTOBUF_NAMESPACE_ID::internal::InitSCC(&scc_info_SystemProfileProto_system_5fprofile_2eproto.base);
  app_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  application_locale_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  brand_code_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  app_package_name_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  variations_seed_version_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  client_uuid_.UnsafeSetDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  ::memset(&os_, 0, static_cast<size_t>(
      reinterpret_cast<char*>(&old_low_entropy_source_) -
      reinterpret_cast<char*>(&os_)) + sizeof(old_low_entropy_source_));
}

SystemProfileProto::~SystemProfileProto() {
  // @@protoc_insertion_point(destructor:metrics.SystemProfileProto)
  SharedDtor();
}

void SystemProfileProto::SharedDtor() {
  app_version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  application_locale_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  brand_code_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  app_package_name_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  variations_seed_version_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  client_uuid_.DestroyNoArena(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited());
  if (this != internal_default_instance()) delete os_;
  if (this != internal_default_instance()) delete hardware_;
  if (this != internal_default_instance()) delete stability_;
  if (this != internal_default_instance()) delete google_update_;
  if (this != internal_default_instance()) delete network_;
  if (this != internal_default_instance()) delete external_access_point_;
  if (this != internal_default_instance()) delete linked_android_phone_data_;
}

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


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

  plugin_.Clear();
  field_trial_.Clear();
  external_audio_video_device_.Clear();
  occupied_extension_bucket_.Clear();
  antivirus_product_.Clear();
  chrome_component_.Clear();
  extension_install_.Clear();
  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      app_version_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000002u) {
      application_locale_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000004u) {
      brand_code_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000008u) {
      app_package_name_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000010u) {
      variations_seed_version_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000020u) {
      client_uuid_.ClearNonDefaultToEmptyNoArena();
    }
    if (cached_has_bits & 0x00000040u) {
      GOOGLE_DCHECK(os_ != nullptr);
      os_->Clear();
    }
    if (cached_has_bits & 0x00000080u) {
      GOOGLE_DCHECK(hardware_ != nullptr);
      hardware_->Clear();
    }
  }
  if (cached_has_bits & 0x00001f00u) {
    if (cached_has_bits & 0x00000100u) {
      GOOGLE_DCHECK(stability_ != nullptr);
      stability_->Clear();
    }
    if (cached_has_bits & 0x00000200u) {
      GOOGLE_DCHECK(google_update_ != nullptr);
      google_update_->Clear();
    }
    if (cached_has_bits & 0x00000400u) {
      GOOGLE_DCHECK(network_ != nullptr);
      network_->Clear();
    }
    if (cached_has_bits & 0x00000800u) {
      GOOGLE_DCHECK(external_access_point_ != nullptr);
      external_access_point_->Clear();
    }
    if (cached_has_bits & 0x00001000u) {
      GOOGLE_DCHECK(linked_android_phone_data_ != nullptr);
      linked_android_phone_data_->Clear();
    }
  }
  if (cached_has_bits & 0x0000e000u) {
    ::memset(&build_timestamp_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&channel_) -
        reinterpret_cast<char*>(&build_timestamp_)) + sizeof(channel_));
  }
  if (cached_has_bits & 0x00ff0000u) {
    ::memset(&multi_profile_user_count_, 0, static_cast<size_t>(
        reinterpret_cast<char*>(&old_low_entropy_source_) -
        reinterpret_cast<char*>(&multi_profile_user_count_)) + sizeof(old_low_entropy_source_));
  }
  _has_bits_.Clear();
  _internal_metadata_.Clear();
}

#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
const char* SystemProfileProto::_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 int64 build_timestamp = 1;
      case 1:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_build_timestamp(&has_bits);
          build_timestamp_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string app_version = 2;
      case 2:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_app_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 uma_enabled_date = 3;
      case 3:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 24)) {
          _Internal::set_has_uma_enabled_date(&has_bits);
          uma_enabled_date_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string application_locale = 4;
      case 4:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 34)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_application_locale(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.OS os = 5;
      case 5:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 42)) {
          ptr = ctx->ParseMessage(mutable_os(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Hardware hardware = 6;
      case 6:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 50)) {
          ptr = ctx->ParseMessage(mutable_hardware(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.Plugin plugin = 7;
      case 7:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 58)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(add_plugin(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 58);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Stability stability = 8;
      case 8:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 66)) {
          ptr = ctx->ParseMessage(mutable_stability(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.FieldTrial field_trial = 9;
      case 9:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 74)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(add_field_trial(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 74);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Channel channel = 10;
      case 10:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 80)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_Channel_IsValid(val))) {
            set_channel(static_cast<::metrics::SystemProfileProto_Channel>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(10, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.GoogleUpdate google_update = 11;
      case 11:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 90)) {
          ptr = ctx->ParseMessage(mutable_google_update(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string brand_code = 12;
      case 12:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 98)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_brand_code(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.Network network = 13;
      case 13:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 106)) {
          ptr = ctx->ParseMessage(mutable_network(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice external_audio_video_device = 14;
      case 14:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 114)) {
          ptr -= 1;
          do {
            ptr += 1;
            ptr = ctx->ParseMessage(add_external_audio_video_device(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint8>(ptr) == 114);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.ExternalAccessPoint external_access_point = 15;
      case 15:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 122)) {
          ptr = ctx->ParseMessage(mutable_external_access_point(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int64 install_date = 16;
      case 16:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 128)) {
          _Internal::set_has_install_date(&has_bits);
          install_date_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional uint32 multi_profile_user_count = 17;
      case 17:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 136)) {
          _Internal::set_has_multi_profile_user_count(&has_bits);
          multi_profile_user_count_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // repeated int32 occupied_extension_bucket = 18;
      case 18:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 144)) {
          ptr -= 2;
          do {
            ptr += 2;
            add_occupied_extension_bucket(::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr));
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 400);
        } else if (static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 146) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::PackedInt32Parser(mutable_occupied_extension_bucket(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.ExtensionsState offstore_extensions_state = 19;
      case 19:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 152)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_ExtensionsState_IsValid(val))) {
            set_offstore_extensions_state(static_cast<::metrics::SystemProfileProto_ExtensionsState>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(19, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // optional bool is_instrumented_build = 20 [default = false];
      case 20:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 160)) {
          _Internal::set_has_is_instrumented_build(&has_bits);
          is_instrumented_build_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.UmaDefaultState uma_default_state = 22;
      case 22:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 176)) {
          ::PROTOBUF_NAMESPACE_ID::uint64 val = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
          if (PROTOBUF_PREDICT_TRUE(::metrics::SystemProfileProto_UmaDefaultState_IsValid(val))) {
            set_uma_default_state(static_cast<::metrics::SystemProfileProto_UmaDefaultState>(val));
          } else {
            ::PROTOBUF_NAMESPACE_ID::internal::WriteVarint(22, val, mutable_unknown_fields());
          }
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.AntiVirusProduct antivirus_product = 23;
      case 23:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 186)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(add_antivirus_product(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 442);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.SystemProfileProto.ChromeComponent chrome_component = 24;
      case 24:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 194)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(add_chrome_component(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 450);
        } else goto handle_unusual;
        continue;
      // repeated .metrics.ExtensionInstallProto extension_install = 25;
      case 25:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 202)) {
          ptr -= 2;
          do {
            ptr += 2;
            ptr = ctx->ParseMessage(add_extension_install(), ptr);
            CHK_(ptr);
            if (!ctx->DataAvailable(ptr)) break;
          } while (::PROTOBUF_NAMESPACE_ID::internal::UnalignedLoad<::PROTOBUF_NAMESPACE_ID::uint16>(ptr) == 458);
        } else goto handle_unusual;
        continue;
      // optional string app_package_name = 26;
      case 26:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 210)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_app_package_name(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string variations_seed_version = 28;
      case 28:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 226)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_variations_seed_version(), ptr, ctx);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional .metrics.SystemProfileProto.LinkedAndroidPhoneData linked_android_phone_data = 29;
      case 29:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 234)) {
          ptr = ctx->ParseMessage(mutable_linked_android_phone_data(), ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 low_entropy_source = 31;
      case 31:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 248)) {
          _Internal::set_has_low_entropy_source(&has_bits);
          low_entropy_source_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional int32 old_low_entropy_source = 32;
      case 32:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 0)) {
          _Internal::set_has_old_low_entropy_source(&has_bits);
          old_low_entropy_source_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional bool client_id_was_used_for_trial_assignment = 33;
      case 33:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 8)) {
          _Internal::set_has_client_id_was_used_for_trial_assignment(&has_bits);
          client_id_was_used_for_trial_assignment_ = ::PROTOBUF_NAMESPACE_ID::internal::ReadVarint(&ptr);
          CHK_(ptr);
        } else goto handle_unusual;
        continue;
      // optional string client_uuid = 34;
      case 34:
        if (PROTOBUF_PREDICT_TRUE(static_cast<::PROTOBUF_NAMESPACE_ID::uint8>(tag) == 18)) {
          ptr = ::PROTOBUF_NAMESPACE_ID::internal::InlineGreedyStringParser(mutable_client_uuid(), ptr, ctx);
          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_
}
#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
bool SystemProfileProto::MergePartialFromCodedStream(
    ::PROTOBUF_NAMESPACE_ID::io::CodedInputStream* input) {
#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
  ::PROTOBUF_NAMESPACE_ID::uint32 tag;
  ::PROTOBUF_NAMESPACE_ID::internal::LiteUnknownFieldSetter unknown_fields_setter(
      &_internal_metadata_);
  ::PROTOBUF_NAMESPACE_ID::io::StringOutputStream unknown_fields_output(
      unknown_fields_setter.buffer());
  ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream unknown_fields_stream(
      &unknown_fields_output, false);
  // @@protoc_insertion_point(parse_start:metrics.SystemProfileProto)
  for (;;) {
    ::std::pair<::PROTOBUF_NAMESPACE_ID::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(16383u);
    tag = p.first;
    if (!p.second) goto handle_unusual;
    switch (::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::GetTagFieldNumber(tag)) {
      // optional int64 build_timestamp = 1;
      case 1: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (8 & 0xFF)) {
          _Internal::set_has_build_timestamp(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &build_timestamp_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string app_version = 2;
      case 2: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (18 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_app_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 uma_enabled_date = 3;
      case 3: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (24 & 0xFF)) {
          _Internal::set_has_uma_enabled_date(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &uma_enabled_date_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string application_locale = 4;
      case 4: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (34 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_application_locale()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.OS os = 5;
      case 5: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (42 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_os()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Hardware hardware = 6;
      case 6: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (50 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_hardware()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.Plugin plugin = 7;
      case 7: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (58 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_plugin()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Stability stability = 8;
      case 8: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (66 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_stability()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.FieldTrial field_trial = 9;
      case 9: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (74 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_field_trial()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Channel channel = 10;
      case 10: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (80 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_Channel_IsValid(value)) {
            set_channel(static_cast< ::metrics::SystemProfileProto_Channel >(value));
          } else {
            unknown_fields_stream.WriteVarint32(80u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.GoogleUpdate google_update = 11;
      case 11: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (90 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_google_update()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string brand_code = 12;
      case 12: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (98 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_brand_code()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.Network network = 13;
      case 13: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (106 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_network()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice external_audio_video_device = 14;
      case 14: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (114 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_external_audio_video_device()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.ExternalAccessPoint external_access_point = 15;
      case 15: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (122 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_external_access_point()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int64 install_date = 16;
      case 16: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (128 & 0xFF)) {
          _Internal::set_has_install_date(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int64, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT64>(
                 input, &install_date_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional uint32 multi_profile_user_count = 17;
      case 17: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (136 & 0xFF)) {
          _Internal::set_has_multi_profile_user_count(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::uint32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_UINT32>(
                 input, &multi_profile_user_count_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated int32 occupied_extension_bucket = 18;
      case 18: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (144 & 0xFF)) {
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadRepeatedPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 2, 144u, input, this->mutable_occupied_extension_bucket())));
        } else if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (146 & 0xFF)) {
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPackedPrimitiveNoInline<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, this->mutable_occupied_extension_bucket())));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.ExtensionsState offstore_extensions_state = 19;
      case 19: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (152 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_ExtensionsState_IsValid(value)) {
            set_offstore_extensions_state(static_cast< ::metrics::SystemProfileProto_ExtensionsState >(value));
          } else {
            unknown_fields_stream.WriteVarint32(152u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool is_instrumented_build = 20 [default = false];
      case 20: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (160 & 0xFF)) {
          _Internal::set_has_is_instrumented_build(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &is_instrumented_build_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.UmaDefaultState uma_default_state = 22;
      case 22: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (176 & 0xFF)) {
          int value = 0;
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   int, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_ENUM>(
                 input, &value)));
          if (::metrics::SystemProfileProto_UmaDefaultState_IsValid(value)) {
            set_uma_default_state(static_cast< ::metrics::SystemProfileProto_UmaDefaultState >(value));
          } else {
            unknown_fields_stream.WriteVarint32(176u);
            unknown_fields_stream.WriteVarint32(
                static_cast<::PROTOBUF_NAMESPACE_ID::uint32>(value));
          }
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.AntiVirusProduct antivirus_product = 23;
      case 23: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (186 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_antivirus_product()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.SystemProfileProto.ChromeComponent chrome_component = 24;
      case 24: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (194 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_chrome_component()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // repeated .metrics.ExtensionInstallProto extension_install = 25;
      case 25: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (202 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
                input, add_extension_install()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string app_package_name = 26;
      case 26: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (210 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_app_package_name()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string variations_seed_version = 28;
      case 28: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (226 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_variations_seed_version()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional .metrics.SystemProfileProto.LinkedAndroidPhoneData linked_android_phone_data = 29;
      case 29: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (234 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadMessage(
               input, mutable_linked_android_phone_data()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 low_entropy_source = 31;
      case 31: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (248 & 0xFF)) {
          _Internal::set_has_low_entropy_source(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &low_entropy_source_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional int32 old_low_entropy_source = 32;
      case 32: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (256 & 0xFF)) {
          _Internal::set_has_old_low_entropy_source(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   ::PROTOBUF_NAMESPACE_ID::int32, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_INT32>(
                 input, &old_low_entropy_source_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional bool client_id_was_used_for_trial_assignment = 33;
      case 33: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (264 & 0xFF)) {
          _Internal::set_has_client_id_was_used_for_trial_assignment(&_has_bits_);
          DO_((::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadPrimitive<
                   bool, ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::TYPE_BOOL>(
                 input, &client_id_was_used_for_trial_assignment_)));
        } else {
          goto handle_unusual;
        }
        break;
      }

      // optional string client_uuid = 34;
      case 34: {
        if (static_cast< ::PROTOBUF_NAMESPACE_ID::uint8>(tag) == (274 & 0xFF)) {
          DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::ReadString(
                input, this->mutable_client_uuid()));
        } else {
          goto handle_unusual;
        }
        break;
      }

      default: {
      handle_unusual:
        if (tag == 0) {
          goto success;
        }
        DO_(::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::SkipField(
            input, tag, &unknown_fields_stream));
        break;
      }
    }
  }
success:
  // @@protoc_insertion_point(parse_success:metrics.SystemProfileProto)
  return true;
failure:
  // @@protoc_insertion_point(parse_failure:metrics.SystemProfileProto)
  return false;
#undef DO_
}
#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER

void SystemProfileProto::SerializeWithCachedSizes(
    ::PROTOBUF_NAMESPACE_ID::io::CodedOutputStream* output) const {
  // @@protoc_insertion_point(serialize_start:metrics.SystemProfileProto)
  ::PROTOBUF_NAMESPACE_ID::uint32 cached_has_bits = 0;
  (void) cached_has_bits;

  cached_has_bits = _has_bits_[0];
  // optional int64 build_timestamp = 1;
  if (cached_has_bits & 0x00002000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(1, this->build_timestamp(), output);
  }

  // optional string app_version = 2;
  if (cached_has_bits & 0x00000001u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      2, this->app_version(), output);
  }

  // optional int64 uma_enabled_date = 3;
  if (cached_has_bits & 0x00004000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(3, this->uma_enabled_date(), output);
  }

  // optional string application_locale = 4;
  if (cached_has_bits & 0x00000002u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      4, this->application_locale(), output);
  }

  // optional .metrics.SystemProfileProto.OS os = 5;
  if (cached_has_bits & 0x00000040u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      5, _Internal::os(this), output);
  }

  // optional .metrics.SystemProfileProto.Hardware hardware = 6;
  if (cached_has_bits & 0x00000080u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      6, _Internal::hardware(this), output);
  }

  // repeated .metrics.SystemProfileProto.Plugin plugin = 7;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->plugin_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      7,
      this->plugin(static_cast<int>(i)),
      output);
  }

  // optional .metrics.SystemProfileProto.Stability stability = 8;
  if (cached_has_bits & 0x00000100u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      8, _Internal::stability(this), output);
  }

  // repeated .metrics.SystemProfileProto.FieldTrial field_trial = 9;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->field_trial_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      9,
      this->field_trial(static_cast<int>(i)),
      output);
  }

  // optional .metrics.SystemProfileProto.Channel channel = 10;
  if (cached_has_bits & 0x00008000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      10, this->channel(), output);
  }

  // optional .metrics.SystemProfileProto.GoogleUpdate google_update = 11;
  if (cached_has_bits & 0x00000200u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      11, _Internal::google_update(this), output);
  }

  // optional string brand_code = 12;
  if (cached_has_bits & 0x00000004u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      12, this->brand_code(), output);
  }

  // optional .metrics.SystemProfileProto.Network network = 13;
  if (cached_has_bits & 0x00000400u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      13, _Internal::network(this), output);
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice external_audio_video_device = 14;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->external_audio_video_device_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      14,
      this->external_audio_video_device(static_cast<int>(i)),
      output);
  }

  // optional .metrics.SystemProfileProto.ExternalAccessPoint external_access_point = 15;
  if (cached_has_bits & 0x00000800u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      15, _Internal::external_access_point(this), output);
  }

  // optional int64 install_date = 16;
  if (cached_has_bits & 0x00020000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt64(16, this->install_date(), output);
  }

  // optional uint32 multi_profile_user_count = 17;
  if (cached_has_bits & 0x00010000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteUInt32(17, this->multi_profile_user_count(), output);
  }

  // repeated int32 occupied_extension_bucket = 18;
  for (int i = 0, n = this->occupied_extension_bucket_size(); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(
      18, this->occupied_extension_bucket(i), output);
  }

  // optional .metrics.SystemProfileProto.ExtensionsState offstore_extensions_state = 19;
  if (cached_has_bits & 0x00040000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      19, this->offstore_extensions_state(), output);
  }

  // optional bool is_instrumented_build = 20 [default = false];
  if (cached_has_bits & 0x00100000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(20, this->is_instrumented_build(), output);
  }

  // optional .metrics.SystemProfileProto.UmaDefaultState uma_default_state = 22;
  if (cached_has_bits & 0x00080000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteEnum(
      22, this->uma_default_state(), output);
  }

  // repeated .metrics.SystemProfileProto.AntiVirusProduct antivirus_product = 23;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->antivirus_product_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      23,
      this->antivirus_product(static_cast<int>(i)),
      output);
  }

  // repeated .metrics.SystemProfileProto.ChromeComponent chrome_component = 24;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->chrome_component_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      24,
      this->chrome_component(static_cast<int>(i)),
      output);
  }

  // repeated .metrics.ExtensionInstallProto extension_install = 25;
  for (unsigned int i = 0,
      n = static_cast<unsigned int>(this->extension_install_size()); i < n; i++) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      25,
      this->extension_install(static_cast<int>(i)),
      output);
  }

  // optional string app_package_name = 26;
  if (cached_has_bits & 0x00000008u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      26, this->app_package_name(), output);
  }

  // optional string variations_seed_version = 28;
  if (cached_has_bits & 0x00000010u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      28, this->variations_seed_version(), output);
  }

  // optional .metrics.SystemProfileProto.LinkedAndroidPhoneData linked_android_phone_data = 29;
  if (cached_has_bits & 0x00001000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteMessage(
      29, _Internal::linked_android_phone_data(this), output);
  }

  // optional int32 low_entropy_source = 31;
  if (cached_has_bits & 0x00400000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(31, this->low_entropy_source(), output);
  }

  // optional int32 old_low_entropy_source = 32;
  if (cached_has_bits & 0x00800000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteInt32(32, this->old_low_entropy_source(), output);
  }

  // optional bool client_id_was_used_for_trial_assignment = 33;
  if (cached_has_bits & 0x00200000u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteBool(33, this->client_id_was_used_for_trial_assignment(), output);
  }

  // optional string client_uuid = 34;
  if (cached_has_bits & 0x00000020u) {
    ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::WriteStringMaybeAliased(
      34, this->client_uuid(), output);
  }

  output->WriteRaw(_internal_metadata_.unknown_fields().data(),
                   static_cast<int>(_internal_metadata_.unknown_fields().size()));
  // @@protoc_insertion_point(serialize_end:metrics.SystemProfileProto)
}

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

  total_size += _internal_metadata_.unknown_fields().size();

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

  // repeated .metrics.SystemProfileProto.Plugin plugin = 7;
  {
    unsigned int count = static_cast<unsigned int>(this->plugin_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->plugin(static_cast<int>(i)));
    }
  }

  // repeated .metrics.SystemProfileProto.FieldTrial field_trial = 9;
  {
    unsigned int count = static_cast<unsigned int>(this->field_trial_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->field_trial(static_cast<int>(i)));
    }
  }

  // repeated .metrics.SystemProfileProto.ExternalAudioVideoDevice external_audio_video_device = 14;
  {
    unsigned int count = static_cast<unsigned int>(this->external_audio_video_device_size());
    total_size += 1UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->external_audio_video_device(static_cast<int>(i)));
    }
  }

  // repeated int32 occupied_extension_bucket = 18;
  {
    size_t data_size = ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::
      Int32Size(this->occupied_extension_bucket_);
    total_size += 2 *
                  ::PROTOBUF_NAMESPACE_ID::internal::FromIntSize(this->occupied_extension_bucket_size());
    total_size += data_size;
  }

  // repeated .metrics.SystemProfileProto.AntiVirusProduct antivirus_product = 23;
  {
    unsigned int count = static_cast<unsigned int>(this->antivirus_product_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->antivirus_product(static_cast<int>(i)));
    }
  }

  // repeated .metrics.SystemProfileProto.ChromeComponent chrome_component = 24;
  {
    unsigned int count = static_cast<unsigned int>(this->chrome_component_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->chrome_component(static_cast<int>(i)));
    }
  }

  // repeated .metrics.ExtensionInstallProto extension_install = 25;
  {
    unsigned int count = static_cast<unsigned int>(this->extension_install_size());
    total_size += 2UL * count;
    for (unsigned int i = 0; i < count; i++) {
      total_size +=
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          this->extension_install(static_cast<int>(i)));
    }
  }

  cached_has_bits = _has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    // optional string app_version = 2;
    if (cached_has_bits & 0x00000001u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->app_version());
    }

    // optional string application_locale = 4;
    if (cached_has_bits & 0x00000002u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->application_locale());
    }

    // optional string brand_code = 12;
    if (cached_has_bits & 0x00000004u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->brand_code());
    }

    // optional string app_package_name = 26;
    if (cached_has_bits & 0x00000008u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->app_package_name());
    }

    // optional string variations_seed_version = 28;
    if (cached_has_bits & 0x00000010u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->variations_seed_version());
    }

    // optional string client_uuid = 34;
    if (cached_has_bits & 0x00000020u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::StringSize(
          this->client_uuid());
    }

    // optional .metrics.SystemProfileProto.OS os = 5;
    if (cached_has_bits & 0x00000040u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *os_);
    }

    // optional .metrics.SystemProfileProto.Hardware hardware = 6;
    if (cached_has_bits & 0x00000080u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *hardware_);
    }

  }
  if (cached_has_bits & 0x0000ff00u) {
    // optional .metrics.SystemProfileProto.Stability stability = 8;
    if (cached_has_bits & 0x00000100u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *stability_);
    }

    // optional .metrics.SystemProfileProto.GoogleUpdate google_update = 11;
    if (cached_has_bits & 0x00000200u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *google_update_);
    }

    // optional .metrics.SystemProfileProto.Network network = 13;
    if (cached_has_bits & 0x00000400u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *network_);
    }

    // optional .metrics.SystemProfileProto.ExternalAccessPoint external_access_point = 15;
    if (cached_has_bits & 0x00000800u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *external_access_point_);
    }

    // optional .metrics.SystemProfileProto.LinkedAndroidPhoneData linked_android_phone_data = 29;
    if (cached_has_bits & 0x00001000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::MessageSize(
          *linked_android_phone_data_);
    }

    // optional int64 build_timestamp = 1;
    if (cached_has_bits & 0x00002000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->build_timestamp());
    }

    // optional int64 uma_enabled_date = 3;
    if (cached_has_bits & 0x00004000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->uma_enabled_date());
    }

    // optional .metrics.SystemProfileProto.Channel channel = 10;
    if (cached_has_bits & 0x00008000u) {
      total_size += 1 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->channel());
    }

  }
  if (cached_has_bits & 0x00ff0000u) {
    // optional uint32 multi_profile_user_count = 17;
    if (cached_has_bits & 0x00010000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::UInt32Size(
          this->multi_profile_user_count());
    }

    // optional int64 install_date = 16;
    if (cached_has_bits & 0x00020000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int64Size(
          this->install_date());
    }

    // optional .metrics.SystemProfileProto.ExtensionsState offstore_extensions_state = 19;
    if (cached_has_bits & 0x00040000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->offstore_extensions_state());
    }

    // optional .metrics.SystemProfileProto.UmaDefaultState uma_default_state = 22;
    if (cached_has_bits & 0x00080000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::EnumSize(this->uma_default_state());
    }

    // optional bool is_instrumented_build = 20 [default = false];
    if (cached_has_bits & 0x00100000u) {
      total_size += 2 + 1;
    }

    // optional bool client_id_was_used_for_trial_assignment = 33;
    if (cached_has_bits & 0x00200000u) {
      total_size += 2 + 1;
    }

    // optional int32 low_entropy_source = 31;
    if (cached_has_bits & 0x00400000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->low_entropy_source());
    }

    // optional int32 old_low_entropy_source = 32;
    if (cached_has_bits & 0x00800000u) {
      total_size += 2 +
        ::PROTOBUF_NAMESPACE_ID::internal::WireFormatLite::Int32Size(
          this->old_low_entropy_source());
    }

  }
  int cached_size = ::PROTOBUF_NAMESPACE_ID::internal::ToCachedSize(total_size);
  SetCachedSize(cached_size);
  return total_size;
}

void SystemProfileProto::CheckTypeAndMergeFrom(
    const ::PROTOBUF_NAMESPACE_ID::MessageLite& from) {
  MergeFrom(*::PROTOBUF_NAMESPACE_ID::internal::DownCast<const SystemProfileProto*>(
      &from));
}

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

  plugin_.MergeFrom(from.plugin_);
  field_trial_.MergeFrom(from.field_trial_);
  external_audio_video_device_.MergeFrom(from.external_audio_video_device_);
  occupied_extension_bucket_.MergeFrom(from.occupied_extension_bucket_);
  antivirus_product_.MergeFrom(from.antivirus_product_);
  chrome_component_.MergeFrom(from.chrome_component_);
  extension_install_.MergeFrom(from.extension_install_);
  cached_has_bits = from._has_bits_[0];
  if (cached_has_bits & 0x000000ffu) {
    if (cached_has_bits & 0x00000001u) {
      _has_bits_[0] |= 0x00000001u;
      app_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.app_version_);
    }
    if (cached_has_bits & 0x00000002u) {
      _has_bits_[0] |= 0x00000002u;
      application_locale_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.application_locale_);
    }
    if (cached_has_bits & 0x00000004u) {
      _has_bits_[0] |= 0x00000004u;
      brand_code_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.brand_code_);
    }
    if (cached_has_bits & 0x00000008u) {
      _has_bits_[0] |= 0x00000008u;
      app_package_name_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.app_package_name_);
    }
    if (cached_has_bits & 0x00000010u) {
      _has_bits_[0] |= 0x00000010u;
      variations_seed_version_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.variations_seed_version_);
    }
    if (cached_has_bits & 0x00000020u) {
      _has_bits_[0] |= 0x00000020u;
      client_uuid_.AssignWithDefault(&::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(), from.client_uuid_);
    }
    if (cached_has_bits & 0x00000040u) {
      mutable_os()->::metrics::SystemProfileProto_OS::MergeFrom(from.os());
    }
    if (cached_has_bits & 0x00000080u) {
      mutable_hardware()->::metrics::SystemProfileProto_Hardware::MergeFrom(from.hardware());
    }
  }
  if (cached_has_bits & 0x0000ff00u) {
    if (cached_has_bits & 0x00000100u) {
      mutable_stability()->::metrics::SystemProfileProto_Stability::MergeFrom(from.stability());
    }
    if (cached_has_bits & 0x00000200u) {
      mutable_google_update()->::metrics::SystemProfileProto_GoogleUpdate::MergeFrom(from.google_update());
    }
    if (cached_has_bits & 0x00000400u) {
      mutable_network()->::metrics::SystemProfileProto_Network::MergeFrom(from.network());
    }
    if (cached_has_bits & 0x00000800u) {
      mutable_external_access_point()->::metrics::SystemProfileProto_ExternalAccessPoint::MergeFrom(from.external_access_point());
    }
    if (cached_has_bits & 0x00001000u) {
      mutable_linked_android_phone_data()->::metrics::SystemProfileProto_LinkedAndroidPhoneData::MergeFrom(from.linked_android_phone_data());
    }
    if (cached_has_bits & 0x00002000u) {
      build_timestamp_ = from.build_timestamp_;
    }
    if (cached_has_bits & 0x00004000u) {
      uma_enabled_date_ = from.uma_enabled_date_;
    }
    if (cached_has_bits & 0x00008000u) {
      channel_ = from.channel_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
  if (cached_has_bits & 0x00ff0000u) {
    if (cached_has_bits & 0x00010000u) {
      multi_profile_user_count_ = from.multi_profile_user_count_;
    }
    if (cached_has_bits & 0x00020000u) {
      install_date_ = from.install_date_;
    }
    if (cached_has_bits & 0x00040000u) {
      offstore_extensions_state_ = from.offstore_extensions_state_;
    }
    if (cached_has_bits & 0x00080000u) {
      uma_default_state_ = from.uma_default_state_;
    }
    if (cached_has_bits & 0x00100000u) {
      is_instrumented_build_ = from.is_instrumented_build_;
    }
    if (cached_has_bits & 0x00200000u) {
      client_id_was_used_for_trial_assignment_ = from.client_id_was_used_for_trial_assignment_;
    }
    if (cached_has_bits & 0x00400000u) {
      low_entropy_source_ = from.low_entropy_source_;
    }
    if (cached_has_bits & 0x00800000u) {
      old_low_entropy_source_ = from.old_low_entropy_source_;
    }
    _has_bits_[0] |= cached_has_bits;
  }
}

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

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

void SystemProfileProto::InternalSwap(SystemProfileProto* other) {
  using std::swap;
  _internal_metadata_.Swap(&other->_internal_metadata_);
  swap(_has_bits_[0], other->_has_bits_[0]);
  CastToBase(&plugin_)->InternalSwap(CastToBase(&other->plugin_));
  CastToBase(&field_trial_)->InternalSwap(CastToBase(&other->field_trial_));
  CastToBase(&external_audio_video_device_)->InternalSwap(CastToBase(&other->external_audio_video_device_));
  occupied_extension_bucket_.InternalSwap(&other->occupied_extension_bucket_);
  CastToBase(&antivirus_product_)->InternalSwap(CastToBase(&other->antivirus_product_));
  CastToBase(&chrome_component_)->InternalSwap(CastToBase(&other->chrome_component_));
  CastToBase(&extension_install_)->InternalSwap(CastToBase(&other->extension_install_));
  app_version_.Swap(&other->app_version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  application_locale_.Swap(&other->application_locale_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  brand_code_.Swap(&other->brand_code_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  app_package_name_.Swap(&other->app_package_name_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  variations_seed_version_.Swap(&other->variations_seed_version_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  client_uuid_.Swap(&other->client_uuid_, &::PROTOBUF_NAMESPACE_ID::internal::GetEmptyStringAlreadyInited(),
    GetArenaNoVirtual());
  swap(os_, other->os_);
  swap(hardware_, other->hardware_);
  swap(stability_, other->stability_);
  swap(google_update_, other->google_update_);
  swap(network_, other->network_);
  swap(external_access_point_, other->external_access_point_);
  swap(linked_android_phone_data_, other->linked_android_phone_data_);
  swap(build_timestamp_, other->build_timestamp_);
  swap(uma_enabled_date_, other->uma_enabled_date_);
  swap(channel_, other->channel_);
  swap(multi_profile_user_count_, other->multi_profile_user_count_);
  swap(install_date_, other->install_date_);
  swap(offstore_extensions_state_, other->offstore_extensions_state_);
  swap(uma_default_state_, other->uma_default_state_);
  swap(is_instrumented_build_, other->is_instrumented_build_);
  swap(client_id_was_used_for_trial_assignment_, other->client_id_was_used_for_trial_assignment_);
  swap(low_entropy_source_, other->low_entropy_source_);
  swap(old_low_entropy_source_, other->old_low_entropy_source_);
}

std::string SystemProfileProto::GetTypeName() const {
  return "metrics.SystemProfileProto";
}


// @@protoc_insertion_point(namespace_scope)
}  // namespace metrics
PROTOBUF_NAMESPACE_OPEN
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_OS_Arc* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_OS_Arc >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_OS_Arc >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_OS* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_OS >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_OS >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Hardware_CPU* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Hardware_CPU >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Hardware_CPU >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Hardware_Graphics* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Hardware_Graphics >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Hardware_Graphics >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Hardware_InternalStorageDevice* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Hardware_InternalStorageDevice >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Hardware_InternalStorageDevice >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Hardware_Drive* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Hardware_Drive >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Hardware_Drive >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Hardware* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Hardware >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Hardware >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Network* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Network >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Network >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_GoogleUpdate_ProductInfo >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_GoogleUpdate* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_GoogleUpdate >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_GoogleUpdate >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Plugin* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Plugin >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Plugin >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Stability_PluginStability* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Stability_PluginStability >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Stability_PluginStability >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_Stability* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_Stability >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_Stability >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_FieldTrial* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_FieldTrial >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_FieldTrial >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_AudioDescription >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_ExternalAudioVideoDevice_CECCommand* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_CECCommand >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_ExternalAudioVideoDevice_CECCommand >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_ExternalAudioVideoDevice* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_ExternalAudioVideoDevice >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_ExternalAudioVideoDevice >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_ExternalAccessPoint* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_ExternalAccessPoint >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_ExternalAccessPoint >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_AntiVirusProduct* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_AntiVirusProduct >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_AntiVirusProduct >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_ChromeComponent* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_ChromeComponent >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_ChromeComponent >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto_LinkedAndroidPhoneData* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto_LinkedAndroidPhoneData >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto_LinkedAndroidPhoneData >(arena);
}
template<> PROTOBUF_NOINLINE ::metrics::SystemProfileProto* Arena::CreateMaybeMessage< ::metrics::SystemProfileProto >(Arena* arena) {
  return Arena::CreateInternal< ::metrics::SystemProfileProto >(arena);
}
PROTOBUF_NAMESPACE_CLOSE

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