[VOL-5452] Added a generic event for components

Change-Id: I251a58cd9852a5a4ab2093c428bcf8faa31607b1
Signed-off-by: Amit Ghosh <amit.ghosh@radisys.com>
diff --git a/VERSION b/VERSION
index 511a76e..84cc529 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-1.17.1
+1.18.0
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.cc b/cpp/dmi/hw_events_mgmt_service.pb.cc
index 9a534e6..26a87ad 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.cc
+++ b/cpp/dmi/hw_events_mgmt_service.pb.cc
@@ -19,6 +19,7 @@
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_Uuid_dmi_2fhw_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AdminStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_AlarmStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
+extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_OperStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
 extern PROTOBUF_INTERNAL_EXPORT_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto ::google::protobuf::internal::SCCInfo<0> scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
@@ -108,6 +109,10 @@
   const ::dmi::UsageStateChange* usage_state_change_;
   const ::dmi::StandbyStateChange* standby_state_change_;
 } _StateChangeInfo_default_instance_;
+class GenericEventInfoDefaultTypeInternal {
+ public:
+  ::google::protobuf::internal::ExplicitlyConstructed<GenericEventInfo> _instance;
+} _GenericEventInfo_default_instance_;
 class EventDefaultTypeInternal {
  public:
   ::google::protobuf::internal::ExplicitlyConstructed<Event> _instance;
@@ -353,6 +358,20 @@
       &scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
       &scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
 
+static void InitDefaultsGenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
+  GOOGLE_PROTOBUF_VERIFY_VERSION;
+
+  {
+    void* ptr = &::dmi::_GenericEventInfo_default_instance_;
+    new (ptr) ::dmi::GenericEventInfo();
+    ::google::protobuf::internal::OnShutdownDestroyMessage(ptr);
+  }
+  ::dmi::GenericEventInfo::InitAsDefaultInstance();
+}
+
+::google::protobuf::internal::SCCInfo<0> scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 0, InitDefaultsGenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {}};
+
 static void InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
   GOOGLE_PROTOBUF_VERIFY_VERSION;
 
@@ -364,12 +383,13 @@
   ::dmi::Event::InitAsDefaultInstance();
 }
 
-::google::protobuf::internal::SCCInfo<4> scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
-    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 4, InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {
+::google::protobuf::internal::SCCInfo<5> scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto =
+    {{ATOMIC_VAR_INIT(::google::protobuf::internal::SCCInfoBase::kUninitialized), 5, InitDefaultsEvent_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto}, {
       &scc_info_EventMetaData_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
       &scc_info_Timestamp_google_2fprotobuf_2ftimestamp_2eproto.base,
       &scc_info_ThresholdInformation_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
-      &scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
+      &scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,
+      &scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base,}};
 
 void InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
   ::google::protobuf::internal::InitSCC(&scc_info_ValueType_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
@@ -388,11 +408,12 @@
   ::google::protobuf::internal::InitSCC(&scc_info_UsageStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_StandbyStateChange_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_StateChangeInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  ::google::protobuf::internal::InitSCC(&scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
   ::google::protobuf::internal::InitSCC(&scc_info_Event_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
 }
 
-::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[17];
-const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[3];
+::google::protobuf::Metadata file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[18];
+const ::google::protobuf::EnumDescriptor* file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[4];
 constexpr ::google::protobuf::ServiceDescriptor const** file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = nullptr;
 
 const ::google::protobuf::uint32 TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto::offsets[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
@@ -524,6 +545,14 @@
   offsetof(::dmi::StateChangeInfoDefaultTypeInternal, standby_state_change_),
   PROTOBUF_FIELD_OFFSET(::dmi::StateChangeInfo, state_change_),
   ~0u,  // no _has_bits_
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, _internal_metadata_),
+  ~0u,  // no _extensions_
+  ~0u,  // no _oneof_case_
+  ~0u,  // no _weak_field_map_
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, message_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, message_code_),
+  PROTOBUF_FIELD_OFFSET(::dmi::GenericEventInfo, severity_),
+  ~0u,  // no _has_bits_
   PROTOBUF_FIELD_OFFSET(::dmi::Event, _internal_metadata_),
   ~0u,  // no _extensions_
   ~0u,  // no _oneof_case_
@@ -534,6 +563,7 @@
   PROTOBUF_FIELD_OFFSET(::dmi::Event, threshold_info_),
   PROTOBUF_FIELD_OFFSET(::dmi::Event, add_info_),
   PROTOBUF_FIELD_OFFSET(::dmi::Event, state_change_info_),
+  PROTOBUF_FIELD_OFFSET(::dmi::Event, generic_event_info_),
 };
 static const ::google::protobuf::internal::MigrationSchema schemas[] PROTOBUF_SECTION_VARIABLE(protodesc_cold) = {
   { 0, -1, sizeof(::dmi::ValueType)},
@@ -552,7 +582,8 @@
   { 102, -1, sizeof(::dmi::UsageStateChange)},
   { 109, -1, sizeof(::dmi::StandbyStateChange)},
   { 116, -1, sizeof(::dmi::StateChangeInfo)},
-  { 127, -1, sizeof(::dmi::Event)},
+  { 127, -1, sizeof(::dmi::GenericEventInfo)},
+  { 135, -1, sizeof(::dmi::Event)},
 };
 
 static ::google::protobuf::Message const * const file_default_instances[] = {
@@ -572,13 +603,14 @@
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_UsageStateChange_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_StandbyStateChange_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_StateChangeInfo_default_instance_),
+  reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_GenericEventInfo_default_instance_),
   reinterpret_cast<const ::google::protobuf::Message*>(&::dmi::_Event_default_instance_),
 };
 
 ::google::protobuf::internal::AssignDescriptorsTable assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
   {}, AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, "dmi/hw_events_mgmt_service.proto", schemas,
   file_default_instances, TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto::offsets,
-  file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 17, file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
+  file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 18, file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, file_level_service_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
 };
 
 const char descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[] =
@@ -638,91 +670,99 @@
   "ateChangeH\000\0223\n\022usage_state_change\030\004 \001(\0132"
   "\025.dmi.UsageStateChangeH\000\0227\n\024standby_stat"
   "e_change\030\005 \001(\0132\027.dmi.StandbyStateChangeH"
-  "\000B\016\n\014state_change\"\371\001\n\005Event\022*\n\016event_met"
-  "adata\030\001 \001(\0132\022.dmi.EventMetaData\022\037\n\010event"
-  "_id\030\002 \001(\0162\r.dmi.EventIds\022-\n\traised_ts\030\003 "
-  "\001(\0132\032.google.protobuf.Timestamp\0221\n\016thres"
-  "hold_info\030\004 \001(\0132\031.dmi.ThresholdInformati"
-  "on\022\020\n\010add_info\030\005 \001(\t\022/\n\021state_change_inf"
-  "o\030\006 \001(\0132\024.dmi.StateChangeInfo*\265\024\n\010EventI"
-  "ds\022\030\n\024EVENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TR"
-  "ANSCEIVER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVE"
-  "R_PLUG_IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
-  "_ABOVE_THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_"
-  "VOLTAGE_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANS"
-  "CEIVER_TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-"
-  "EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRE"
-  "SHOLD\020i\022-\n)EVENT_TRANSCEIVER_CURRENT_ABO"
-  "VE_THRESHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURR"
-  "ENT_BELOW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIV"
-  "ER_RX_POWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_T"
-  "RANSCEIVER_RX_POWER_BELOW_THRESHOLD\020m\022.\n"
-  "*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESH"
-  "OLD\020n\022.\n*EVENT_TRANSCEIVER_TX_POWER_BELO"
-  "W_THRESHOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILU"
-  "RE\020p\0227\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
-  "THRESHOLD_RECOVERED\020q\0227\n3EVENT_TRANSCEIV"
-  "ER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\020r\022;"
-  "\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_TH"
-  "RESHOLD_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER"
-  "_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\020t"
-  "\0227\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
-  "SHOLD_RECOVERED\020u\0227\n3EVENT_TRANSCEIVER_C"
-  "URRENT_BELOW_THRESHOLD_RECOVERED\020v\0228\n4EV"
-  "ENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD"
-  "_RECOVERED\020w\0228\n4EVENT_TRANSCEIVER_RX_POW"
-  "ER_BELOW_THRESHOLD_RECOVERED\020x\0228\n4EVENT_"
-  "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_REC"
-  "OVERED\020y\0228\n4EVENT_TRANSCEIVER_TX_POWER_B"
-  "ELOW_THRESHOLD_RECOVERED\020z\022\'\n#EVENT_TRAN"
-  "SCEIVER_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU"
-  "_PLUG_OUT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021"
-  "EVENT_PSU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILUR"
-  "E_RECOVERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027"
-  "\n\022EVENT_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLU"
-  "G_IN\020\256\002\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257"
-  "\002\022)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICA"
-  "L\020\220\003\022&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATA"
-  "L\020\221\003\0223\n.EVENT_CPU_TEMPERATURE_ABOVE_CRIT"
-  "ICAL_RECOVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATU"
-  "RE_ABOVE_FATAL_RECOVERED\020\223\003\022$\n\037EVENT_CPU"
-  "_USAGE_ABOVE_THRESHOLD\020\224\003\022.\n)EVENT_CPU_U"
-  "SAGE_ABOVE_THRESHOLD_RECOVERED\020\225\003\022\032\n\025EVE"
-  "NT_HW_DEVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE"
-  "_TEMPERATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_"
-  "HW_DEVICE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4"
-  "EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITIC"
-  "AL_RECOVERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPE"
-  "RATURE_ABOVE_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT"
-  "_HW_DEVICE_REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERA"
-  "TURE_SENSOR_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TE"
-  "MPERATURE_SENSORS_FAILED\020\373\003\022(\n#EVENT_HW_"
-  "DISK_USAGE_ABOVE_THRESHOLD\020\374\003\0222\n-EVENT_H"
-  "W_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\020\375"
-  "\003\022*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHO"
-  "LD\020\376\003\0224\n/EVENT_HW_MEMORY_USAGE_ABOVE_THR"
-  "ESHOLD_RECOVERED\020\377\003\022\036\n\031EVENT_HW_NTP_SYNC"
-  "_FAILURE\020\200\004\022(\n#EVENT_HW_NTP_SYNC_FAILURE"
-  "_RECOVERED\020\201\004\022\035\n\030EVENT_LINE_CARD_PLUG_OU"
-  "T\020\330\004\022\034\n\027EVENT_LINE_CARD_PLUG_IN\020\331\004\022(\n#EV"
-  "ENT_COMPONENT_ADMIN_STATE_CHANGED\020\274\005\022\'\n\""
-  "EVENT_COMPONENT_OPER_STATE_CHANGED\020\275\005\022(\n"
-  "#EVENT_COMPONENT_ALARM_STATE_CHANGED\020\276\005\022"
-  "(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\020\277"
-  "\005\022*\n%EVENT_COMPONENT_STANDBY_STATE_CHANG"
-  "ED\020\300\0052\355\001\n\035NativeEventsManagementService\022"
-  "6\n\nListEvents\022\017.dmi.HardwareID\032\027.dmi.Lis"
-  "tEventsResponse\022^\n\031UpdateEventsConfigura"
-  "tion\022\037.dmi.EventsConfigurationRequest\032 ."
-  "dmi.EventsConfigurationResponse\0224\n\014Strea"
-  "mEvents\022\026.google.protobuf.Empty\032\n.dmi.Ev"
-  "ent0\001B;Z9github.com/opencord/device-mana"
-  "gement-interface/v3/go/dmib\006proto3"
+  "\000B\016\n\014state_change\"\333\001\n\020GenericEventInfo\022\017"
+  "\n\007message\030\001 \001(\t\022\024\n\014message_code\030\002 \001(\t\0225\n"
+  "\010severity\030\003 \001(\0162#.dmi.GenericEventInfo.E"
+  "ventSeverity\"i\n\rEventSeverity\022\036\n\032EVENT_S"
+  "EVERITY_UNSPECIFIED\020\000\022\014\n\010CRITICAL\020\001\022\t\n\005M"
+  "AJOR\020\002\022\t\n\005MINOR\020\003\022\n\n\006NORMAL\020\004\022\010\n\004INFO\020\005\""
+  "\254\002\n\005Event\022*\n\016event_metadata\030\001 \001(\0132\022.dmi."
+  "EventMetaData\022\037\n\010event_id\030\002 \001(\0162\r.dmi.Ev"
+  "entIds\022-\n\traised_ts\030\003 \001(\0132\032.google.proto"
+  "buf.Timestamp\0221\n\016threshold_info\030\004 \001(\0132\031."
+  "dmi.ThresholdInformation\022\020\n\010add_info\030\005 \001"
+  "(\t\022/\n\021state_change_info\030\006 \001(\0132\024.dmi.Stat"
+  "eChangeInfo\0221\n\022generic_event_info\030\007 \001(\0132"
+  "\025.dmi.GenericEventInfo*\331\024\n\010EventIds\022\030\n\024E"
+  "VENT_NAME_UNDEFINED\020\000\022\036\n\032EVENT_TRANSCEIV"
+  "ER_PLUG_OUT\020d\022\035\n\031EVENT_TRANSCEIVER_PLUG_"
+  "IN\020e\022-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_"
+  "THRESHOLD\020f\022-\n)EVENT_TRANSCEIVER_VOLTAGE"
+  "_BELOW_THRESHOLD\020g\0221\n-EVENT_TRANSCEIVER_"
+  "TEMPERATURE_ABOVE_THRESHOLD\020h\0221\n-EVENT_T"
+  "RANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\020i"
+  "\022-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRE"
+  "SHOLD\020j\022-\n)EVENT_TRANSCEIVER_CURRENT_BEL"
+  "OW_THRESHOLD\020k\022.\n*EVENT_TRANSCEIVER_RX_P"
+  "OWER_ABOVE_THRESHOLD\020l\022.\n*EVENT_TRANSCEI"
+  "VER_RX_POWER_BELOW_THRESHOLD\020m\022.\n*EVENT_"
+  "TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\020n\022."
+  "\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRES"
+  "HOLD\020o\022\035\n\031EVENT_TRANSCEIVER_FAILURE\020p\0227\n"
+  "3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHO"
+  "LD_RECOVERED\020q\0227\n3EVENT_TRANSCEIVER_VOLT"
+  "AGE_BELOW_THRESHOLD_RECOVERED\020r\022;\n7EVENT"
+  "_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD"
+  "_RECOVERED\020s\022;\n7EVENT_TRANSCEIVER_TEMPER"
+  "ATURE_BELOW_THRESHOLD_RECOVERED\020t\0227\n3EVE"
+  "NT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_R"
+  "ECOVERED\020u\0227\n3EVENT_TRANSCEIVER_CURRENT_"
+  "BELOW_THRESHOLD_RECOVERED\020v\0228\n4EVENT_TRA"
+  "NSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVE"
+  "RED\020w\0228\n4EVENT_TRANSCEIVER_RX_POWER_BELO"
+  "W_THRESHOLD_RECOVERED\020x\0228\n4EVENT_TRANSCE"
+  "IVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\020"
+  "y\0228\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_TH"
+  "RESHOLD_RECOVERED\020z\022\'\n#EVENT_TRANSCEIVER"
+  "_FAILURE_RECOVERED\020{\022\027\n\022EVENT_PSU_PLUG_O"
+  "UT\020\310\001\022\026\n\021EVENT_PSU_PLUG_IN\020\311\001\022\026\n\021EVENT_P"
+  "SU_FAILURE\020\312\001\022 \n\033EVENT_PSU_FAILURE_RECOV"
+  "ERED\020\313\001\022\026\n\021EVENT_FAN_FAILURE\020\254\002\022\027\n\022EVENT"
+  "_FAN_PLUG_OUT\020\255\002\022\026\n\021EVENT_FAN_PLUG_IN\020\256\002"
+  "\022 \n\033EVENT_FAN_FAILURE_RECOVERED\020\257\002\022)\n$EV"
+  "ENT_CPU_TEMPERATURE_ABOVE_CRITICAL\020\220\003\022&\n"
+  "!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\020\221\003\0223\n"
+  ".EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RE"
+  "COVERED\020\222\003\0220\n+EVENT_CPU_TEMPERATURE_ABOV"
+  "E_FATAL_RECOVERED\020\223\003\022$\n\037EVENT_CPU_USAGE_"
+  "ABOVE_THRESHOLD\020\224\003\022.\n)EVENT_CPU_USAGE_AB"
+  "OVE_THRESHOLD_RECOVERED\020\225\003\022\032\n\025EVENT_HW_D"
+  "EVICE_RESET\020\364\003\022/\n*EVENT_HW_DEVICE_TEMPER"
+  "ATURE_ABOVE_CRITICAL\020\365\003\022,\n\'EVENT_HW_DEVI"
+  "CE_TEMPERATURE_ABOVE_FATAL\020\366\003\0229\n4EVENT_H"
+  "W_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECO"
+  "VERED\020\367\003\0226\n1EVENT_HW_DEVICE_TEMPERATURE_"
+  "ABOVE_FATAL_RECOVERED\020\370\003\022\033\n\026EVENT_HW_DEV"
+  "ICE_REBOOT\020\371\003\022\'\n\"EVENT_HW_TEMPERATURE_SE"
+  "NSOR_FAILED\020\372\003\022,\n\'EVENT_HW_ALL_TEMPERATU"
+  "RE_SENSORS_FAILED\020\373\003\022(\n#EVENT_HW_DISK_US"
+  "AGE_ABOVE_THRESHOLD\020\374\003\0222\n-EVENT_HW_DISK_"
+  "USAGE_ABOVE_THRESHOLD_RECOVERED\020\375\003\022*\n%EV"
+  "ENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\020\376\003\0224"
+  "\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_"
+  "RECOVERED\020\377\003\022\036\n\031EVENT_HW_NTP_SYNC_FAILUR"
+  "E\020\200\004\022(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVE"
+  "RED\020\201\004\022\035\n\030EVENT_LINE_CARD_PLUG_OUT\020\330\004\022\034\n"
+  "\027EVENT_LINE_CARD_PLUG_IN\020\331\004\022(\n#EVENT_COM"
+  "PONENT_ADMIN_STATE_CHANGED\020\274\005\022\'\n\"EVENT_C"
+  "OMPONENT_OPER_STATE_CHANGED\020\275\005\022(\n#EVENT_"
+  "COMPONENT_ALARM_STATE_CHANGED\020\276\005\022(\n#EVEN"
+  "T_COMPONENT_USAGE_STATE_CHANGED\020\277\005\022*\n%EV"
+  "ENT_COMPONENT_STANDBY_STATE_CHANGED\020\300\005\022\""
+  "\n\035EVENT_COMPONENT_GENERIC_EVENT\020\301\0052\355\001\n\035N"
+  "ativeEventsManagementService\0226\n\nListEven"
+  "ts\022\017.dmi.HardwareID\032\027.dmi.ListEventsResp"
+  "onse\022^\n\031UpdateEventsConfiguration\022\037.dmi."
+  "EventsConfigurationRequest\032 .dmi.EventsC"
+  "onfigurationResponse\0224\n\014StreamEvents\022\026.g"
+  "oogle.protobuf.Empty\032\n.dmi.Event0\001B;Z9gi"
+  "thub.com/opencord/device-management-inte"
+  "rface/v3/go/dmib\006proto3"
   ;
 ::google::protobuf::internal::DescriptorTable descriptor_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto = {
   false, InitDefaults_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 
   descriptor_table_protodef_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto,
-  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 5434,
+  "dmi/hw_events_mgmt_service.proto", &assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto, 5743,
 };
 
 void AddDescriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto() {
@@ -791,10 +831,39 @@
 const EventsConfigurationResponse_Reason EventsConfigurationResponse::Reason_MAX;
 const int EventsConfigurationResponse::Reason_ARRAYSIZE;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
-const ::google::protobuf::EnumDescriptor* EventIds_descriptor() {
+const ::google::protobuf::EnumDescriptor* GenericEventInfo_EventSeverity_descriptor() {
   ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
   return file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[2];
 }
+bool GenericEventInfo_EventSeverity_IsValid(int value) {
+  switch (value) {
+    case 0:
+    case 1:
+    case 2:
+    case 3:
+    case 4:
+    case 5:
+      return true;
+    default:
+      return false;
+  }
+}
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const GenericEventInfo_EventSeverity GenericEventInfo::EVENT_SEVERITY_UNSPECIFIED;
+const GenericEventInfo_EventSeverity GenericEventInfo::CRITICAL;
+const GenericEventInfo_EventSeverity GenericEventInfo::MAJOR;
+const GenericEventInfo_EventSeverity GenericEventInfo::MINOR;
+const GenericEventInfo_EventSeverity GenericEventInfo::NORMAL;
+const GenericEventInfo_EventSeverity GenericEventInfo::INFO;
+const GenericEventInfo_EventSeverity GenericEventInfo::EventSeverity_MIN;
+const GenericEventInfo_EventSeverity GenericEventInfo::EventSeverity_MAX;
+const int GenericEventInfo::EventSeverity_ARRAYSIZE;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+const ::google::protobuf::EnumDescriptor* EventIds_descriptor() {
+  ::google::protobuf::internal::AssignDescriptors(&assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
+  return file_level_enum_descriptors_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[3];
+}
 bool EventIds_IsValid(int value) {
   switch (value) {
     case 0:
@@ -857,6 +926,7 @@
     case 702:
     case 703:
     case 704:
+    case 705:
       return true;
     default:
       return false;
@@ -7140,6 +7210,424 @@
 
 // ===================================================================
 
+void GenericEventInfo::InitAsDefaultInstance() {
+}
+class GenericEventInfo::HasBitSetters {
+ public:
+};
+
+#if !defined(_MSC_VER) || _MSC_VER >= 1900
+const int GenericEventInfo::kMessageFieldNumber;
+const int GenericEventInfo::kMessageCodeFieldNumber;
+const int GenericEventInfo::kSeverityFieldNumber;
+#endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
+
+GenericEventInfo::GenericEventInfo()
+  : ::google::protobuf::Message(), _internal_metadata_(nullptr) {
+  SharedCtor();
+  // @@protoc_insertion_point(constructor:dmi.GenericEventInfo)
+}
+GenericEventInfo::GenericEventInfo(const GenericEventInfo& from)
+  : ::google::protobuf::Message(),
+      _internal_metadata_(nullptr) {
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.message().size() > 0) {
+    message_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_);
+  }
+  message_code_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  if (from.message_code().size() > 0) {
+    message_code_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_code_);
+  }
+  severity_ = from.severity_;
+  // @@protoc_insertion_point(copy_constructor:dmi.GenericEventInfo)
+}
+
+void GenericEventInfo::SharedCtor() {
+  ::google::protobuf::internal::InitSCC(
+      &scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  message_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.UnsafeSetDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  severity_ = 0;
+}
+
+GenericEventInfo::~GenericEventInfo() {
+  // @@protoc_insertion_point(destructor:dmi.GenericEventInfo)
+  SharedDtor();
+}
+
+void GenericEventInfo::SharedDtor() {
+  message_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.DestroyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+
+void GenericEventInfo::SetCachedSize(int size) const {
+  _cached_size_.Set(size);
+}
+const GenericEventInfo& GenericEventInfo::default_instance() {
+  ::google::protobuf::internal::InitSCC(&::scc_info_GenericEventInfo_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto.base);
+  return *internal_default_instance();
+}
+
+
+void GenericEventInfo::Clear() {
+// @@protoc_insertion_point(message_clear_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  message_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  message_code_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+  severity_ = 0;
+  _internal_metadata_.Clear();
+}
+
+#if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+const char* GenericEventInfo::_InternalParse(const char* begin, const char* end, void* object,
+                  ::google::protobuf::internal::ParseContext* ctx) {
+  auto msg = static_cast<GenericEventInfo*>(object);
+  ::google::protobuf::int32 size; (void)size;
+  int depth; (void)depth;
+  ::google::protobuf::uint32 tag;
+  ::google::protobuf::internal::ParseFunc parser_till_end; (void)parser_till_end;
+  auto ptr = begin;
+  while (ptr < end) {
+    ptr = ::google::protobuf::io::Parse32(ptr, &tag);
+    GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+    switch (tag >> 3) {
+      // string message = 1;
+      case 1: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 10) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.GenericEventInfo.message");
+        object = msg->mutable_message();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // string message_code = 2;
+      case 2: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 18) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        ctx->extra_parse_data().SetFieldName("dmi.GenericEventInfo.message_code");
+        object = msg->mutable_message_code();
+        if (size > end - ptr + ::google::protobuf::internal::ParseContext::kSlopBytes) {
+          parser_till_end = ::google::protobuf::internal::GreedyStringParserUTF8;
+          goto string_till_end;
+        }
+        GOOGLE_PROTOBUF_PARSER_ASSERT(::google::protobuf::internal::StringCheckUTF8(ptr, size, ctx));
+        ::google::protobuf::internal::InlineGreedyStringParser(object, ptr, size, ctx);
+        ptr += size;
+        break;
+      }
+      // .dmi.GenericEventInfo.EventSeverity severity = 3;
+      case 3: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 24) goto handle_unusual;
+        ::google::protobuf::uint64 val = ::google::protobuf::internal::ReadVarint(&ptr);
+        msg->set_severity(static_cast<::dmi::GenericEventInfo_EventSeverity>(val));
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        break;
+      }
+      default: {
+      handle_unusual:
+        if ((tag & 7) == 4 || tag == 0) {
+          ctx->EndGroup(tag);
+          return ptr;
+        }
+        auto res = UnknownFieldParse(tag, {_InternalParse, msg},
+          ptr, end, msg->_internal_metadata_.mutable_unknown_fields(), ctx);
+        ptr = res.first;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr != nullptr);
+        if (res.second) return ptr;
+      }
+    }  // switch
+  }  // while
+  return ptr;
+string_till_end:
+  static_cast<::std::string*>(object)->clear();
+  static_cast<::std::string*>(object)->reserve(size);
+  goto len_delim_till_end;
+len_delim_till_end:
+  return ctx->StoreAndTailCall(ptr, end, {_InternalParse, msg},
+                               {parser_till_end, object}, size);
+}
+#else  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+bool GenericEventInfo::MergePartialFromCodedStream(
+    ::google::protobuf::io::CodedInputStream* input) {
+#define DO_(EXPRESSION) if (!PROTOBUF_PREDICT_TRUE(EXPRESSION)) goto failure
+  ::google::protobuf::uint32 tag;
+  // @@protoc_insertion_point(parse_start:dmi.GenericEventInfo)
+  for (;;) {
+    ::std::pair<::google::protobuf::uint32, bool> p = input->ReadTagWithCutoffNoLastTag(127u);
+    tag = p.first;
+    if (!p.second) goto handle_unusual;
+    switch (::google::protobuf::internal::WireFormatLite::GetTagFieldNumber(tag)) {
+      // string message = 1;
+      case 1: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (10 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_message()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->message().data(), static_cast<int>(this->message().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.GenericEventInfo.message"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // string message_code = 2;
+      case 2: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (18 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadString(
+                input, this->mutable_message_code()));
+          DO_(::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+            this->message_code().data(), static_cast<int>(this->message_code().length()),
+            ::google::protobuf::internal::WireFormatLite::PARSE,
+            "dmi.GenericEventInfo.message_code"));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      // .dmi.GenericEventInfo.EventSeverity severity = 3;
+      case 3: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (24 & 0xFF)) {
+          int value = 0;
+          DO_((::google::protobuf::internal::WireFormatLite::ReadPrimitive<
+                   int, ::google::protobuf::internal::WireFormatLite::TYPE_ENUM>(
+                 input, &value)));
+          set_severity(static_cast< ::dmi::GenericEventInfo_EventSeverity >(value));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
+      default: {
+      handle_unusual:
+        if (tag == 0) {
+          goto success;
+        }
+        DO_(::google::protobuf::internal::WireFormat::SkipField(
+              input, tag, _internal_metadata_.mutable_unknown_fields()));
+        break;
+      }
+    }
+  }
+success:
+  // @@protoc_insertion_point(parse_success:dmi.GenericEventInfo)
+  return true;
+failure:
+  // @@protoc_insertion_point(parse_failure:dmi.GenericEventInfo)
+  return false;
+#undef DO_
+}
+#endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+
+void GenericEventInfo::SerializeWithCachedSizes(
+    ::google::protobuf::io::CodedOutputStream* output) const {
+  // @@protoc_insertion_point(serialize_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message().data(), static_cast<int>(this->message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      1, this->message(), output);
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message_code().data(), static_cast<int>(this->message_code().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message_code");
+    ::google::protobuf::internal::WireFormatLite::WriteStringMaybeAliased(
+      2, this->message_code(), output);
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    ::google::protobuf::internal::WireFormatLite::WriteEnum(
+      3, this->severity(), output);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
+        _internal_metadata_.unknown_fields(), output);
+  }
+  // @@protoc_insertion_point(serialize_end:dmi.GenericEventInfo)
+}
+
+::google::protobuf::uint8* GenericEventInfo::InternalSerializeWithCachedSizesToArray(
+    ::google::protobuf::uint8* target) const {
+  // @@protoc_insertion_point(serialize_to_array_start:dmi.GenericEventInfo)
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message().data(), static_cast<int>(this->message().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        1, this->message(), target);
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    ::google::protobuf::internal::WireFormatLite::VerifyUtf8String(
+      this->message_code().data(), static_cast<int>(this->message_code().length()),
+      ::google::protobuf::internal::WireFormatLite::SERIALIZE,
+      "dmi.GenericEventInfo.message_code");
+    target =
+      ::google::protobuf::internal::WireFormatLite::WriteStringToArray(
+        2, this->message_code(), target);
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    target = ::google::protobuf::internal::WireFormatLite::WriteEnumToArray(
+      3, this->severity(), target);
+  }
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
+        _internal_metadata_.unknown_fields(), target);
+  }
+  // @@protoc_insertion_point(serialize_to_array_end:dmi.GenericEventInfo)
+  return target;
+}
+
+size_t GenericEventInfo::ByteSizeLong() const {
+// @@protoc_insertion_point(message_byte_size_start:dmi.GenericEventInfo)
+  size_t total_size = 0;
+
+  if (_internal_metadata_.have_unknown_fields()) {
+    total_size +=
+      ::google::protobuf::internal::WireFormat::ComputeUnknownFieldsSize(
+        _internal_metadata_.unknown_fields());
+  }
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  // Prevent compiler warnings about cached_has_bits being unused
+  (void) cached_has_bits;
+
+  // string message = 1;
+  if (this->message().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->message());
+  }
+
+  // string message_code = 2;
+  if (this->message_code().size() > 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::StringSize(
+        this->message_code());
+  }
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  if (this->severity() != 0) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::EnumSize(this->severity());
+  }
+
+  int cached_size = ::google::protobuf::internal::ToCachedSize(total_size);
+  SetCachedSize(cached_size);
+  return total_size;
+}
+
+void GenericEventInfo::MergeFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_merge_from_start:dmi.GenericEventInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  const GenericEventInfo* source =
+      ::google::protobuf::DynamicCastToGenerated<GenericEventInfo>(
+          &from);
+  if (source == nullptr) {
+  // @@protoc_insertion_point(generalized_merge_from_cast_fail:dmi.GenericEventInfo)
+    ::google::protobuf::internal::ReflectionOps::Merge(from, this);
+  } else {
+  // @@protoc_insertion_point(generalized_merge_from_cast_success:dmi.GenericEventInfo)
+    MergeFrom(*source);
+  }
+}
+
+void GenericEventInfo::MergeFrom(const GenericEventInfo& from) {
+// @@protoc_insertion_point(class_specific_merge_from_start:dmi.GenericEventInfo)
+  GOOGLE_DCHECK_NE(&from, this);
+  _internal_metadata_.MergeFrom(from._internal_metadata_);
+  ::google::protobuf::uint32 cached_has_bits = 0;
+  (void) cached_has_bits;
+
+  if (from.message().size() > 0) {
+
+    message_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_);
+  }
+  if (from.message_code().size() > 0) {
+
+    message_code_.AssignWithDefault(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), from.message_code_);
+  }
+  if (from.severity() != 0) {
+    set_severity(from.severity());
+  }
+}
+
+void GenericEventInfo::CopyFrom(const ::google::protobuf::Message& from) {
+// @@protoc_insertion_point(generalized_copy_from_start:dmi.GenericEventInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+void GenericEventInfo::CopyFrom(const GenericEventInfo& from) {
+// @@protoc_insertion_point(class_specific_copy_from_start:dmi.GenericEventInfo)
+  if (&from == this) return;
+  Clear();
+  MergeFrom(from);
+}
+
+bool GenericEventInfo::IsInitialized() const {
+  return true;
+}
+
+void GenericEventInfo::Swap(GenericEventInfo* other) {
+  if (other == this) return;
+  InternalSwap(other);
+}
+void GenericEventInfo::InternalSwap(GenericEventInfo* other) {
+  using std::swap;
+  _internal_metadata_.Swap(&other->_internal_metadata_);
+  message_.Swap(&other->message_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  message_code_.Swap(&other->message_code_, &::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+    GetArenaNoVirtual());
+  swap(severity_, other->severity_);
+}
+
+::google::protobuf::Metadata GenericEventInfo::GetMetadata() const {
+  ::google::protobuf::internal::AssignDescriptors(&::assign_descriptors_table_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto);
+  return ::file_level_metadata_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto[kIndexInFileMessages];
+}
+
+
+// ===================================================================
+
 void Event::InitAsDefaultInstance() {
   ::dmi::_Event_default_instance_._instance.get_mutable()->event_metadata_ = const_cast< ::dmi::EventMetaData*>(
       ::dmi::EventMetaData::internal_default_instance());
@@ -7149,6 +7637,8 @@
       ::dmi::ThresholdInformation::internal_default_instance());
   ::dmi::_Event_default_instance_._instance.get_mutable()->state_change_info_ = const_cast< ::dmi::StateChangeInfo*>(
       ::dmi::StateChangeInfo::internal_default_instance());
+  ::dmi::_Event_default_instance_._instance.get_mutable()->generic_event_info_ = const_cast< ::dmi::GenericEventInfo*>(
+      ::dmi::GenericEventInfo::internal_default_instance());
 }
 class Event::HasBitSetters {
  public:
@@ -7156,6 +7646,7 @@
   static const ::google::protobuf::Timestamp& raised_ts(const Event* msg);
   static const ::dmi::ThresholdInformation& threshold_info(const Event* msg);
   static const ::dmi::StateChangeInfo& state_change_info(const Event* msg);
+  static const ::dmi::GenericEventInfo& generic_event_info(const Event* msg);
 };
 
 const ::dmi::EventMetaData&
@@ -7174,6 +7665,10 @@
 Event::HasBitSetters::state_change_info(const Event* msg) {
   return *msg->state_change_info_;
 }
+const ::dmi::GenericEventInfo&
+Event::HasBitSetters::generic_event_info(const Event* msg) {
+  return *msg->generic_event_info_;
+}
 void Event::clear_raised_ts() {
   if (GetArenaNoVirtual() == nullptr && raised_ts_ != nullptr) {
     delete raised_ts_;
@@ -7187,6 +7682,7 @@
 const int Event::kThresholdInfoFieldNumber;
 const int Event::kAddInfoFieldNumber;
 const int Event::kStateChangeInfoFieldNumber;
+const int Event::kGenericEventInfoFieldNumber;
 #endif  // !defined(_MSC_VER) || _MSC_VER >= 1900
 
 Event::Event()
@@ -7222,6 +7718,11 @@
   } else {
     state_change_info_ = nullptr;
   }
+  if (from.has_generic_event_info()) {
+    generic_event_info_ = new ::dmi::GenericEventInfo(*from.generic_event_info_);
+  } else {
+    generic_event_info_ = nullptr;
+  }
   event_id_ = from.event_id_;
   // @@protoc_insertion_point(copy_constructor:dmi.Event)
 }
@@ -7246,6 +7747,7 @@
   if (this != internal_default_instance()) delete raised_ts_;
   if (this != internal_default_instance()) delete threshold_info_;
   if (this != internal_default_instance()) delete state_change_info_;
+  if (this != internal_default_instance()) delete generic_event_info_;
 }
 
 void Event::SetCachedSize(int size) const {
@@ -7280,6 +7782,10 @@
     delete state_change_info_;
   }
   state_change_info_ = nullptr;
+  if (GetArenaNoVirtual() == nullptr && generic_event_info_ != nullptr) {
+    delete generic_event_info_;
+  }
+  generic_event_info_ = nullptr;
   event_id_ = 0;
   _internal_metadata_.Clear();
 }
@@ -7373,6 +7879,19 @@
             {parser_till_end, object}, ptr - size, ptr));
         break;
       }
+      // .dmi.GenericEventInfo generic_event_info = 7;
+      case 7: {
+        if (static_cast<::google::protobuf::uint8>(tag) != 58) goto handle_unusual;
+        ptr = ::google::protobuf::io::ReadSize(ptr, &size);
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ptr);
+        parser_till_end = ::dmi::GenericEventInfo::_InternalParse;
+        object = msg->mutable_generic_event_info();
+        if (size > end - ptr) goto len_delim_till_end;
+        ptr += size;
+        GOOGLE_PROTOBUF_PARSER_ASSERT(ctx->ParseExactRange(
+            {parser_till_end, object}, ptr - size, ptr));
+        break;
+      }
       default: {
       handle_unusual:
         if ((tag & 7) == 4 || tag == 0) {
@@ -7480,6 +7999,17 @@
         break;
       }
 
+      // .dmi.GenericEventInfo generic_event_info = 7;
+      case 7: {
+        if (static_cast< ::google::protobuf::uint8>(tag) == (58 & 0xFF)) {
+          DO_(::google::protobuf::internal::WireFormatLite::ReadMessage(
+               input, mutable_generic_event_info()));
+        } else {
+          goto handle_unusual;
+        }
+        break;
+      }
+
       default: {
       handle_unusual:
         if (tag == 0) {
@@ -7547,6 +8077,12 @@
       6, HasBitSetters::state_change_info(this), output);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    ::google::protobuf::internal::WireFormatLite::WriteMessageMaybeToArray(
+      7, HasBitSetters::generic_event_info(this), output);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     ::google::protobuf::internal::WireFormat::SerializeUnknownFields(
         _internal_metadata_.unknown_fields(), output);
@@ -7605,6 +8141,13 @@
         6, HasBitSetters::state_change_info(this), target);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    target = ::google::protobuf::internal::WireFormatLite::
+      InternalWriteMessageToArray(
+        7, HasBitSetters::generic_event_info(this), target);
+  }
+
   if (_internal_metadata_.have_unknown_fields()) {
     target = ::google::protobuf::internal::WireFormat::SerializeUnknownFieldsToArray(
         _internal_metadata_.unknown_fields(), target);
@@ -7661,6 +8204,13 @@
         *state_change_info_);
   }
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  if (this->has_generic_event_info()) {
+    total_size += 1 +
+      ::google::protobuf::internal::WireFormatLite::MessageSize(
+        *generic_event_info_);
+  }
+
   // .dmi.EventIds event_id = 2;
   if (this->event_id() != 0) {
     total_size += 1 +
@@ -7710,6 +8260,9 @@
   if (from.has_state_change_info()) {
     mutable_state_change_info()->::dmi::StateChangeInfo::MergeFrom(from.state_change_info());
   }
+  if (from.has_generic_event_info()) {
+    mutable_generic_event_info()->::dmi::GenericEventInfo::MergeFrom(from.generic_event_info());
+  }
   if (from.event_id() != 0) {
     set_event_id(from.event_id());
   }
@@ -7746,6 +8299,7 @@
   swap(raised_ts_, other->raised_ts_);
   swap(threshold_info_, other->threshold_info_);
   swap(state_change_info_, other->state_change_info_);
+  swap(generic_event_info_, other->generic_event_info_);
   swap(event_id_, other->event_id_);
 }
 
@@ -7807,6 +8361,9 @@
 template<> PROTOBUF_NOINLINE ::dmi::StateChangeInfo* Arena::CreateMaybeMessage< ::dmi::StateChangeInfo >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::StateChangeInfo >(arena);
 }
+template<> PROTOBUF_NOINLINE ::dmi::GenericEventInfo* Arena::CreateMaybeMessage< ::dmi::GenericEventInfo >(Arena* arena) {
+  return Arena::CreateInternal< ::dmi::GenericEventInfo >(arena);
+}
 template<> PROTOBUF_NOINLINE ::dmi::Event* Arena::CreateMaybeMessage< ::dmi::Event >(Arena* arena) {
   return Arena::CreateInternal< ::dmi::Event >(arena);
 }
diff --git a/cpp/dmi/hw_events_mgmt_service.pb.h b/cpp/dmi/hw_events_mgmt_service.pb.h
index 7e3e8bd..b4e0463 100644
--- a/cpp/dmi/hw_events_mgmt_service.pb.h
+++ b/cpp/dmi/hw_events_mgmt_service.pb.h
@@ -46,7 +46,7 @@
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::AuxillaryParseTableField aux[]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
-  static const ::google::protobuf::internal::ParseTable schema[17]
+  static const ::google::protobuf::internal::ParseTable schema[18]
     PROTOBUF_SECTION_VARIABLE(protodesc_cold);
   static const ::google::protobuf::internal::FieldMetadata field_metadata[];
   static const ::google::protobuf::internal::SerializationTable serialization_table[];
@@ -78,6 +78,9 @@
 class EventsConfigurationResponse;
 class EventsConfigurationResponseDefaultTypeInternal;
 extern EventsConfigurationResponseDefaultTypeInternal _EventsConfigurationResponse_default_instance_;
+class GenericEventInfo;
+class GenericEventInfoDefaultTypeInternal;
+extern GenericEventInfoDefaultTypeInternal _GenericEventInfo_default_instance_;
 class ListEventsResponse;
 class ListEventsResponseDefaultTypeInternal;
 extern ListEventsResponseDefaultTypeInternal _ListEventsResponse_default_instance_;
@@ -116,6 +119,7 @@
 template<> ::dmi::EventsCfg* Arena::CreateMaybeMessage<::dmi::EventsCfg>(Arena*);
 template<> ::dmi::EventsConfigurationRequest* Arena::CreateMaybeMessage<::dmi::EventsConfigurationRequest>(Arena*);
 template<> ::dmi::EventsConfigurationResponse* Arena::CreateMaybeMessage<::dmi::EventsConfigurationResponse>(Arena*);
+template<> ::dmi::GenericEventInfo* Arena::CreateMaybeMessage<::dmi::GenericEventInfo>(Arena*);
 template<> ::dmi::ListEventsResponse* Arena::CreateMaybeMessage<::dmi::ListEventsResponse>(Arena*);
 template<> ::dmi::OperStateChange* Arena::CreateMaybeMessage<::dmi::OperStateChange>(Arena*);
 template<> ::dmi::StandbyStateChange* Arena::CreateMaybeMessage<::dmi::StandbyStateChange>(Arena*);
@@ -176,6 +180,31 @@
   return ::google::protobuf::internal::ParseNamedEnum<EventsConfigurationResponse_Reason>(
     EventsConfigurationResponse_Reason_descriptor(), name, value);
 }
+enum GenericEventInfo_EventSeverity {
+  GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED = 0,
+  GenericEventInfo_EventSeverity_CRITICAL = 1,
+  GenericEventInfo_EventSeverity_MAJOR = 2,
+  GenericEventInfo_EventSeverity_MINOR = 3,
+  GenericEventInfo_EventSeverity_NORMAL = 4,
+  GenericEventInfo_EventSeverity_INFO = 5,
+  GenericEventInfo_EventSeverity_GenericEventInfo_EventSeverity_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
+  GenericEventInfo_EventSeverity_GenericEventInfo_EventSeverity_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
+};
+bool GenericEventInfo_EventSeverity_IsValid(int value);
+const GenericEventInfo_EventSeverity GenericEventInfo_EventSeverity_EventSeverity_MIN = GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED;
+const GenericEventInfo_EventSeverity GenericEventInfo_EventSeverity_EventSeverity_MAX = GenericEventInfo_EventSeverity_INFO;
+const int GenericEventInfo_EventSeverity_EventSeverity_ARRAYSIZE = GenericEventInfo_EventSeverity_EventSeverity_MAX + 1;
+
+const ::google::protobuf::EnumDescriptor* GenericEventInfo_EventSeverity_descriptor();
+inline const ::std::string& GenericEventInfo_EventSeverity_Name(GenericEventInfo_EventSeverity value) {
+  return ::google::protobuf::internal::NameOfEnum(
+    GenericEventInfo_EventSeverity_descriptor(), value);
+}
+inline bool GenericEventInfo_EventSeverity_Parse(
+    const ::std::string& name, GenericEventInfo_EventSeverity* value) {
+  return ::google::protobuf::internal::ParseNamedEnum<GenericEventInfo_EventSeverity>(
+    GenericEventInfo_EventSeverity_descriptor(), name, value);
+}
 enum EventIds {
   EVENT_NAME_UNDEFINED = 0,
   EVENT_TRANSCEIVER_PLUG_OUT = 100,
@@ -237,12 +266,13 @@
   EVENT_COMPONENT_ALARM_STATE_CHANGED = 702,
   EVENT_COMPONENT_USAGE_STATE_CHANGED = 703,
   EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704,
+  EVENT_COMPONENT_GENERIC_EVENT = 705,
   EventIds_INT_MIN_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::min(),
   EventIds_INT_MAX_SENTINEL_DO_NOT_USE_ = std::numeric_limits<::google::protobuf::int32>::max()
 };
 bool EventIds_IsValid(int value);
 const EventIds EventIds_MIN = EVENT_NAME_UNDEFINED;
-const EventIds EventIds_MAX = EVENT_COMPONENT_STANDBY_STATE_CHANGED;
+const EventIds EventIds_MAX = EVENT_COMPONENT_GENERIC_EVENT;
 const int EventIds_ARRAYSIZE = EventIds_MAX + 1;
 
 const ::google::protobuf::EnumDescriptor* EventIds_descriptor();
@@ -2476,6 +2506,182 @@
 };
 // -------------------------------------------------------------------
 
+class GenericEventInfo final :
+    public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.GenericEventInfo) */ {
+ public:
+  GenericEventInfo();
+  virtual ~GenericEventInfo();
+
+  GenericEventInfo(const GenericEventInfo& from);
+
+  inline GenericEventInfo& operator=(const GenericEventInfo& from) {
+    CopyFrom(from);
+    return *this;
+  }
+  #if LANG_CXX11
+  GenericEventInfo(GenericEventInfo&& from) noexcept
+    : GenericEventInfo() {
+    *this = ::std::move(from);
+  }
+
+  inline GenericEventInfo& operator=(GenericEventInfo&& from) noexcept {
+    if (GetArenaNoVirtual() == from.GetArenaNoVirtual()) {
+      if (this != &from) InternalSwap(&from);
+    } else {
+      CopyFrom(from);
+    }
+    return *this;
+  }
+  #endif
+  static const ::google::protobuf::Descriptor* descriptor() {
+    return default_instance().GetDescriptor();
+  }
+  static const GenericEventInfo& default_instance();
+
+  static void InitAsDefaultInstance();  // FOR INTERNAL USE ONLY
+  static inline const GenericEventInfo* internal_default_instance() {
+    return reinterpret_cast<const GenericEventInfo*>(
+               &_GenericEventInfo_default_instance_);
+  }
+  static constexpr int kIndexInFileMessages =
+    16;
+
+  void Swap(GenericEventInfo* other);
+  friend void swap(GenericEventInfo& a, GenericEventInfo& b) {
+    a.Swap(&b);
+  }
+
+  // implements Message ----------------------------------------------
+
+  inline GenericEventInfo* New() const final {
+    return CreateMaybeMessage<GenericEventInfo>(nullptr);
+  }
+
+  GenericEventInfo* New(::google::protobuf::Arena* arena) const final {
+    return CreateMaybeMessage<GenericEventInfo>(arena);
+  }
+  void CopyFrom(const ::google::protobuf::Message& from) final;
+  void MergeFrom(const ::google::protobuf::Message& from) final;
+  void CopyFrom(const GenericEventInfo& from);
+  void MergeFrom(const GenericEventInfo& from);
+  PROTOBUF_ATTRIBUTE_REINITIALIZES void Clear() final;
+  bool IsInitialized() const final;
+
+  size_t ByteSizeLong() const final;
+  #if GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  static const char* _InternalParse(const char* begin, const char* end, void* object, ::google::protobuf::internal::ParseContext* ctx);
+  ::google::protobuf::internal::ParseFunc _ParseFunc() const final { return _InternalParse; }
+  #else
+  bool MergePartialFromCodedStream(
+      ::google::protobuf::io::CodedInputStream* input) final;
+  #endif  // GOOGLE_PROTOBUF_ENABLE_EXPERIMENTAL_PARSER
+  void SerializeWithCachedSizes(
+      ::google::protobuf::io::CodedOutputStream* output) const final;
+  ::google::protobuf::uint8* InternalSerializeWithCachedSizesToArray(
+      ::google::protobuf::uint8* target) const final;
+  int GetCachedSize() const final { return _cached_size_.Get(); }
+
+  private:
+  void SharedCtor();
+  void SharedDtor();
+  void SetCachedSize(int size) const final;
+  void InternalSwap(GenericEventInfo* other);
+  private:
+  inline ::google::protobuf::Arena* GetArenaNoVirtual() const {
+    return nullptr;
+  }
+  inline void* MaybeArenaPtr() const {
+    return nullptr;
+  }
+  public:
+
+  ::google::protobuf::Metadata GetMetadata() const final;
+
+  // nested types ----------------------------------------------------
+
+  typedef GenericEventInfo_EventSeverity EventSeverity;
+  static const EventSeverity EVENT_SEVERITY_UNSPECIFIED =
+    GenericEventInfo_EventSeverity_EVENT_SEVERITY_UNSPECIFIED;
+  static const EventSeverity CRITICAL =
+    GenericEventInfo_EventSeverity_CRITICAL;
+  static const EventSeverity MAJOR =
+    GenericEventInfo_EventSeverity_MAJOR;
+  static const EventSeverity MINOR =
+    GenericEventInfo_EventSeverity_MINOR;
+  static const EventSeverity NORMAL =
+    GenericEventInfo_EventSeverity_NORMAL;
+  static const EventSeverity INFO =
+    GenericEventInfo_EventSeverity_INFO;
+  static inline bool EventSeverity_IsValid(int value) {
+    return GenericEventInfo_EventSeverity_IsValid(value);
+  }
+  static const EventSeverity EventSeverity_MIN =
+    GenericEventInfo_EventSeverity_EventSeverity_MIN;
+  static const EventSeverity EventSeverity_MAX =
+    GenericEventInfo_EventSeverity_EventSeverity_MAX;
+  static const int EventSeverity_ARRAYSIZE =
+    GenericEventInfo_EventSeverity_EventSeverity_ARRAYSIZE;
+  static inline const ::google::protobuf::EnumDescriptor*
+  EventSeverity_descriptor() {
+    return GenericEventInfo_EventSeverity_descriptor();
+  }
+  static inline const ::std::string& EventSeverity_Name(EventSeverity value) {
+    return GenericEventInfo_EventSeverity_Name(value);
+  }
+  static inline bool EventSeverity_Parse(const ::std::string& name,
+      EventSeverity* value) {
+    return GenericEventInfo_EventSeverity_Parse(name, value);
+  }
+
+  // accessors -------------------------------------------------------
+
+  // string message = 1;
+  void clear_message();
+  static const int kMessageFieldNumber = 1;
+  const ::std::string& message() const;
+  void set_message(const ::std::string& value);
+  #if LANG_CXX11
+  void set_message(::std::string&& value);
+  #endif
+  void set_message(const char* value);
+  void set_message(const char* value, size_t size);
+  ::std::string* mutable_message();
+  ::std::string* release_message();
+  void set_allocated_message(::std::string* message);
+
+  // string message_code = 2;
+  void clear_message_code();
+  static const int kMessageCodeFieldNumber = 2;
+  const ::std::string& message_code() const;
+  void set_message_code(const ::std::string& value);
+  #if LANG_CXX11
+  void set_message_code(::std::string&& value);
+  #endif
+  void set_message_code(const char* value);
+  void set_message_code(const char* value, size_t size);
+  ::std::string* mutable_message_code();
+  ::std::string* release_message_code();
+  void set_allocated_message_code(::std::string* message_code);
+
+  // .dmi.GenericEventInfo.EventSeverity severity = 3;
+  void clear_severity();
+  static const int kSeverityFieldNumber = 3;
+  ::dmi::GenericEventInfo_EventSeverity severity() const;
+  void set_severity(::dmi::GenericEventInfo_EventSeverity value);
+
+  // @@protoc_insertion_point(class_scope:dmi.GenericEventInfo)
+ private:
+  class HasBitSetters;
+
+  ::google::protobuf::internal::InternalMetadataWithArena _internal_metadata_;
+  ::google::protobuf::internal::ArenaStringPtr message_;
+  ::google::protobuf::internal::ArenaStringPtr message_code_;
+  int severity_;
+  mutable ::google::protobuf::internal::CachedSize _cached_size_;
+  friend struct ::TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
+};
+// -------------------------------------------------------------------
+
 class Event final :
     public ::google::protobuf::Message /* @@protoc_insertion_point(class_definition:dmi.Event) */ {
  public:
@@ -2514,7 +2720,7 @@
                &_Event_default_instance_);
   }
   static constexpr int kIndexInFileMessages =
-    16;
+    17;
 
   void Swap(Event* other);
   friend void swap(Event& a, Event& b) {
@@ -2621,6 +2827,15 @@
   ::dmi::StateChangeInfo* mutable_state_change_info();
   void set_allocated_state_change_info(::dmi::StateChangeInfo* state_change_info);
 
+  // .dmi.GenericEventInfo generic_event_info = 7;
+  bool has_generic_event_info() const;
+  void clear_generic_event_info();
+  static const int kGenericEventInfoFieldNumber = 7;
+  const ::dmi::GenericEventInfo& generic_event_info() const;
+  ::dmi::GenericEventInfo* release_generic_event_info();
+  ::dmi::GenericEventInfo* mutable_generic_event_info();
+  void set_allocated_generic_event_info(::dmi::GenericEventInfo* generic_event_info);
+
   // .dmi.EventIds event_id = 2;
   void clear_event_id();
   static const int kEventIdFieldNumber = 2;
@@ -2637,6 +2852,7 @@
   ::google::protobuf::Timestamp* raised_ts_;
   ::dmi::ThresholdInformation* threshold_info_;
   ::dmi::StateChangeInfo* state_change_info_;
+  ::dmi::GenericEventInfo* generic_event_info_;
   int event_id_;
   mutable ::google::protobuf::internal::CachedSize _cached_size_;
   friend struct ::TableStruct_dmi_2fhw_5fevents_5fmgmt_5fservice_2eproto;
@@ -4107,6 +4323,130 @@
 }
 // -------------------------------------------------------------------
 
+// GenericEventInfo
+
+// string message = 1;
+inline void GenericEventInfo::clear_message() {
+  message_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& GenericEventInfo::message() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.message)
+  return message_.GetNoArena();
+}
+inline void GenericEventInfo::set_message(const ::std::string& value) {
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.message)
+}
+#if LANG_CXX11
+inline void GenericEventInfo::set_message(::std::string&& value) {
+  
+  message_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.GenericEventInfo.message)
+}
+#endif
+inline void GenericEventInfo::set_message(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.GenericEventInfo.message)
+}
+inline void GenericEventInfo::set_message(const char* value, size_t size) {
+  
+  message_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.GenericEventInfo.message)
+}
+inline ::std::string* GenericEventInfo::mutable_message() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.GenericEventInfo.message)
+  return message_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* GenericEventInfo::release_message() {
+  // @@protoc_insertion_point(field_release:dmi.GenericEventInfo.message)
+  
+  return message_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void GenericEventInfo::set_allocated_message(::std::string* message) {
+  if (message != nullptr) {
+    
+  } else {
+    
+  }
+  message_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), message);
+  // @@protoc_insertion_point(field_set_allocated:dmi.GenericEventInfo.message)
+}
+
+// string message_code = 2;
+inline void GenericEventInfo::clear_message_code() {
+  message_code_.ClearToEmptyNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline const ::std::string& GenericEventInfo::message_code() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.message_code)
+  return message_code_.GetNoArena();
+}
+inline void GenericEventInfo::set_message_code(const ::std::string& value) {
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), value);
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.message_code)
+}
+#if LANG_CXX11
+inline void GenericEventInfo::set_message_code(::std::string&& value) {
+  
+  message_code_.SetNoArena(
+    &::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::move(value));
+  // @@protoc_insertion_point(field_set_rvalue:dmi.GenericEventInfo.message_code)
+}
+#endif
+inline void GenericEventInfo::set_message_code(const char* value) {
+  GOOGLE_DCHECK(value != nullptr);
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), ::std::string(value));
+  // @@protoc_insertion_point(field_set_char:dmi.GenericEventInfo.message_code)
+}
+inline void GenericEventInfo::set_message_code(const char* value, size_t size) {
+  
+  message_code_.SetNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(),
+      ::std::string(reinterpret_cast<const char*>(value), size));
+  // @@protoc_insertion_point(field_set_pointer:dmi.GenericEventInfo.message_code)
+}
+inline ::std::string* GenericEventInfo::mutable_message_code() {
+  
+  // @@protoc_insertion_point(field_mutable:dmi.GenericEventInfo.message_code)
+  return message_code_.MutableNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline ::std::string* GenericEventInfo::release_message_code() {
+  // @@protoc_insertion_point(field_release:dmi.GenericEventInfo.message_code)
+  
+  return message_code_.ReleaseNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited());
+}
+inline void GenericEventInfo::set_allocated_message_code(::std::string* message_code) {
+  if (message_code != nullptr) {
+    
+  } else {
+    
+  }
+  message_code_.SetAllocatedNoArena(&::google::protobuf::internal::GetEmptyStringAlreadyInited(), message_code);
+  // @@protoc_insertion_point(field_set_allocated:dmi.GenericEventInfo.message_code)
+}
+
+// .dmi.GenericEventInfo.EventSeverity severity = 3;
+inline void GenericEventInfo::clear_severity() {
+  severity_ = 0;
+}
+inline ::dmi::GenericEventInfo_EventSeverity GenericEventInfo::severity() const {
+  // @@protoc_insertion_point(field_get:dmi.GenericEventInfo.severity)
+  return static_cast< ::dmi::GenericEventInfo_EventSeverity >(severity_);
+}
+inline void GenericEventInfo::set_severity(::dmi::GenericEventInfo_EventSeverity value) {
+  
+  severity_ = value;
+  // @@protoc_insertion_point(field_set:dmi.GenericEventInfo.severity)
+}
+
+// -------------------------------------------------------------------
+
 // Event
 
 // .dmi.EventMetaData event_metadata = 1;
@@ -4375,6 +4715,57 @@
   // @@protoc_insertion_point(field_set_allocated:dmi.Event.state_change_info)
 }
 
+// .dmi.GenericEventInfo generic_event_info = 7;
+inline bool Event::has_generic_event_info() const {
+  return this != internal_default_instance() && generic_event_info_ != nullptr;
+}
+inline void Event::clear_generic_event_info() {
+  if (GetArenaNoVirtual() == nullptr && generic_event_info_ != nullptr) {
+    delete generic_event_info_;
+  }
+  generic_event_info_ = nullptr;
+}
+inline const ::dmi::GenericEventInfo& Event::generic_event_info() const {
+  const ::dmi::GenericEventInfo* p = generic_event_info_;
+  // @@protoc_insertion_point(field_get:dmi.Event.generic_event_info)
+  return p != nullptr ? *p : *reinterpret_cast<const ::dmi::GenericEventInfo*>(
+      &::dmi::_GenericEventInfo_default_instance_);
+}
+inline ::dmi::GenericEventInfo* Event::release_generic_event_info() {
+  // @@protoc_insertion_point(field_release:dmi.Event.generic_event_info)
+  
+  ::dmi::GenericEventInfo* temp = generic_event_info_;
+  generic_event_info_ = nullptr;
+  return temp;
+}
+inline ::dmi::GenericEventInfo* Event::mutable_generic_event_info() {
+  
+  if (generic_event_info_ == nullptr) {
+    auto* p = CreateMaybeMessage<::dmi::GenericEventInfo>(GetArenaNoVirtual());
+    generic_event_info_ = p;
+  }
+  // @@protoc_insertion_point(field_mutable:dmi.Event.generic_event_info)
+  return generic_event_info_;
+}
+inline void Event::set_allocated_generic_event_info(::dmi::GenericEventInfo* generic_event_info) {
+  ::google::protobuf::Arena* message_arena = GetArenaNoVirtual();
+  if (message_arena == nullptr) {
+    delete generic_event_info_;
+  }
+  if (generic_event_info) {
+    ::google::protobuf::Arena* submessage_arena = nullptr;
+    if (message_arena != submessage_arena) {
+      generic_event_info = ::google::protobuf::internal::GetOwnedMessage(
+          message_arena, generic_event_info, submessage_arena);
+    }
+    
+  } else {
+    
+  }
+  generic_event_info_ = generic_event_info;
+  // @@protoc_insertion_point(field_set_allocated:dmi.Event.generic_event_info)
+}
+
 #ifdef __GNUC__
   #pragma GCC diagnostic pop
 #endif  // __GNUC__
@@ -4410,6 +4801,8 @@
 
 // -------------------------------------------------------------------
 
+// -------------------------------------------------------------------
+
 
 // @@protoc_insertion_point(namespace_scope)
 
@@ -4428,6 +4821,11 @@
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::EventsConfigurationResponse_Reason>() {
   return ::dmi::EventsConfigurationResponse_Reason_descriptor();
 }
+template <> struct is_proto_enum< ::dmi::GenericEventInfo_EventSeverity> : ::std::true_type {};
+template <>
+inline const EnumDescriptor* GetEnumDescriptor< ::dmi::GenericEventInfo_EventSeverity>() {
+  return ::dmi::GenericEventInfo_EventSeverity_descriptor();
+}
 template <> struct is_proto_enum< ::dmi::EventIds> : ::std::true_type {};
 template <>
 inline const EnumDescriptor* GetEnumDescriptor< ::dmi::EventIds>() {
diff --git a/dmi.pb b/dmi.pb
index db36a67..0e1558f 100644
--- a/dmi.pb
+++ b/dmi.pb
Binary files differ
diff --git a/docs/EventsMetrics.md b/docs/EventsMetrics.md
index 84c85ca..c5a2d7d 100644
--- a/docs/EventsMetrics.md
+++ b/docs/EventsMetrics.md
@@ -18,6 +18,7 @@
     ComponentSensorData value = 3;
 }
 
+// Asynchronous event message
 message Event {
     EventMetaData event_metadata = 1;
     EventIds event_id = 2;
@@ -28,6 +29,8 @@
     string add_info = 5;
     // For component state change events, conveys the old and new states
     StateChangeInfo state_change_info = 6;
+    // For generic events (event_id = EVENT_COMPONENT_GENERIC_EVENT)
+    GenericEventInfo generic_event_info = 7;
 }
 ```
 
@@ -48,9 +51,26 @@
     ComponentAdminState old = 1;
     ComponentAdminState new = 2;
 }
-// ... similar for OperStateChange, AlarmStateChange, UsageStateChange, StandbyStateChange
+message OperStateChange {
+    ComponentOperState old = 1;
+    ComponentOperState new = 2;
+}
+message AlarmStateChange {
+    ComponentAlarmState old = 1;
+    ComponentAlarmState new = 2;
+}
+message UsageStateChange {
+    ComponentUsageState old = 1;
+    ComponentUsageState new = 2;
+}
+message StandbyStateChange {
+    ComponentStandbyState old = 1;
+    ComponentStandbyState new = 2;
+}
 ```
 
+> See [protos/dmi/hw_events_mgmt_service.proto](protos/dmi/hw_events_mgmt_service.proto) for the authoritative definitions.
+
 Note: The on-demand metrics query using the API `GetMetric` is returned over gRPC and not over the Kafka bus.
 
 The device/device manager implementations shall persist the active events across device reboot. On device reboot, the alarms which are no longer active shall be cleared.
diff --git a/go/dmi/hw_events_mgmt_service.pb.go b/go/dmi/hw_events_mgmt_service.pb.go
index b2fffa4..64dab0a 100644
--- a/go/dmi/hw_events_mgmt_service.pb.go
+++ b/go/dmi/hw_events_mgmt_service.pb.go
@@ -103,6 +103,9 @@
 	EventIds_EVENT_COMPONENT_ALARM_STATE_CHANGED   EventIds = 702
 	EventIds_EVENT_COMPONENT_USAGE_STATE_CHANGED   EventIds = 703
 	EventIds_EVENT_COMPONENT_STANDBY_STATE_CHANGED EventIds = 704
+	// Generic event about a component, the payload contains GenericEventInfo in this case
+	// Use this event id only for events which do not have already a specific event id
+	EventIds_EVENT_COMPONENT_GENERIC_EVENT EventIds = 705
 )
 
 var EventIds_name = map[int32]string{
@@ -166,6 +169,7 @@
 	702: "EVENT_COMPONENT_ALARM_STATE_CHANGED",
 	703: "EVENT_COMPONENT_USAGE_STATE_CHANGED",
 	704: "EVENT_COMPONENT_STANDBY_STATE_CHANGED",
+	705: "EVENT_COMPONENT_GENERIC_EVENT",
 }
 
 var EventIds_value = map[string]int32{
@@ -229,6 +233,7 @@
 	"EVENT_COMPONENT_ALARM_STATE_CHANGED":                     702,
 	"EVENT_COMPONENT_USAGE_STATE_CHANGED":                     703,
 	"EVENT_COMPONENT_STANDBY_STATE_CHANGED":                   704,
+	"EVENT_COMPONENT_GENERIC_EVENT":                           705,
 }
 
 func (x EventIds) String() string {
@@ -304,6 +309,43 @@
 	return fileDescriptor_8962d785556e9979, []int{8, 0}
 }
 
+type GenericEventInfo_EventSeverity int32
+
+const (
+	GenericEventInfo_EVENT_SEVERITY_UNSPECIFIED GenericEventInfo_EventSeverity = 0
+	GenericEventInfo_CRITICAL                   GenericEventInfo_EventSeverity = 1
+	GenericEventInfo_MAJOR                      GenericEventInfo_EventSeverity = 2
+	GenericEventInfo_MINOR                      GenericEventInfo_EventSeverity = 3
+	GenericEventInfo_NORMAL                     GenericEventInfo_EventSeverity = 4
+	GenericEventInfo_INFO                       GenericEventInfo_EventSeverity = 5
+)
+
+var GenericEventInfo_EventSeverity_name = map[int32]string{
+	0: "EVENT_SEVERITY_UNSPECIFIED",
+	1: "CRITICAL",
+	2: "MAJOR",
+	3: "MINOR",
+	4: "NORMAL",
+	5: "INFO",
+}
+
+var GenericEventInfo_EventSeverity_value = map[string]int32{
+	"EVENT_SEVERITY_UNSPECIFIED": 0,
+	"CRITICAL":                   1,
+	"MAJOR":                      2,
+	"MINOR":                      3,
+	"NORMAL":                     4,
+	"INFO":                       5,
+}
+
+func (x GenericEventInfo_EventSeverity) String() string {
+	return proto.EnumName(GenericEventInfo_EventSeverity_name, int32(x))
+}
+
+func (GenericEventInfo_EventSeverity) EnumDescriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{16, 0}
+}
+
 type ValueType struct {
 	// For val no multiples of units shall be used.
 	// For example, for memory val should be in bytes and not in kilobytes or any
@@ -1315,6 +1357,61 @@
 	}
 }
 
+type GenericEventInfo struct {
+	Message              string                         `protobuf:"bytes,1,opt,name=message,proto3" json:"message,omitempty"`
+	MessageCode          string                         `protobuf:"bytes,2,opt,name=message_code,json=messageCode,proto3" json:"message_code,omitempty"`
+	Severity             GenericEventInfo_EventSeverity `protobuf:"varint,3,opt,name=severity,proto3,enum=dmi.GenericEventInfo_EventSeverity" json:"severity,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}                       `json:"-"`
+	XXX_unrecognized     []byte                         `json:"-"`
+	XXX_sizecache        int32                          `json:"-"`
+}
+
+func (m *GenericEventInfo) Reset()         { *m = GenericEventInfo{} }
+func (m *GenericEventInfo) String() string { return proto.CompactTextString(m) }
+func (*GenericEventInfo) ProtoMessage()    {}
+func (*GenericEventInfo) Descriptor() ([]byte, []int) {
+	return fileDescriptor_8962d785556e9979, []int{16}
+}
+
+func (m *GenericEventInfo) XXX_Unmarshal(b []byte) error {
+	return xxx_messageInfo_GenericEventInfo.Unmarshal(m, b)
+}
+func (m *GenericEventInfo) XXX_Marshal(b []byte, deterministic bool) ([]byte, error) {
+	return xxx_messageInfo_GenericEventInfo.Marshal(b, m, deterministic)
+}
+func (m *GenericEventInfo) XXX_Merge(src proto.Message) {
+	xxx_messageInfo_GenericEventInfo.Merge(m, src)
+}
+func (m *GenericEventInfo) XXX_Size() int {
+	return xxx_messageInfo_GenericEventInfo.Size(m)
+}
+func (m *GenericEventInfo) XXX_DiscardUnknown() {
+	xxx_messageInfo_GenericEventInfo.DiscardUnknown(m)
+}
+
+var xxx_messageInfo_GenericEventInfo proto.InternalMessageInfo
+
+func (m *GenericEventInfo) GetMessage() string {
+	if m != nil {
+		return m.Message
+	}
+	return ""
+}
+
+func (m *GenericEventInfo) GetMessageCode() string {
+	if m != nil {
+		return m.MessageCode
+	}
+	return ""
+}
+
+func (m *GenericEventInfo) GetSeverity() GenericEventInfo_EventSeverity {
+	if m != nil {
+		return m.Severity
+	}
+	return GenericEventInfo_EVENT_SEVERITY_UNSPECIFIED
+}
+
 type Event struct {
 	EventMetadata *EventMetaData       `protobuf:"bytes,1,opt,name=event_metadata,json=eventMetadata,proto3" json:"event_metadata,omitempty"`
 	EventId       EventIds             `protobuf:"varint,2,opt,name=event_id,json=eventId,proto3,enum=dmi.EventIds" json:"event_id,omitempty"`
@@ -1322,18 +1419,19 @@
 	// Optional threshold information for an event
 	ThresholdInfo *ThresholdInformation `protobuf:"bytes,4,opt,name=threshold_info,json=thresholdInfo,proto3" json:"threshold_info,omitempty"`
 	// Any additional info regarding the event
-	AddInfo              string           `protobuf:"bytes,5,opt,name=add_info,json=addInfo,proto3" json:"add_info,omitempty"`
-	StateChangeInfo      *StateChangeInfo `protobuf:"bytes,6,opt,name=state_change_info,json=stateChangeInfo,proto3" json:"state_change_info,omitempty"`
-	XXX_NoUnkeyedLiteral struct{}         `json:"-"`
-	XXX_unrecognized     []byte           `json:"-"`
-	XXX_sizecache        int32            `json:"-"`
+	AddInfo              string            `protobuf:"bytes,5,opt,name=add_info,json=addInfo,proto3" json:"add_info,omitempty"`
+	StateChangeInfo      *StateChangeInfo  `protobuf:"bytes,6,opt,name=state_change_info,json=stateChangeInfo,proto3" json:"state_change_info,omitempty"`
+	GenericEventInfo     *GenericEventInfo `protobuf:"bytes,7,opt,name=generic_event_info,json=genericEventInfo,proto3" json:"generic_event_info,omitempty"`
+	XXX_NoUnkeyedLiteral struct{}          `json:"-"`
+	XXX_unrecognized     []byte            `json:"-"`
+	XXX_sizecache        int32             `json:"-"`
 }
 
 func (m *Event) Reset()         { *m = Event{} }
 func (m *Event) String() string { return proto.CompactTextString(m) }
 func (*Event) ProtoMessage()    {}
 func (*Event) Descriptor() ([]byte, []int) {
-	return fileDescriptor_8962d785556e9979, []int{16}
+	return fileDescriptor_8962d785556e9979, []int{17}
 }
 
 func (m *Event) XXX_Unmarshal(b []byte) error {
@@ -1396,10 +1494,18 @@
 	return nil
 }
 
+func (m *Event) GetGenericEventInfo() *GenericEventInfo {
+	if m != nil {
+		return m.GenericEventInfo
+	}
+	return nil
+}
+
 func init() {
 	proto.RegisterEnum("dmi.EventIds", EventIds_name, EventIds_value)
 	proto.RegisterEnum("dmi.ListEventsResponse_Reason", ListEventsResponse_Reason_name, ListEventsResponse_Reason_value)
 	proto.RegisterEnum("dmi.EventsConfigurationResponse_Reason", EventsConfigurationResponse_Reason_name, EventsConfigurationResponse_Reason_value)
+	proto.RegisterEnum("dmi.GenericEventInfo_EventSeverity", GenericEventInfo_EventSeverity_name, GenericEventInfo_EventSeverity_value)
 	proto.RegisterType((*ValueType)(nil), "dmi.ValueType")
 	proto.RegisterType((*WaterMarks)(nil), "dmi.WaterMarks")
 	proto.RegisterType((*Thresholds)(nil), "dmi.Thresholds")
@@ -1416,139 +1522,151 @@
 	proto.RegisterType((*UsageStateChange)(nil), "dmi.UsageStateChange")
 	proto.RegisterType((*StandbyStateChange)(nil), "dmi.StandbyStateChange")
 	proto.RegisterType((*StateChangeInfo)(nil), "dmi.StateChangeInfo")
+	proto.RegisterType((*GenericEventInfo)(nil), "dmi.GenericEventInfo")
 	proto.RegisterType((*Event)(nil), "dmi.Event")
 }
 
 func init() { proto.RegisterFile("dmi/hw_events_mgmt_service.proto", fileDescriptor_8962d785556e9979) }
 
 var fileDescriptor_8962d785556e9979 = []byte{
-	// 2015 bytes of a gzipped FileDescriptorProto
-	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x4b, 0x73, 0xdb, 0xc8,
-	0x11, 0x26, 0x09, 0x51, 0x96, 0x5a, 0x16, 0x0d, 0x4f, 0x69, 0x2d, 0x89, 0x8a, 0x6d, 0x85, 0xde,
-	0x5d, 0xc9, 0x8a, 0x4d, 0x6a, 0x65, 0xc7, 0x8e, 0x6b, 0x0f, 0x59, 0x90, 0x84, 0x4c, 0x96, 0x49,
-	0x40, 0x35, 0x04, 0xa9, 0x38, 0x87, 0x45, 0x41, 0xc2, 0x90, 0xc2, 0x9a, 0x00, 0xb8, 0x00, 0x28,
-	0x45, 0x49, 0x55, 0x2a, 0x39, 0xe5, 0x9a, 0xc7, 0xe6, 0x94, 0x54, 0x7e, 0x41, 0x36, 0x39, 0xe5,
-	0xb6, 0x79, 0x1c, 0x72, 0xc8, 0xe3, 0x0f, 0x24, 0x3f, 0x22, 0xb7, 0xbc, 0xdf, 0x05, 0x0c, 0x48,
-	0x0c, 0xc1, 0x97, 0x5c, 0xb5, 0x37, 0xb1, 0xfb, 0xeb, 0xef, 0xeb, 0x99, 0xee, 0x69, 0x8c, 0x06,
-	0xb6, 0x75, 0xd3, 0x28, 0x9c, 0x5d, 0xa8, 0xe4, 0x9c, 0x58, 0x9e, 0xab, 0x9a, 0x1d, 0xd3, 0x53,
-	0x5d, 0xe2, 0x9c, 0x1b, 0xa7, 0x24, 0xdf, 0x73, 0x6c, 0xcf, 0x46, 0x9c, 0x6e, 0x1a, 0xd9, 0x9b,
-	0x3e, 0xec, 0xd4, 0x36, 0x4d, 0xdb, 0x72, 0xa9, 0x3d, 0x7b, 0x9d, 0x46, 0x86, 0xbf, 0xee, 0x76,
-	0x6c, 0xbb, 0xd3, 0x25, 0x85, 0xe0, 0xd7, 0x49, 0xbf, 0x5d, 0xf0, 0x0c, 0x93, 0xb8, 0x9e, 0x66,
-	0xf6, 0x42, 0xc0, 0x56, 0x1c, 0x40, 0xcc, 0x9e, 0x77, 0x49, 0x9d, 0xb9, 0x1f, 0x24, 0x61, 0xb9,
-	0xa5, 0x75, 0xfb, 0x44, 0xb9, 0xec, 0x11, 0xb4, 0x09, 0xd7, 0x0c, 0xcb, 0x53, 0xcf, 0xb5, 0xee,
-	0x46, 0x72, 0x3b, 0xb9, 0xcb, 0x55, 0x12, 0x78, 0xd1, 0xb0, 0xbc, 0x96, 0xd6, 0x45, 0x5b, 0xb0,
-	0xd4, 0x1f, 0xf8, 0x52, 0xdb, 0xc9, 0xdd, 0x85, 0x4a, 0x02, 0x5f, 0xeb, 0x87, 0xce, 0xdb, 0xb0,
-	0xdc, 0xee, 0xda, 0x1a, 0xf5, 0x72, 0xdb, 0xc9, 0xdd, 0x54, 0x25, 0x81, 0x97, 0x02, 0x93, 0xef,
-	0xde, 0x87, 0x65, 0xef, 0xb2, 0x47, 0xe4, 0x76, 0x4b, 0xeb, 0x6e, 0x2c, 0x6c, 0x27, 0x77, 0x33,
-	0x07, 0x28, 0xaf, 0x9b, 0x46, 0xbe, 0xac, 0x79, 0xda, 0x50, 0x1d, 0x47, 0xa0, 0x62, 0x1a, 0xb8,
-	0x73, 0xad, 0x9b, 0xc3, 0x00, 0xc7, 0x9a, 0x47, 0x9c, 0xba, 0xe6, 0xbc, 0x72, 0x51, 0x0e, 0x16,
-	0xce, 0x8c, 0xce, 0x59, 0x90, 0xda, 0xca, 0x41, 0x26, 0x60, 0x88, 0xa2, 0x03, 0x1f, 0xda, 0x06,
-	0xae, 0x6b, 0x5f, 0x04, 0x19, 0x8e, 0x43, 0x7c, 0x57, 0xee, 0x15, 0x80, 0x72, 0xe6, 0x10, 0xf7,
-	0xcc, 0xee, 0xea, 0x2e, 0xda, 0x81, 0x74, 0xbf, 0xd7, 0x23, 0x4e, 0x48, 0x7a, 0x23, 0x88, 0x88,
-	0x34, 0x2b, 0x09, 0x4c, 0xfd, 0x3e, 0xb0, 0x6b, 0x5f, 0x10, 0x27, 0xa4, 0x9e, 0x04, 0x0c, 0xfc,
-	0xc5, 0x15, 0x58, 0xf6, 0x06, 0xfc, 0xb9, 0xaf, 0xc3, 0xda, 0x50, 0xac, 0x6a, 0xb5, 0x6d, 0xc7,
-	0xd4, 0x3c, 0xc3, 0xb6, 0xd0, 0xe7, 0x21, 0x63, 0x9f, 0xf8, 0xd5, 0x26, 0xba, 0xbf, 0x67, 0x7d,
-	0x32, 0x65, 0x51, 0xab, 0x03, 0x54, 0x60, 0x42, 0x05, 0x80, 0x21, 0xb7, 0x3b, 0x92, 0x49, 0xb4,
-	0x24, 0xcc, 0x40, 0x72, 0x9f, 0x24, 0x61, 0x49, 0xf4, 0x1b, 0xac, 0xd4, 0xee, 0xa0, 0x5d, 0x58,
-	0x0a, 0x9a, 0x4d, 0x35, 0xf4, 0x40, 0x2e, 0x73, 0xb0, 0x1a, 0xc4, 0x06, 0x80, 0xaa, 0xee, 0xe2,
-	0x6b, 0x84, 0xfe, 0x85, 0xee, 0xc1, 0xaa, 0xe1, 0xaa, 0xa7, 0xb6, 0xd5, 0x36, 0x3a, 0x7d, 0x87,
-	0xe8, 0x81, 0xd4, 0x12, 0xbe, 0x6e, 0xb8, 0xa5, 0xa1, 0x2d, 0x96, 0x0c, 0x37, 0x37, 0x19, 0xb4,
-	0x0f, 0x99, 0x53, 0xdb, 0xec, 0xd9, 0x96, 0x9f, 0x43, 0xbf, 0x6f, 0xe8, 0x41, 0x2f, 0xac, 0x1c,
-	0x2c, 0x07, 0x41, 0xcd, 0xbe, 0xa1, 0xe3, 0xd5, 0x21, 0xc0, 0xff, 0x99, 0xdb, 0x87, 0xe5, 0x20,
-	0x39, 0xd7, 0x4f, 0xff, 0x1e, 0xa4, 0x0d, 0x8f, 0x98, 0xee, 0x46, 0x72, 0x9b, 0xdb, 0x5d, 0x61,
-	0x73, 0x2f, 0xb5, 0x3b, 0x98, 0xfa, 0x72, 0x3f, 0x4a, 0x01, 0xaa, 0x19, 0xae, 0x47, 0xc3, 0x30,
-	0x71, 0x7b, 0xb6, 0xe5, 0x12, 0x74, 0x0f, 0x16, 0x5d, 0x4f, 0xf3, 0xfa, 0x6e, 0xb8, 0xf0, 0x95,
-	0x20, 0xb8, 0x11, 0x98, 0x70, 0xe8, 0x42, 0x4f, 0x60, 0xd1, 0x21, 0x9a, 0x6b, 0x5b, 0xc1, 0x72,
-	0x33, 0x07, 0x77, 0x02, 0xd0, 0x38, 0x5b, 0x1e, 0x07, 0x28, 0x1c, 0xa2, 0xd1, 0xdb, 0xb0, 0x48,
-	0x0f, 0x71, 0xb8, 0x09, 0x99, 0x28, 0x33, 0x3f, 0x71, 0x1c, 0x7a, 0xfd, 0x5d, 0xa5, 0x11, 0xaa,
-	0x4e, 0x3c, 0xcd, 0xa0, 0x47, 0x61, 0x19, 0x5f, 0xa7, 0xc6, 0x72, 0x60, 0xcb, 0xbd, 0x0f, 0x8b,
-	0x94, 0x1e, 0xad, 0x01, 0xdf, 0x94, 0xca, 0xe2, 0x61, 0x55, 0x12, 0xcb, 0x2a, 0x16, 0x85, 0x86,
-	0x2c, 0xf1, 0x09, 0x84, 0x20, 0xd3, 0x94, 0x5e, 0x48, 0xf2, 0xb1, 0xa4, 0x96, 0xc5, 0x56, 0xb5,
-	0x24, 0xf2, 0x49, 0xdf, 0x56, 0x95, 0x14, 0x11, 0x4b, 0x42, 0x4d, 0x15, 0x31, 0x96, 0x31, 0x9f,
-	0x42, 0xb7, 0x00, 0x51, 0xbf, 0xda, 0x94, 0xb0, 0x28, 0x94, 0x2a, 0x42, 0xb1, 0x26, 0xf2, 0x5c,
-	0xee, 0xe3, 0x24, 0x64, 0xc3, 0xd4, 0xc2, 0x52, 0x06, 0x1d, 0x89, 0xc9, 0x87, 0x7d, 0xe2, 0x7a,
-	0x68, 0x0f, 0x56, 0x74, 0xe2, 0xcf, 0x20, 0x5a, 0xa0, 0x64, 0xbc, 0x40, 0x40, 0xbd, 0xfe, 0xdf,
-	0x68, 0x0f, 0xae, 0x9d, 0x9e, 0x69, 0x56, 0x87, 0xb8, 0x23, 0xe7, 0x6d, 0xb8, 0x70, 0x7f, 0x42,
-	0x84, 0x00, 0xb4, 0x07, 0xbc, 0x43, 0x5c, 0xe2, 0xa9, 0x9e, 0xad, 0xea, 0xa4, 0xad, 0xf5, 0xbb,
-	0x5e, 0xb0, 0x5b, 0x4b, 0x95, 0x04, 0xce, 0x04, 0x1e, 0xc5, 0x2e, 0x53, 0xbb, 0x7f, 0x82, 0xec,
-	0x1e, 0xa1, 0x79, 0xe5, 0x7e, 0x98, 0x82, 0xad, 0x89, 0xf9, 0xbe, 0x4e, 0x65, 0xbf, 0x18, 0xab,
-	0xec, 0x0e, 0x9b, 0xe8, 0x24, 0xda, 0x78, 0x89, 0xc7, 0x4a, 0xc7, 0x4d, 0x28, 0x9d, 0xf3, 0x29,
-	0x95, 0x2e, 0xb0, 0xb5, 0x84, 0x5a, 0xb5, 0xac, 0x96, 0x64, 0xe9, 0xb0, 0xfa, 0x9c, 0xe7, 0xa6,
-	0x94, 0x73, 0x21, 0xf7, 0x51, 0x12, 0x56, 0x83, 0x75, 0xd4, 0x89, 0xa7, 0xf9, 0xe3, 0xf4, 0xb5,
-	0x2a, 0x38, 0x7e, 0x22, 0x53, 0xb3, 0x4f, 0x24, 0x7a, 0x8b, 0x8d, 0xb0, 0x34, 0x93, 0x84, 0x3b,
-	0x11, 0xc1, 0x24, 0xcd, 0x24, 0xb9, 0x0f, 0x80, 0x17, 0x74, 0xd3, 0xb0, 0xfc, 0x3a, 0x90, 0x52,
-	0xd0, 0x03, 0x68, 0x0f, 0x38, 0xbb, 0x3b, 0x98, 0x3c, 0x1b, 0x81, 0x42, 0x69, 0x10, 0x14, 0x81,
-	0xb1, 0x0f, 0xf2, 0xb1, 0x16, 0xb9, 0x08, 0xab, 0x35, 0x03, 0x6b, 0x91, 0x8b, 0x5c, 0x07, 0x6e,
-	0xc8, 0x3d, 0xe2, 0xb0, 0x52, 0xf7, 0x59, 0xa9, 0xf5, 0xd1, 0xf0, 0x21, 0x96, 0x2a, 0xdd, 0x67,
-	0x95, 0xa6, 0x43, 0x7d, 0x21, 0x7f, 0x51, 0x5d, 0xcd, 0x31, 0xaf, 0xbc, 0xa8, 0x21, 0xf8, 0x0a,
-	0x8b, 0x62, 0xb0, 0xa1, 0x56, 0xd3, 0xd5, 0x3a, 0xe4, 0xaa, 0x5a, 0x11, 0x78, 0xbe, 0x16, 0x8b,
-	0xf5, 0xb5, 0x7a, 0x80, 0x1a, 0x9e, 0x66, 0xe9, 0x27, 0x97, 0xac, 0xda, 0x03, 0x56, 0x2d, 0x3b,
-	0xca, 0xc0, 0xc2, 0xa9, 0xde, 0x03, 0x56, 0x6f, 0x26, 0xda, 0x57, 0xfc, 0x16, 0x07, 0x37, 0x18,
-	0x2d, 0xff, 0xcb, 0x88, 0x44, 0x40, 0x9a, 0x5f, 0x59, 0xd5, 0x3f, 0xb3, 0x44, 0xa5, 0x83, 0x23,
-	0x6c, 0xdf, 0x37, 0x02, 0xc2, 0x78, 0x47, 0x55, 0x12, 0x98, 0xd7, 0xe2, 0x5d, 0x56, 0x84, 0x9b,
-	0xfe, 0xf0, 0x18, 0x65, 0xa1, 0x5d, 0xbd, 0x16, 0xb0, 0xc4, 0x7a, 0xa5, 0x92, 0xc0, 0x37, 0xec,
-	0x58, 0xfb, 0xf8, 0xa9, 0xf8, 0xf5, 0x18, 0x25, 0xe1, 0xd8, 0x54, 0x62, 0x7d, 0x10, 0xa4, 0x12,
-	0xef, 0x0d, 0x11, 0x50, 0xdf, 0xdf, 0xea, 0x51, 0x9a, 0x05, 0x86, 0x26, 0x5e, 0x62, 0x9f, 0xa6,
-	0x1f, 0x2f, 0xfb, 0x0b, 0x58, 0x73, 0xe9, 0x0e, 0x8e, 0x12, 0xa5, 0x03, 0xa2, 0xf5, 0xc1, 0xbc,
-	0x8b, 0xd5, 0xaf, 0x92, 0xc0, 0xc8, 0x1d, 0xb3, 0x16, 0x33, 0x70, 0x9d, 0x25, 0xc9, 0xfd, 0x3a,
-	0x05, 0xe9, 0x60, 0x7e, 0xa0, 0x67, 0x90, 0xa1, 0xb7, 0x03, 0x93, 0x78, 0x9a, 0xae, 0x79, 0x5a,
-	0xb8, 0xf7, 0x28, 0x9a, 0x95, 0x83, 0x19, 0x83, 0x57, 0xc9, 0xe0, 0xa7, 0x0f, 0x1c, 0xb9, 0x58,
-	0xa4, 0x66, 0x5e, 0x2c, 0x9e, 0xc2, 0xb2, 0xa3, 0x19, 0x2e, 0xd1, 0xd5, 0xe1, 0xd7, 0x32, 0x9b,
-	0xa7, 0xf7, 0xd3, 0xfc, 0xe0, 0x7e, 0x9a, 0x57, 0x06, 0x17, 0x58, 0xbc, 0x44, 0xc1, 0x8a, 0x8b,
-	0xde, 0x83, 0xcc, 0xf0, 0x26, 0xa1, 0x1a, 0x56, 0xdb, 0x0e, 0xf7, 0x71, 0x73, 0xf4, 0xc2, 0xc1,
-	0xdc, 0xb1, 0xf0, 0xaa, 0xc7, 0x5a, 0xd1, 0x26, 0x2c, 0x69, 0x7a, 0x18, 0x9b, 0x0e, 0x66, 0xd6,
-	0x35, 0x4d, 0xa7, 0xae, 0xf7, 0xe0, 0x26, 0xbb, 0x29, 0x14, 0xb3, 0xc8, 0xf4, 0x4c, 0xac, 0x57,
-	0xf1, 0x0d, 0x77, 0xd4, 0xb0, 0xf7, 0xb3, 0xb5, 0xf0, 0x9e, 0x55, 0xd5, 0x5d, 0xb4, 0x01, 0x6b,
-	0x62, 0x4b, 0x94, 0x14, 0x55, 0x12, 0xea, 0xfe, 0xbc, 0x0e, 0x3f, 0x04, 0x7c, 0x02, 0xdd, 0x81,
-	0x2c, 0xf5, 0x28, 0x58, 0x90, 0x1a, 0x25, 0xb1, 0xda, 0x12, 0xb1, 0x7a, 0x54, 0x6b, 0x3e, 0x57,
-	0xe5, 0xa6, 0xc2, 0xeb, 0xe8, 0x36, 0x6c, 0x4e, 0xf1, 0x57, 0x25, 0x9e, 0xa0, 0x87, 0x70, 0x7f,
-	0xdc, 0xdd, 0x92, 0x6b, 0x8a, 0xf0, 0x5c, 0x54, 0x85, 0xa2, 0xdc, 0x12, 0x55, 0xa5, 0x82, 0xc5,
-	0x46, 0x45, 0xae, 0x95, 0xf9, 0xf6, 0x6c, 0x78, 0x51, 0xac, 0xc9, 0xc7, 0x0c, 0xbc, 0x83, 0xde,
-	0x81, 0x87, 0xe3, 0x70, 0x45, 0xac, 0x1f, 0x89, 0x58, 0x50, 0x9a, 0x78, 0x5c, 0xe1, 0x6c, 0x7e,
-	0x48, 0x5c, 0xc5, 0x98, 0x9c, 0x54, 0xa9, 0x89, 0xb1, 0x6f, 0x8b, 0x2b, 0x7c, 0x30, 0x1b, 0x1e,
-	0x67, 0x7f, 0x85, 0xf2, 0xb0, 0x37, 0x0e, 0xc7, 0x5f, 0x52, 0x8f, 0xe4, 0x63, 0x11, 0x8f, 0xd1,
-	0x77, 0xe7, 0xe0, 0xe3, 0xfc, 0xe6, 0x64, 0xbc, 0x32, 0x8d, 0xdf, 0x9a, 0x83, 0x8f, 0xf3, 0xdb,
-	0x93, 0x1b, 0xe0, 0x50, 0xa8, 0xd6, 0x9a, 0x58, 0xe4, 0x7b, 0xe8, 0x29, 0x3c, 0xba, 0x72, 0x03,
-	0xa8, 0x58, 0x2c, 0xc9, 0x2d, 0x11, 0x8b, 0x65, 0xfe, 0xc3, 0xd9, 0x81, 0xb1, 0x34, 0x98, 0x40,
-	0x07, 0xbd, 0x0b, 0x4f, 0x5f, 0xab, 0x29, 0x98, 0x60, 0x77, 0x7e, 0xf0, 0x74, 0x65, 0x6f, 0x72,
-	0xca, 0x53, 0x1a, 0x85, 0x09, 0xec, 0xcf, 0x0e, 0x9c, 0xae, 0x78, 0x8e, 0xbe, 0x00, 0x8f, 0xaf,
-	0xde, 0x3c, 0x4c, 0xe4, 0xc5, 0x9c, 0xc8, 0xe9, 0x9a, 0x5f, 0x99, 0x1c, 0xa9, 0xcc, 0xd7, 0xbc,
-	0x9c, 0x13, 0x39, 0x5d, 0xf3, 0xab, 0x68, 0x07, 0xee, 0x4d, 0x6d, 0x32, 0x06, 0xf8, 0x35, 0xb4,
-	0x0e, 0x88, 0x02, 0x8f, 0x1a, 0xcd, 0x68, 0x4c, 0xfd, 0x26, 0x89, 0x6e, 0xc1, 0xcd, 0x98, 0xa3,
-	0x2a, 0xf1, 0xbf, 0x8d, 0xd9, 0x07, 0x6d, 0xfb, 0xbb, 0x24, 0xda, 0x86, 0xad, 0x31, 0x3b, 0xa3,
-	0xf4, 0x7b, 0x26, 0xf2, 0x50, 0x90, 0x86, 0x91, 0x3f, 0x4e, 0x45, 0x29, 0xf8, 0xf6, 0x61, 0x0a,
-	0x1f, 0xa7, 0x46, 0x03, 0x06, 0x29, 0xfc, 0x24, 0x15, 0x49, 0x31, 0x44, 0x8c, 0xd4, 0x4f, 0x53,
-	0xe8, 0x3e, 0xbc, 0x49, 0x11, 0xa5, 0xa3, 0xe6, 0x84, 0x56, 0x2e, 0xe1, 0xaa, 0x52, 0x2d, 0x09,
-	0x35, 0xfe, 0xdb, 0x1c, 0x7a, 0x1b, 0x3e, 0x3b, 0x0b, 0x7a, 0x28, 0x28, 0x42, 0x8d, 0xff, 0x0e,
-	0x87, 0x1e, 0x41, 0xfe, 0x2a, 0x94, 0x4c, 0x1e, 0xdf, 0xe5, 0xd0, 0x3e, 0x7c, 0x6e, 0x2e, 0x39,
-	0x13, 0xf1, 0x3d, 0x0e, 0xbd, 0x09, 0x77, 0xa3, 0x88, 0x66, 0x63, 0xd2, 0xd4, 0xff, 0x88, 0x43,
-	0xf9, 0xc1, 0xc8, 0x9c, 0x8a, 0x62, 0x58, 0xbf, 0xcf, 0xa1, 0x2c, 0xbc, 0x41, 0xf1, 0x95, 0xe3,
-	0xf0, 0xff, 0x12, 0x15, 0x8b, 0x0d, 0x51, 0xe1, 0xff, 0xcc, 0xa1, 0xc2, 0x60, 0x7e, 0x45, 0xbe,
-	0x19, 0x3b, 0xf6, 0x17, 0x0e, 0x3d, 0x80, 0x9d, 0xf9, 0x01, 0x74, 0xdf, 0xfe, 0xca, 0xa1, 0x67,
-	0x83, 0x1e, 0xbe, 0x0a, 0x3d, 0x93, 0xf5, 0xdf, 0x38, 0xf4, 0x04, 0xde, 0xb9, 0xa2, 0x10, 0x13,
-	0xf7, 0x77, 0x0e, 0x6d, 0xc1, 0xad, 0xf1, 0xd5, 0x16, 0x65, 0x59, 0xe1, 0xff, 0xc1, 0xa1, 0x1d,
-	0xc8, 0x0d, 0x9d, 0x2c, 0x5b, 0x43, 0x94, 0x1a, 0x32, 0x3d, 0x23, 0x62, 0x99, 0xff, 0xe7, 0xe8,
-	0x32, 0x85, 0x5a, 0x6d, 0x02, 0xb8, 0x31, 0x40, 0xff, 0x8b, 0x43, 0xbb, 0x83, 0x03, 0xe7, 0x6b,
-	0x56, 0x1b, 0x2f, 0xa6, 0xd4, 0xee, 0xdf, 0x1c, 0x3a, 0x18, 0x7c, 0x50, 0x67, 0x22, 0x99, 0x15,
-	0xfd, 0x87, 0x43, 0x7b, 0xf0, 0xd6, 0x30, 0xa6, 0x2e, 0xd6, 0x65, 0xfc, 0x72, 0x0a, 0xff, 0x7f,
-	0x39, 0xf4, 0x18, 0x0a, 0x57, 0xc2, 0x32, 0x0a, 0xff, 0xe3, 0xd0, 0x9d, 0xc1, 0x57, 0xa9, 0x72,
-	0xac, 0x4a, 0xca, 0x91, 0xda, 0x78, 0x29, 0x95, 0x86, 0x87, 0xf4, 0x1b, 0x0b, 0x23, 0xeb, 0x8b,
-	0xfb, 0x19, 0xa6, 0x6f, 0x2e, 0xa0, 0xdb, 0xb0, 0x41, 0x91, 0xb5, 0xaa, 0x24, 0xaa, 0x25, 0x01,
-	0x97, 0xa3, 0x43, 0xfd, 0x87, 0x05, 0xf4, 0x19, 0x58, 0x9f, 0xe8, 0xae, 0x4a, 0xfc, 0x1f, 0x19,
-	0x99, 0x92, 0x5c, 0x3f, 0x92, 0xa5, 0xe0, 0x3b, 0x50, 0xae, 0x57, 0x25, 0xb5, 0xa1, 0x08, 0x8a,
-	0xa8, 0x96, 0x2a, 0x82, 0xf4, 0x5c, 0x2c, 0xf3, 0x9f, 0xa4, 0xa3, 0x3a, 0x46, 0x48, 0xf9, 0x48,
-	0xc4, 0x31, 0xe0, 0xcf, 0xd3, 0x13, 0x29, 0x6b, 0x02, 0xae, 0xc7, 0x90, 0xbf, 0x98, 0x88, 0xa4,
-	0x3b, 0x37, 0x8a, 0xfc, 0x65, 0x3a, 0xaa, 0x47, 0x84, 0x6c, 0x28, 0x82, 0x54, 0x2e, 0xbe, 0x8c,
-	0x61, 0x7f, 0x95, 0x3e, 0xf8, 0x53, 0x12, 0x6e, 0x4b, 0x9a, 0x67, 0x9c, 0x13, 0xfa, 0x18, 0x51,
-	0xd7, 0x2c, 0xad, 0x43, 0x4c, 0xff, 0x9f, 0x26, 0xfa, 0x14, 0x8c, 0x9e, 0x00, 0x44, 0x2f, 0x50,
-	0x88, 0xbe, 0xaf, 0x55, 0x34, 0x47, 0xbf, 0xd0, 0x1c, 0x52, 0x2d, 0x67, 0xd7, 0xa7, 0xbc, 0x51,
-	0xa1, 0xf7, 0x61, 0xb3, 0xd9, 0xd3, 0x35, 0x8f, 0x4c, 0x78, 0xe5, 0x40, 0x77, 0xa7, 0xbf, 0x7f,
-	0x04, 0xcf, 0x40, 0xd9, 0xed, 0x79, 0x0f, 0x24, 0xe8, 0x31, 0x5c, 0x6f, 0x78, 0x0e, 0xd1, 0xcc,
-	0x30, 0xb3, 0x5b, 0x63, 0xd7, 0x78, 0xd1, 0xec, 0x79, 0x97, 0x59, 0x88, 0x98, 0xf6, 0x93, 0xc5,
-	0x77, 0xbf, 0xfc, 0xac, 0x63, 0x78, 0x67, 0xfd, 0x93, 0xfc, 0xa9, 0x6d, 0x16, 0xec, 0x1e, 0xb1,
-	0x4e, 0x6d, 0x47, 0x2f, 0xd0, 0x27, 0x89, 0x87, 0xe6, 0x70, 0xf5, 0x0f, 0x0d, 0xcb, 0x23, 0x4e,
-	0x5b, 0x3b, 0x25, 0x85, 0xf3, 0x47, 0x85, 0x8e, 0x5d, 0xd0, 0x4d, 0xe3, 0x64, 0x31, 0xa0, 0x7e,
-	0xf4, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0x1c, 0x32, 0xf3, 0xdf, 0x3a, 0x17, 0x00, 0x00,
+	// 2184 bytes of a gzipped FileDescriptorProto
+	0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xac, 0x58, 0x5b, 0x73, 0xdb, 0xc6,
+	0x15, 0x16, 0x05, 0x51, 0x12, 0x8f, 0x24, 0x1a, 0xde, 0x51, 0x6c, 0x59, 0xae, 0x6d, 0x85, 0x4e,
+	0x62, 0x59, 0xb5, 0x49, 0x47, 0x76, 0xed, 0x7a, 0xf2, 0x90, 0x40, 0x20, 0x24, 0xa2, 0x26, 0x01,
+	0xcd, 0x12, 0xa4, 0xea, 0x3e, 0x04, 0x03, 0x0b, 0x4b, 0x0a, 0x31, 0x01, 0x30, 0x00, 0x28, 0x55,
+	0xed, 0x4c, 0xa7, 0x7d, 0xea, 0xf4, 0xad, 0x97, 0xf4, 0xa9, 0x9d, 0xfe, 0x82, 0xa6, 0xfd, 0x03,
+	0xe9, 0xed, 0xad, 0x97, 0x3f, 0xd0, 0xfc, 0x88, 0xbe, 0xf5, 0x9e, 0xde, 0x06, 0xbb, 0x20, 0x01,
+	0x82, 0x37, 0x79, 0xa6, 0x6f, 0xc4, 0x39, 0xdf, 0xf9, 0xbe, 0xb3, 0x7b, 0xce, 0x5e, 0xb8, 0xb0,
+	0x65, 0xda, 0x56, 0xe9, 0xe4, 0x4c, 0x27, 0xa7, 0xc4, 0x09, 0x7c, 0xdd, 0x6e, 0xdb, 0x81, 0xee,
+	0x13, 0xef, 0xd4, 0x3a, 0x26, 0xc5, 0xae, 0xe7, 0x06, 0x2e, 0xe2, 0x4c, 0xdb, 0xda, 0xbc, 0x1c,
+	0xc2, 0x8e, 0x5d, 0xdb, 0x76, 0x1d, 0x9f, 0xd9, 0x37, 0x57, 0x59, 0x64, 0xf4, 0x75, 0xab, 0xed,
+	0xba, 0xed, 0x0e, 0x29, 0xd1, 0xaf, 0x17, 0xbd, 0x56, 0x29, 0xb0, 0x6c, 0xe2, 0x07, 0x86, 0xdd,
+	0x8d, 0x00, 0xd7, 0xd3, 0x00, 0x62, 0x77, 0x83, 0x73, 0xe6, 0x2c, 0xfc, 0x28, 0x03, 0xb9, 0xa6,
+	0xd1, 0xe9, 0x11, 0xed, 0xbc, 0x4b, 0xd0, 0x35, 0x58, 0xb2, 0x9c, 0x40, 0x3f, 0x35, 0x3a, 0x1b,
+	0x99, 0xad, 0xcc, 0x36, 0x57, 0x99, 0xc3, 0x8b, 0x96, 0x13, 0x34, 0x8d, 0x0e, 0xba, 0x0e, 0xcb,
+	0xbd, 0xbe, 0x6f, 0x7e, 0x2b, 0xb3, 0xbd, 0x50, 0x99, 0xc3, 0x4b, 0xbd, 0xc8, 0x79, 0x03, 0x72,
+	0xad, 0x8e, 0x6b, 0x30, 0x2f, 0xb7, 0x95, 0xd9, 0x9e, 0xaf, 0xcc, 0xe1, 0x65, 0x6a, 0x0a, 0xdd,
+	0x0f, 0x20, 0x17, 0x9c, 0x77, 0x89, 0xda, 0x6a, 0x1a, 0x9d, 0x8d, 0x85, 0xad, 0xcc, 0x76, 0x7e,
+	0x17, 0x15, 0x4d, 0xdb, 0x2a, 0x96, 0x8d, 0xc0, 0x18, 0xa8, 0xe3, 0x18, 0xb4, 0x97, 0x05, 0xee,
+	0xd4, 0xe8, 0x14, 0x30, 0xc0, 0x91, 0x11, 0x10, 0xaf, 0x66, 0x78, 0x2f, 0x7d, 0x54, 0x80, 0x85,
+	0x13, 0xab, 0x7d, 0x42, 0x53, 0x5b, 0xd9, 0xcd, 0x53, 0x86, 0x38, 0x9a, 0xfa, 0xd0, 0x16, 0x70,
+	0x1d, 0xf7, 0x8c, 0x66, 0x38, 0x0a, 0x09, 0x5d, 0x85, 0x97, 0x00, 0xda, 0x89, 0x47, 0xfc, 0x13,
+	0xb7, 0x63, 0xfa, 0xe8, 0x0e, 0x64, 0x7b, 0xdd, 0x2e, 0xf1, 0x22, 0xd2, 0x4b, 0x34, 0x22, 0xd6,
+	0xac, 0xcc, 0x61, 0xe6, 0x0f, 0x81, 0x1d, 0xf7, 0x8c, 0x78, 0x11, 0xf5, 0x38, 0x20, 0xf5, 0xef,
+	0xad, 0x40, 0x2e, 0xe8, 0xf3, 0x17, 0xbe, 0x01, 0xeb, 0x03, 0x31, 0xd9, 0x69, 0xb9, 0x9e, 0x6d,
+	0x04, 0x96, 0xeb, 0xa0, 0x2f, 0x40, 0xde, 0x7d, 0x11, 0x56, 0x9b, 0x98, 0xe1, 0x9c, 0xf5, 0xc8,
+	0x84, 0x41, 0xad, 0xf5, 0x51, 0xd4, 0x84, 0x4a, 0x00, 0x03, 0x6e, 0x7f, 0x28, 0x93, 0x78, 0x48,
+	0x38, 0x01, 0x29, 0x7c, 0x92, 0x81, 0x65, 0x29, 0x6c, 0x30, 0xb1, 0xd5, 0x46, 0xdb, 0xb0, 0x4c,
+	0x9b, 0x4d, 0xb7, 0x4c, 0x2a, 0x97, 0xdf, 0x5d, 0xa3, 0xb1, 0x14, 0x20, 0x9b, 0x3e, 0x5e, 0x22,
+	0xec, 0x17, 0xba, 0x0d, 0x6b, 0x96, 0xaf, 0x1f, 0xbb, 0x4e, 0xcb, 0x6a, 0xf7, 0x3c, 0x62, 0x52,
+	0xa9, 0x65, 0xbc, 0x6a, 0xf9, 0xe2, 0xc0, 0x96, 0x4a, 0x86, 0x9b, 0x99, 0x0c, 0x7a, 0x00, 0xf9,
+	0x63, 0xd7, 0xee, 0xba, 0x4e, 0x98, 0x43, 0xaf, 0x67, 0x99, 0xb4, 0x17, 0x56, 0x76, 0x73, 0x34,
+	0xa8, 0xd1, 0xb3, 0x4c, 0xbc, 0x36, 0x00, 0x84, 0x9f, 0x85, 0x07, 0x90, 0xa3, 0xc9, 0xf9, 0x61,
+	0xfa, 0xb7, 0x21, 0x6b, 0x05, 0xc4, 0xf6, 0x37, 0x32, 0x5b, 0xdc, 0xf6, 0x4a, 0x32, 0x77, 0xb1,
+	0xd5, 0xc6, 0xcc, 0x57, 0xf8, 0xc9, 0x3c, 0xa0, 0xaa, 0xe5, 0x07, 0x2c, 0x0c, 0x13, 0xbf, 0xeb,
+	0x3a, 0x3e, 0x41, 0xb7, 0x61, 0xd1, 0x0f, 0x8c, 0xa0, 0xe7, 0x47, 0x03, 0x5f, 0xa1, 0xc1, 0x75,
+	0x6a, 0xc2, 0x91, 0x0b, 0x3d, 0x86, 0x45, 0x8f, 0x18, 0xbe, 0xeb, 0xd0, 0xe1, 0xe6, 0x77, 0x6f,
+	0x52, 0xd0, 0x28, 0x5b, 0x11, 0x53, 0x14, 0x8e, 0xd0, 0xe8, 0x2d, 0x58, 0x64, 0x8b, 0x38, 0x9a,
+	0x84, 0x7c, 0x9c, 0x59, 0x98, 0x38, 0x8e, 0xbc, 0xe1, 0xac, 0xb2, 0x08, 0xdd, 0x24, 0x81, 0x61,
+	0xb1, 0xa5, 0x90, 0xc3, 0xab, 0xcc, 0x58, 0xa6, 0xb6, 0xc2, 0xfb, 0xb0, 0xc8, 0xe8, 0xd1, 0x3a,
+	0xf0, 0x0d, 0xa5, 0x2c, 0xed, 0xcb, 0x8a, 0x54, 0xd6, 0xb1, 0x24, 0xd4, 0x55, 0x85, 0x9f, 0x43,
+	0x08, 0xf2, 0x0d, 0xe5, 0x99, 0xa2, 0x1e, 0x29, 0x7a, 0x59, 0x6a, 0xca, 0xa2, 0xc4, 0x67, 0x42,
+	0x9b, 0xac, 0x68, 0x12, 0x56, 0x84, 0xaa, 0x2e, 0x61, 0xac, 0x62, 0x7e, 0x1e, 0x5d, 0x01, 0xc4,
+	0xfc, 0x7a, 0x43, 0xc1, 0x92, 0x20, 0x56, 0x84, 0xbd, 0xaa, 0xc4, 0x73, 0x85, 0x8f, 0x33, 0xb0,
+	0x19, 0xa5, 0x16, 0x95, 0x92, 0x76, 0x24, 0x26, 0x1f, 0xf6, 0x88, 0x1f, 0xa0, 0x1d, 0x58, 0x31,
+	0x49, 0xb8, 0x07, 0xb1, 0x02, 0x65, 0xd2, 0x05, 0x02, 0xe6, 0x0d, 0x7f, 0xa3, 0x1d, 0x58, 0x3a,
+	0x3e, 0x31, 0x9c, 0x36, 0xf1, 0x87, 0xd6, 0xdb, 0x60, 0xe0, 0xe1, 0x0e, 0x11, 0x01, 0xd0, 0x0e,
+	0xf0, 0x1e, 0xf1, 0x49, 0xa0, 0x07, 0xae, 0x6e, 0x92, 0x96, 0xd1, 0xeb, 0x04, 0x74, 0xb6, 0x96,
+	0x2b, 0x73, 0x38, 0x4f, 0x3d, 0x9a, 0x5b, 0x66, 0xf6, 0x70, 0x05, 0xb9, 0x5d, 0xc2, 0xf2, 0x2a,
+	0xfc, 0x78, 0x1e, 0xae, 0x8f, 0xcd, 0xf7, 0x55, 0x2a, 0xfb, 0x6e, 0xaa, 0xb2, 0x77, 0x92, 0x89,
+	0x8e, 0xa3, 0x4d, 0x97, 0x78, 0xa4, 0x74, 0xdc, 0x98, 0xd2, 0x79, 0xff, 0xa7, 0xd2, 0x51, 0x5b,
+	0x53, 0xa8, 0xca, 0x65, 0x5d, 0x54, 0x95, 0x7d, 0xf9, 0x80, 0xe7, 0x26, 0x94, 0x73, 0xa1, 0xf0,
+	0x51, 0x06, 0xd6, 0xe8, 0x38, 0x6a, 0x24, 0x30, 0xc2, 0xed, 0xf4, 0x95, 0x2a, 0x38, 0xba, 0x22,
+	0xe7, 0xa7, 0xaf, 0x48, 0xf4, 0x66, 0x32, 0xc2, 0x31, 0x6c, 0x12, 0xcd, 0x44, 0x0c, 0x53, 0x0c,
+	0x9b, 0x14, 0x3e, 0x00, 0x5e, 0x30, 0x6d, 0xcb, 0x09, 0xeb, 0x40, 0x44, 0xda, 0x03, 0x68, 0x07,
+	0x38, 0xb7, 0xd3, 0xdf, 0x79, 0x36, 0xa8, 0x82, 0xd8, 0x0f, 0x8a, 0xc1, 0x38, 0x04, 0x85, 0x58,
+	0x87, 0x9c, 0x45, 0xd5, 0x9a, 0x82, 0x75, 0xc8, 0x59, 0xa1, 0x0d, 0x97, 0xd4, 0x2e, 0xf1, 0x92,
+	0x52, 0x77, 0x93, 0x52, 0x57, 0x87, 0xc3, 0x07, 0x58, 0xa6, 0x74, 0x37, 0xa9, 0x34, 0x19, 0x1a,
+	0x0a, 0x85, 0x83, 0xea, 0x18, 0x9e, 0x7d, 0xe1, 0x41, 0x0d, 0xc0, 0x17, 0x18, 0x54, 0x02, 0x1b,
+	0x69, 0x35, 0x7c, 0xa3, 0x4d, 0x2e, 0xaa, 0x15, 0x83, 0x67, 0x6b, 0x25, 0xb1, 0xa1, 0x56, 0x17,
+	0x50, 0x3d, 0x30, 0x1c, 0xf3, 0xc5, 0x79, 0x52, 0xed, 0x5e, 0x52, 0x6d, 0x73, 0x98, 0x21, 0x09,
+	0x67, 0x7a, 0xf7, 0x92, 0x7a, 0x53, 0xd1, 0xa1, 0xe2, 0xb7, 0x39, 0xb8, 0x94, 0xd0, 0x0a, 0x4f,
+	0x46, 0x24, 0x01, 0x32, 0xc2, 0xca, 0xea, 0xe1, 0x9a, 0x25, 0x3a, 0xdb, 0x38, 0xa2, 0xf6, 0x7d,
+	0x8d, 0x12, 0xa6, 0x3b, 0xaa, 0x32, 0x87, 0x79, 0x23, 0xdd, 0x65, 0x7b, 0x70, 0x39, 0xdc, 0x3c,
+	0x86, 0x59, 0x58, 0x57, 0xaf, 0x53, 0x96, 0x54, 0xaf, 0x54, 0xe6, 0xf0, 0x25, 0x37, 0xd5, 0x3e,
+	0x61, 0x2a, 0x61, 0x3d, 0x86, 0x49, 0xb8, 0x64, 0x2a, 0xa9, 0x3e, 0xa0, 0xa9, 0xa4, 0x7b, 0x43,
+	0x02, 0xd4, 0x0b, 0xa7, 0x7a, 0x98, 0x66, 0x21, 0x41, 0x93, 0x2e, 0x71, 0x48, 0xd3, 0x4b, 0x97,
+	0xfd, 0x19, 0xac, 0xfb, 0x6c, 0x06, 0x87, 0x89, 0xb2, 0x94, 0xe8, 0x6a, 0x7f, 0xbf, 0x4b, 0xd5,
+	0xaf, 0x32, 0x87, 0x91, 0x3f, 0x62, 0xdd, 0xcb, 0xc3, 0x6a, 0x92, 0xa4, 0xf0, 0x59, 0x06, 0xf8,
+	0x03, 0xe2, 0x10, 0xcf, 0x3a, 0x66, 0xd7, 0x80, 0xb0, 0x14, 0x1b, 0xb0, 0x64, 0x13, 0x3f, 0xcc,
+	0x83, 0xce, 0x7f, 0x0e, 0xf7, 0x3f, 0xd1, 0xeb, 0xb0, 0x1a, 0xfd, 0xd4, 0x8f, 0x5d, 0x93, 0x4d,
+	0x6c, 0x0e, 0xaf, 0x44, 0x36, 0xd1, 0x35, 0x09, 0x7a, 0x17, 0x96, 0x7d, 0x72, 0x4a, 0x3c, 0x2b,
+	0x38, 0xa7, 0x53, 0x96, 0xdf, 0xbd, 0x4d, 0x53, 0x4c, 0xab, 0xb0, 0xed, 0xb7, 0x1e, 0x41, 0xf1,
+	0x20, 0xa8, 0x60, 0x45, 0x3b, 0x5a, 0xdf, 0x85, 0x6e, 0xc2, 0xa6, 0xd4, 0x94, 0x14, 0x4d, 0xaf,
+	0x4b, 0x4d, 0x09, 0xcb, 0xda, 0x73, 0xbd, 0xa1, 0xd4, 0x0f, 0x25, 0x51, 0xde, 0x97, 0xa5, 0x32,
+	0x3f, 0x87, 0x56, 0x61, 0x59, 0xc4, 0xb2, 0x26, 0x8b, 0x42, 0x95, 0xcf, 0xa0, 0x1c, 0x64, 0x6b,
+	0xc2, 0x97, 0xe8, 0x46, 0x1a, 0xfe, 0x94, 0x15, 0x15, 0xf3, 0x1c, 0x02, 0x58, 0x54, 0x54, 0x5c,
+	0x13, 0xaa, 0xfc, 0x02, 0x5a, 0x86, 0x05, 0x59, 0xd9, 0x57, 0xf9, 0x6c, 0xe1, 0x3b, 0x1c, 0x64,
+	0xa9, 0x16, 0x7a, 0x0a, 0x79, 0x76, 0x37, 0xb2, 0x49, 0x60, 0x98, 0x46, 0x60, 0x44, 0x9d, 0x87,
+	0xe2, 0x93, 0xa2, 0xbf, 0xc3, 0xe2, 0x35, 0xd2, 0xff, 0x0c, 0x81, 0x43, 0xd7, 0xaa, 0xf9, 0xa9,
+	0xd7, 0xaa, 0x27, 0x90, 0xf3, 0x0c, 0xcb, 0x27, 0xa6, 0x3e, 0xb8, 0x2b, 0x6c, 0x16, 0xd9, 0xed,
+	0xbc, 0xd8, 0xbf, 0x9d, 0x17, 0xb5, 0xfe, 0xf5, 0x1d, 0x2f, 0x33, 0xb0, 0xe6, 0xa3, 0xf7, 0x20,
+	0x3f, 0xb8, 0x47, 0xe9, 0x96, 0xd3, 0x72, 0xa3, 0x2e, 0xba, 0x36, 0x7c, 0xdd, 0x4a, 0xdc, 0x30,
+	0xf1, 0x5a, 0x90, 0xb4, 0xa2, 0x6b, 0xb0, 0x6c, 0x98, 0x51, 0x6c, 0x96, 0xd5, 0xd4, 0x30, 0x99,
+	0xeb, 0x3d, 0xb8, 0x9c, 0x6c, 0x09, 0x86, 0x59, 0x4c, 0xac, 0x98, 0xd4, 0x4a, 0xc5, 0x97, 0xfc,
+	0xd4, 0xd2, 0x15, 0x01, 0xb5, 0x59, 0x75, 0xf5, 0x68, 0x26, 0x42, 0x8a, 0xa5, 0x44, 0xa3, 0xa7,
+	0x8b, 0x8f, 0xf9, 0x76, 0xca, 0xb2, 0xf3, 0xe9, 0x7a, 0x74, 0x55, 0x95, 0x4d, 0x1f, 0x6d, 0xc0,
+	0x3a, 0x2b, 0xb9, 0x22, 0xd4, 0xc2, 0x23, 0x2f, 0x3a, 0x4b, 0xf9, 0xb9, 0xb8, 0x19, 0x34, 0x2c,
+	0x28, 0x75, 0x51, 0x92, 0x9b, 0x12, 0xd6, 0x0f, 0xab, 0x8d, 0x03, 0x5d, 0x6d, 0x68, 0xbc, 0x89,
+	0x6e, 0xc0, 0xb5, 0x09, 0x7e, 0x59, 0xe1, 0x09, 0xba, 0x0f, 0x77, 0x47, 0xdd, 0x4d, 0xb5, 0xaa,
+	0x09, 0x07, 0x92, 0x2e, 0xec, 0xa9, 0x4d, 0x49, 0xd7, 0x2a, 0x58, 0xaa, 0x57, 0xd4, 0x6a, 0x99,
+	0x6f, 0x4d, 0x87, 0xef, 0x49, 0x55, 0xf5, 0x28, 0x01, 0x6f, 0xa3, 0xb7, 0xe1, 0xfe, 0x28, 0x5c,
+	0x93, 0x6a, 0x87, 0x12, 0x16, 0xb4, 0x06, 0x1e, 0x55, 0x38, 0x99, 0x1d, 0x92, 0x56, 0xb1, 0xc6,
+	0x27, 0x25, 0x36, 0x30, 0x0e, 0x6d, 0x69, 0x85, 0x0f, 0xa6, 0xc3, 0xd3, 0xec, 0x2f, 0x51, 0x11,
+	0x76, 0x46, 0xe1, 0xf8, 0xcb, 0xfa, 0xa1, 0x7a, 0x24, 0xe1, 0x11, 0xfa, 0xce, 0x0c, 0x7c, 0x9a,
+	0xdf, 0x1e, 0x8f, 0xd7, 0x26, 0xf1, 0x3b, 0x33, 0xf0, 0x69, 0x7e, 0x77, 0x7c, 0x03, 0xec, 0x0b,
+	0x72, 0xb5, 0x81, 0x25, 0xbe, 0x8b, 0x9e, 0xc0, 0xc3, 0x0b, 0x37, 0x80, 0x8e, 0x25, 0x51, 0x6d,
+	0x4a, 0x58, 0x2a, 0xf3, 0x1f, 0x4e, 0x0f, 0x4c, 0xa5, 0x91, 0x08, 0xf4, 0xd0, 0x3b, 0xf0, 0xe4,
+	0x95, 0x9a, 0x22, 0x11, 0xec, 0xcf, 0x0e, 0x9e, 0xac, 0x1c, 0x8c, 0x4f, 0x79, 0x42, 0xa3, 0x24,
+	0x02, 0x7b, 0xd3, 0x03, 0x27, 0x2b, 0x9e, 0xa2, 0x2f, 0xc2, 0xa3, 0x8b, 0x37, 0x4f, 0x22, 0xf2,
+	0x6c, 0x46, 0xe4, 0x64, 0xcd, 0xaf, 0x8e, 0x8f, 0xd4, 0x66, 0x6b, 0x9e, 0xcf, 0x88, 0x9c, 0xac,
+	0xf9, 0x35, 0x74, 0x07, 0x6e, 0x4f, 0x6c, 0xb2, 0x04, 0xf0, 0xeb, 0xe8, 0x2a, 0x20, 0x06, 0x3c,
+	0xac, 0x37, 0xe2, 0x6d, 0xea, 0xb7, 0x19, 0x74, 0x05, 0x2e, 0xa7, 0x1c, 0xb2, 0xc2, 0xff, 0x2e,
+	0x65, 0xef, 0xb7, 0xed, 0xef, 0x33, 0x68, 0x0b, 0xae, 0x8f, 0xd8, 0x13, 0x4a, 0x7f, 0x48, 0x44,
+	0xee, 0x0b, 0xca, 0x20, 0xf2, 0xa7, 0xf3, 0x71, 0x0a, 0xa1, 0x7d, 0x90, 0xc2, 0xc7, 0xf3, 0xc3,
+	0x01, 0xfd, 0x14, 0x7e, 0x36, 0x1f, 0x4b, 0x25, 0x88, 0x12, 0x52, 0x3f, 0x9f, 0x47, 0x77, 0xe1,
+	0x0d, 0x86, 0x10, 0x0f, 0x1b, 0x63, 0x5a, 0x79, 0x70, 0x1a, 0x7f, 0x97, 0x43, 0x6f, 0xc1, 0xeb,
+	0xd3, 0xa0, 0xfb, 0x82, 0x26, 0x54, 0xf9, 0xef, 0x71, 0xe8, 0x21, 0x14, 0x2f, 0x42, 0x99, 0xc8,
+	0xe3, 0xfb, 0x1c, 0x7a, 0x00, 0x9f, 0x9f, 0x49, 0x9e, 0x88, 0xf8, 0x01, 0x87, 0xde, 0x80, 0x5b,
+	0x71, 0x44, 0xa3, 0x3e, 0x6e, 0xd7, 0xff, 0x88, 0x43, 0xc5, 0xfe, 0x96, 0x39, 0x11, 0x95, 0x60,
+	0xfd, 0x21, 0x87, 0x36, 0xe1, 0x35, 0x86, 0xaf, 0x1c, 0x45, 0x7f, 0xed, 0x74, 0x2c, 0xd5, 0x25,
+	0x8d, 0xff, 0x33, 0x87, 0x4a, 0xfd, 0xfd, 0x2b, 0xf6, 0x4d, 0x99, 0xb1, 0xbf, 0x70, 0xe8, 0x1e,
+	0xdc, 0x99, 0x1d, 0xc0, 0xe6, 0xed, 0xaf, 0x1c, 0x7a, 0xda, 0xef, 0xe1, 0x8b, 0xd0, 0x27, 0xb2,
+	0xfe, 0x1b, 0x87, 0x1e, 0xc3, 0xdb, 0x17, 0x14, 0x4a, 0xc4, 0xfd, 0x9d, 0x43, 0xd7, 0xe1, 0xca,
+	0xe8, 0x68, 0xf7, 0x54, 0x55, 0xe3, 0xff, 0xc1, 0xa1, 0x3b, 0x50, 0x18, 0x38, 0x93, 0x6c, 0x75,
+	0x49, 0xa9, 0xab, 0x6c, 0x8d, 0x48, 0x65, 0xfe, 0x9f, 0xc3, 0xc3, 0x14, 0xaa, 0xd5, 0x31, 0xe0,
+	0x7a, 0x1f, 0xfd, 0x19, 0x87, 0xb6, 0xfb, 0x0b, 0x2e, 0xd4, 0x94, 0xeb, 0xcf, 0x26, 0xd4, 0xee,
+	0x5f, 0x1c, 0xda, 0xed, 0x1f, 0xa8, 0x53, 0x91, 0x89, 0x11, 0xfd, 0x9b, 0x43, 0x3b, 0xf0, 0xe6,
+	0x20, 0xa6, 0x26, 0xd5, 0x54, 0xfc, 0x7c, 0x02, 0xff, 0x7f, 0x38, 0xf4, 0x08, 0x4a, 0x17, 0xc2,
+	0x26, 0x14, 0xfe, 0xcb, 0xa1, 0x9b, 0xfd, 0x53, 0xa9, 0x72, 0xa4, 0x2b, 0xda, 0xa1, 0x5e, 0x7f,
+	0xae, 0x88, 0x83, 0x45, 0xfa, 0xcd, 0x85, 0xa1, 0xf1, 0xa5, 0xfd, 0x09, 0xa6, 0x6f, 0x2d, 0xa0,
+	0x1b, 0xb0, 0xc1, 0x90, 0x55, 0x59, 0x91, 0x74, 0x51, 0xc0, 0xe5, 0x78, 0x51, 0xff, 0x71, 0x01,
+	0x7d, 0x0e, 0xae, 0x8e, 0x75, 0xcb, 0x0a, 0xff, 0x69, 0x42, 0x46, 0x54, 0x6b, 0x87, 0xaa, 0x42,
+	0xcf, 0x81, 0x72, 0x4d, 0x56, 0xf4, 0xba, 0x26, 0x68, 0x92, 0x2e, 0x56, 0x04, 0xe5, 0x40, 0x2a,
+	0xf3, 0x9f, 0x64, 0xe3, 0x3a, 0xc6, 0x48, 0xf5, 0x50, 0xc2, 0x29, 0xe0, 0x2f, 0xb2, 0x63, 0x29,
+	0xab, 0x02, 0xae, 0xa5, 0x90, 0xbf, 0x1c, 0x8b, 0x64, 0x33, 0x37, 0x8c, 0xfc, 0x55, 0x36, 0xae,
+	0x47, 0x8c, 0xac, 0x6b, 0x82, 0x52, 0xde, 0x7b, 0x9e, 0xc2, 0xfe, 0x3a, 0x8b, 0x0a, 0x70, 0x23,
+	0x8d, 0x3d, 0x90, 0x14, 0x09, 0xcb, 0xa2, 0x4e, 0xed, 0xfc, 0x6f, 0xb2, 0xbb, 0x7f, 0xca, 0xc0,
+	0x0d, 0xc5, 0x08, 0xac, 0x53, 0xc2, 0xde, 0x7c, 0x6a, 0x86, 0x63, 0xb4, 0x89, 0x4d, 0xff, 0x64,
+	0xd0, 0x17, 0x77, 0xf4, 0x18, 0x20, 0x7e, 0xe8, 0x43, 0xec, 0x19, 0xb3, 0x62, 0x78, 0xe6, 0x99,
+	0xe1, 0x11, 0xb9, 0xbc, 0x79, 0x75, 0xc2, 0x53, 0x20, 0x7a, 0x1f, 0xae, 0x35, 0xba, 0xa6, 0x11,
+	0x90, 0x31, 0x8f, 0x49, 0xe8, 0xd6, 0xe4, 0x67, 0x26, 0xfa, 0xda, 0xb6, 0xb9, 0x35, 0xeb, 0x1d,
+	0x0a, 0x3d, 0x82, 0xd5, 0x7a, 0xe0, 0x11, 0xc3, 0x8e, 0x32, 0xbb, 0x32, 0xf2, 0x7f, 0x41, 0xb2,
+	0xbb, 0xc1, 0xf9, 0x26, 0xc4, 0x4c, 0x0f, 0x32, 0x7b, 0xef, 0x7c, 0xe5, 0x69, 0xdb, 0x0a, 0x4e,
+	0x7a, 0x2f, 0x8a, 0xc7, 0xae, 0x5d, 0x72, 0xbb, 0xc4, 0x39, 0x76, 0x3d, 0xb3, 0xc4, 0x5e, 0x7e,
+	0xee, 0xdb, 0x83, 0xd1, 0xdf, 0xb7, 0x9c, 0x80, 0x78, 0x2d, 0xe3, 0x98, 0x94, 0x4e, 0x1f, 0x96,
+	0xda, 0x6e, 0xc9, 0xb4, 0xad, 0x17, 0x8b, 0x94, 0xfa, 0xe1, 0xff, 0x02, 0x00, 0x00, 0xff, 0xff,
+	0x70, 0xec, 0xeb, 0x17, 0xa1, 0x18, 0x00, 0x00,
 }
 
 // Reference imports to suppress errors if they are not otherwise used.
diff --git a/protos/dmi/hw_events_mgmt_service.proto b/protos/dmi/hw_events_mgmt_service.proto
index 7cde7d9..f6b78dd 100644
--- a/protos/dmi/hw_events_mgmt_service.proto
+++ b/protos/dmi/hw_events_mgmt_service.proto
@@ -92,7 +92,9 @@
     EVENT_COMPONENT_ALARM_STATE_CHANGED = 702;

     EVENT_COMPONENT_USAGE_STATE_CHANGED = 703;

     EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704;

-

+    // Generic event about a component, the payload contains GenericEventInfo in this case

+    // Use this event id only for events which do not have already a specific event id

+    EVENT_COMPONENT_GENERIC_EVENT = 705; 

     // More to be added

 }

 

@@ -218,6 +220,22 @@
         StandbyStateChange standby_state_change = 5;

     }

 }

+

+message GenericEventInfo {

+    string message = 1;                // Human-readable message

+    string message_code = 2;           // Related events should have the same code

+ 

+    enum EventSeverity {

+        EVENT_SEVERITY_UNSPECIFIED = 0;

+        CRITICAL = 1;

+        MAJOR = 2;

+        MINOR = 3;

+        NORMAL = 4;

+        INFO = 5;

+    }

+

+    EventSeverity severity = 3;        // Severity of the event       

+}

 // The Events are conveyed to external systems either by submitting them on a message bus or using gRPC server streaming.

 // The message bus topic to which are Events are submitted would be configured as startup

 // configuration of the components

@@ -229,8 +247,9 @@
     // Optional threshold information for an event

     ThresholdInformation threshold_info = 4;

     // Any additional info regarding the event

-    string add_info = 5;

+    string add_info = 5; // Stringified JSON with extra details

     StateChangeInfo state_change_info = 6; // Only set for state change events

+    GenericEventInfo generic_event_info = 7; // Only set for event_id = EVENT_COMPONENT_GENERIC_EVENT

 }

 

 service NativeEventsManagementService {

diff --git a/python/dmi/hw_events_mgmt_service_pb2.py b/python/dmi/hw_events_mgmt_service_pb2.py
index ce3500d..d3cf63c 100644
--- a/python/dmi/hw_events_mgmt_service_pb2.py
+++ b/python/dmi/hw_events_mgmt_service_pb2.py
@@ -19,7 +19,7 @@
 from google.protobuf import empty_pb2 as google_dot_protobuf_dot_empty__pb2
 
 
-DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"u\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x12%\n\ttypeOfVal\x18\x04 \x01(\x0e\x32\x12.dmi.DataValueTypeB\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"\x8a\x01\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.Uuid\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"`\n\x10\x41\x64minStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\"]\n\x0fOperStateChange\x12$\n\x03old\x18\x01 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12$\n\x03new\x18\x02 \x01(\x0e\x32\x17.dmi.ComponentOperState\"`\n\x10\x41larmStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\"`\n\x10UsageStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentUsageState\"f\n\x12StandbyStateChange\x12\'\n\x03old\x18\x01 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\x12\'\n\x03new\x18\x02 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\xac\x02\n\x0fStateChangeInfo\x12\x33\n\x12\x61\x64min_state_change\x18\x01 \x01(\x0b\x32\x15.dmi.AdminStateChangeH\x00\x12\x31\n\x11oper_state_change\x18\x02 \x01(\x0b\x32\x14.dmi.OperStateChangeH\x00\x12\x33\n\x12\x61larm_state_change\x18\x03 \x01(\x0b\x32\x15.dmi.AlarmStateChangeH\x00\x12\x33\n\x12usage_state_change\x18\x04 \x01(\x0b\x32\x15.dmi.UsageStateChangeH\x00\x12\x37\n\x14standby_state_change\x18\x05 \x01(\x0b\x32\x17.dmi.StandbyStateChangeH\x00\x42\x0e\n\x0cstate_change\"\xf9\x01\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t\x12/\n\x11state_change_info\x18\x06 \x01(\x0b\x32\x14.dmi.StateChangeInfo*\xb5\x14\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12$\n\x1f\x45VENT_CPU_USAGE_ABOVE_THRESHOLD\x10\x94\x03\x12.\n)EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\x95\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12(\n#EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD\x10\xfc\x03\x12\x32\n-EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xfd\x03\x12*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\x10\xfe\x03\x12\x34\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xff\x03\x12\x1e\n\x19\x45VENT_HW_NTP_SYNC_FAILURE\x10\x80\x04\x12(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVERED\x10\x81\x04\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x12(\n#EVENT_COMPONENT_ADMIN_STATE_CHANGED\x10\xbc\x05\x12\'\n\"EVENT_COMPONENT_OPER_STATE_CHANGED\x10\xbd\x05\x12(\n#EVENT_COMPONENT_ALARM_STATE_CHANGED\x10\xbe\x05\x12(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\x10\xbf\x05\x12*\n%EVENT_COMPONENT_STANDBY_STATE_CHANGED\x10\xc0\x05\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
+DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n dmi/hw_events_mgmt_service.proto\x12\x03\x64mi\x1a\x11\x64mi/commons.proto\x1a\x0c\x64mi/hw.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a\x1bgoogle/protobuf/empty.proto\"u\n\tValueType\x12\x11\n\x07int_val\x18\x01 \x01(\x03H\x00\x12\x12\n\x08uint_val\x18\x02 \x01(\x04H\x00\x12\x13\n\tfloat_val\x18\x03 \x01(\x02H\x00\x12%\n\ttypeOfVal\x18\x04 \x01(\x0e\x32\x12.dmi.DataValueTypeB\x05\n\x03val\"G\n\nWaterMarks\x12\x1c\n\x04high\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12\x1b\n\x03low\x18\x02 \x01(\x0b\x32\x0e.dmi.ValueType\"]\n\nThresholds\x12 \n\x05upper\x18\x01 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x12 \n\x05lower\x18\x02 \x01(\x0b\x32\x0f.dmi.WaterMarksH\x00\x42\x0b\n\tthreshold\"c\n\x14ThresholdInformation\x12&\n\x0eobserved_value\x18\x01 \x01(\x0b\x32\x0e.dmi.ValueType\x12#\n\nthresholds\x18\x02 \x01(\x0b\x32\x0f.dmi.Thresholds\"\x8a\x01\n\x08\x45ventCfg\x12\x1f\n\x08\x65vent_id\x18\x01 \x01(\x0e\x32\r.dmi.EventIds\x12\x15\n\ris_configured\x18\x02 \x01(\x08\x12#\n\nthresholds\x18\x03 \x01(\x0b\x32\x0f.dmi.Thresholds\x12!\n\x0e\x63omponent_uuid\x18\x04 \x01(\x0b\x32\t.dmi.Uuid\")\n\tEventsCfg\x12\x1c\n\x05items\x18\x01 \x03(\x0b\x32\r.dmi.EventCfg\"\xf8\x01\n\x12ListEventsResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12.\n\x06reason\x18\x02 \x01(\x0e\x32\x1e.dmi.ListEventsResponse.Reason\x12\x1e\n\x06\x65vents\x18\x03 \x01(\x0b\x32\x0e.dmi.EventsCfg\x12\x15\n\rreason_detail\x18\x04 \x01(\t\"^\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x03\"\x88\x01\n\x1a\x45ventsConfigurationRequest\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x07\x63hanges\x18\x02 \x01(\x0b\x32\x0e.dmi.EventsCfgH\x00\x12\x1a\n\x10reset_to_default\x18\x03 \x01(\x08H\x00\x42\x0b\n\toperation\"\xfe\x01\n\x1b\x45ventsConfigurationResponse\x12\x1b\n\x06status\x18\x01 \x01(\x0e\x32\x0b.dmi.Status\x12\x37\n\x06reason\x18\x02 \x01(\x0e\x32\'.dmi.EventsConfigurationResponse.Reason\x12\x15\n\rreason_detail\x18\x03 \x01(\t\"r\n\x06Reason\x12\x14\n\x10UNDEFINED_REASON\x10\x00\x12\x12\n\x0eUNKNOWN_DEVICE\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x12\n\x0eINVALID_CONFIG\x10\x03\x12\x16\n\x12\x44\x45VICE_UNREACHABLE\x10\x04\"j\n\rEventMetaData\x12\x1e\n\x0b\x64\x65vice_uuid\x18\x01 \x01(\x0b\x32\t.dmi.Uuid\x12!\n\x0e\x63omponent_uuid\x18\x02 \x01(\x0b\x32\t.dmi.Uuid\x12\x16\n\x0e\x63omponent_name\x18\x03 \x01(\t\"`\n\x10\x41\x64minStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAdminState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAdminState\"]\n\x0fOperStateChange\x12$\n\x03old\x18\x01 \x01(\x0e\x32\x17.dmi.ComponentOperState\x12$\n\x03new\x18\x02 \x01(\x0e\x32\x17.dmi.ComponentOperState\"`\n\x10\x41larmStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentAlarmState\"`\n\x10UsageStateChange\x12%\n\x03old\x18\x01 \x01(\x0e\x32\x18.dmi.ComponentUsageState\x12%\n\x03new\x18\x02 \x01(\x0e\x32\x18.dmi.ComponentUsageState\"f\n\x12StandbyStateChange\x12\'\n\x03old\x18\x01 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\x12\'\n\x03new\x18\x02 \x01(\x0e\x32\x1a.dmi.ComponentStandbyState\"\xac\x02\n\x0fStateChangeInfo\x12\x33\n\x12\x61\x64min_state_change\x18\x01 \x01(\x0b\x32\x15.dmi.AdminStateChangeH\x00\x12\x31\n\x11oper_state_change\x18\x02 \x01(\x0b\x32\x14.dmi.OperStateChangeH\x00\x12\x33\n\x12\x61larm_state_change\x18\x03 \x01(\x0b\x32\x15.dmi.AlarmStateChangeH\x00\x12\x33\n\x12usage_state_change\x18\x04 \x01(\x0b\x32\x15.dmi.UsageStateChangeH\x00\x12\x37\n\x14standby_state_change\x18\x05 \x01(\x0b\x32\x17.dmi.StandbyStateChangeH\x00\x42\x0e\n\x0cstate_change\"\xdb\x01\n\x10GenericEventInfo\x12\x0f\n\x07message\x18\x01 \x01(\t\x12\x14\n\x0cmessage_code\x18\x02 \x01(\t\x12\x35\n\x08severity\x18\x03 \x01(\x0e\x32#.dmi.GenericEventInfo.EventSeverity\"i\n\rEventSeverity\x12\x1e\n\x1a\x45VENT_SEVERITY_UNSPECIFIED\x10\x00\x12\x0c\n\x08\x43RITICAL\x10\x01\x12\t\n\x05MAJOR\x10\x02\x12\t\n\x05MINOR\x10\x03\x12\n\n\x06NORMAL\x10\x04\x12\x08\n\x04INFO\x10\x05\"\xac\x02\n\x05\x45vent\x12*\n\x0e\x65vent_metadata\x18\x01 \x01(\x0b\x32\x12.dmi.EventMetaData\x12\x1f\n\x08\x65vent_id\x18\x02 \x01(\x0e\x32\r.dmi.EventIds\x12-\n\traised_ts\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.Timestamp\x12\x31\n\x0ethreshold_info\x18\x04 \x01(\x0b\x32\x19.dmi.ThresholdInformation\x12\x10\n\x08\x61\x64\x64_info\x18\x05 \x01(\t\x12/\n\x11state_change_info\x18\x06 \x01(\x0b\x32\x14.dmi.StateChangeInfo\x12\x31\n\x12generic_event_info\x18\x07 \x01(\x0b\x32\x15.dmi.GenericEventInfo*\xd9\x14\n\x08\x45ventIds\x12\x18\n\x14\x45VENT_NAME_UNDEFINED\x10\x00\x12\x1e\n\x1a\x45VENT_TRANSCEIVER_PLUG_OUT\x10\x64\x12\x1d\n\x19\x45VENT_TRANSCEIVER_PLUG_IN\x10\x65\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD\x10\x66\x12-\n)EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD\x10g\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD\x10h\x12\x31\n-EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD\x10i\x12-\n)EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD\x10j\x12-\n)EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD\x10k\x12.\n*EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD\x10l\x12.\n*EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD\x10m\x12.\n*EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD\x10n\x12.\n*EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD\x10o\x12\x1d\n\x19\x45VENT_TRANSCEIVER_FAILURE\x10p\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_ABOVE_THRESHOLD_RECOVERED\x10q\x12\x37\n3EVENT_TRANSCEIVER_VOLTAGE_BELOW_THRESHOLD_RECOVERED\x10r\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_ABOVE_THRESHOLD_RECOVERED\x10s\x12;\n7EVENT_TRANSCEIVER_TEMPERATURE_BELOW_THRESHOLD_RECOVERED\x10t\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_ABOVE_THRESHOLD_RECOVERED\x10u\x12\x37\n3EVENT_TRANSCEIVER_CURRENT_BELOW_THRESHOLD_RECOVERED\x10v\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_ABOVE_THRESHOLD_RECOVERED\x10w\x12\x38\n4EVENT_TRANSCEIVER_RX_POWER_BELOW_THRESHOLD_RECOVERED\x10x\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_ABOVE_THRESHOLD_RECOVERED\x10y\x12\x38\n4EVENT_TRANSCEIVER_TX_POWER_BELOW_THRESHOLD_RECOVERED\x10z\x12\'\n#EVENT_TRANSCEIVER_FAILURE_RECOVERED\x10{\x12\x17\n\x12\x45VENT_PSU_PLUG_OUT\x10\xc8\x01\x12\x16\n\x11\x45VENT_PSU_PLUG_IN\x10\xc9\x01\x12\x16\n\x11\x45VENT_PSU_FAILURE\x10\xca\x01\x12 \n\x1b\x45VENT_PSU_FAILURE_RECOVERED\x10\xcb\x01\x12\x16\n\x11\x45VENT_FAN_FAILURE\x10\xac\x02\x12\x17\n\x12\x45VENT_FAN_PLUG_OUT\x10\xad\x02\x12\x16\n\x11\x45VENT_FAN_PLUG_IN\x10\xae\x02\x12 \n\x1b\x45VENT_FAN_FAILURE_RECOVERED\x10\xaf\x02\x12)\n$EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL\x10\x90\x03\x12&\n!EVENT_CPU_TEMPERATURE_ABOVE_FATAL\x10\x91\x03\x12\x33\n.EVENT_CPU_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\x92\x03\x12\x30\n+EVENT_CPU_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\x93\x03\x12$\n\x1f\x45VENT_CPU_USAGE_ABOVE_THRESHOLD\x10\x94\x03\x12.\n)EVENT_CPU_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\x95\x03\x12\x1a\n\x15\x45VENT_HW_DEVICE_RESET\x10\xf4\x03\x12/\n*EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL\x10\xf5\x03\x12,\n\'EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL\x10\xf6\x03\x12\x39\n4EVENT_HW_DEVICE_TEMPERATURE_ABOVE_CRITICAL_RECOVERED\x10\xf7\x03\x12\x36\n1EVENT_HW_DEVICE_TEMPERATURE_ABOVE_FATAL_RECOVERED\x10\xf8\x03\x12\x1b\n\x16\x45VENT_HW_DEVICE_REBOOT\x10\xf9\x03\x12\'\n\"EVENT_HW_TEMPERATURE_SENSOR_FAILED\x10\xfa\x03\x12,\n\'EVENT_HW_ALL_TEMPERATURE_SENSORS_FAILED\x10\xfb\x03\x12(\n#EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD\x10\xfc\x03\x12\x32\n-EVENT_HW_DISK_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xfd\x03\x12*\n%EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD\x10\xfe\x03\x12\x34\n/EVENT_HW_MEMORY_USAGE_ABOVE_THRESHOLD_RECOVERED\x10\xff\x03\x12\x1e\n\x19\x45VENT_HW_NTP_SYNC_FAILURE\x10\x80\x04\x12(\n#EVENT_HW_NTP_SYNC_FAILURE_RECOVERED\x10\x81\x04\x12\x1d\n\x18\x45VENT_LINE_CARD_PLUG_OUT\x10\xd8\x04\x12\x1c\n\x17\x45VENT_LINE_CARD_PLUG_IN\x10\xd9\x04\x12(\n#EVENT_COMPONENT_ADMIN_STATE_CHANGED\x10\xbc\x05\x12\'\n\"EVENT_COMPONENT_OPER_STATE_CHANGED\x10\xbd\x05\x12(\n#EVENT_COMPONENT_ALARM_STATE_CHANGED\x10\xbe\x05\x12(\n#EVENT_COMPONENT_USAGE_STATE_CHANGED\x10\xbf\x05\x12*\n%EVENT_COMPONENT_STANDBY_STATE_CHANGED\x10\xc0\x05\x12\"\n\x1d\x45VENT_COMPONENT_GENERIC_EVENT\x10\xc1\x05\x32\xed\x01\n\x1dNativeEventsManagementService\x12\x36\n\nListEvents\x12\x0f.dmi.HardwareID\x1a\x17.dmi.ListEventsResponse\x12^\n\x19UpdateEventsConfiguration\x12\x1f.dmi.EventsConfigurationRequest\x1a .dmi.EventsConfigurationResponse\x12\x34\n\x0cStreamEvents\x12\x16.google.protobuf.Empty\x1a\n.dmi.Event0\x01\x42;Z9github.com/opencord/device-management-interface/v3/go/dmib\x06proto3')
 
 _EVENTIDS = DESCRIPTOR.enum_types_by_name['EventIds']
 EventIds = enum_type_wrapper.EnumTypeWrapper(_EVENTIDS)
@@ -83,6 +83,7 @@
 EVENT_COMPONENT_ALARM_STATE_CHANGED = 702
 EVENT_COMPONENT_USAGE_STATE_CHANGED = 703
 EVENT_COMPONENT_STANDBY_STATE_CHANGED = 704
+EVENT_COMPONENT_GENERIC_EVENT = 705
 
 
 _VALUETYPE = DESCRIPTOR.message_types_by_name['ValueType']
@@ -101,9 +102,11 @@
 _USAGESTATECHANGE = DESCRIPTOR.message_types_by_name['UsageStateChange']
 _STANDBYSTATECHANGE = DESCRIPTOR.message_types_by_name['StandbyStateChange']
 _STATECHANGEINFO = DESCRIPTOR.message_types_by_name['StateChangeInfo']
+_GENERICEVENTINFO = DESCRIPTOR.message_types_by_name['GenericEventInfo']
 _EVENT = DESCRIPTOR.message_types_by_name['Event']
 _LISTEVENTSRESPONSE_REASON = _LISTEVENTSRESPONSE.enum_types_by_name['Reason']
 _EVENTSCONFIGURATIONRESPONSE_REASON = _EVENTSCONFIGURATIONRESPONSE.enum_types_by_name['Reason']
+_GENERICEVENTINFO_EVENTSEVERITY = _GENERICEVENTINFO.enum_types_by_name['EventSeverity']
 ValueType = _reflection.GeneratedProtocolMessageType('ValueType', (_message.Message,), {
   'DESCRIPTOR' : _VALUETYPE,
   '__module__' : 'dmi.hw_events_mgmt_service_pb2'
@@ -216,6 +219,13 @@
   })
 _sym_db.RegisterMessage(StateChangeInfo)
 
+GenericEventInfo = _reflection.GeneratedProtocolMessageType('GenericEventInfo', (_message.Message,), {
+  'DESCRIPTOR' : _GENERICEVENTINFO,
+  '__module__' : 'dmi.hw_events_mgmt_service_pb2'
+  # @@protoc_insertion_point(class_scope:dmi.GenericEventInfo)
+  })
+_sym_db.RegisterMessage(GenericEventInfo)
+
 Event = _reflection.GeneratedProtocolMessageType('Event', (_message.Message,), {
   'DESCRIPTOR' : _EVENT,
   '__module__' : 'dmi.hw_events_mgmt_service_pb2'
@@ -228,8 +238,8 @@
 
   DESCRIPTOR._options = None
   DESCRIPTOR._serialized_options = b'Z9github.com/opencord/device-management-interface/v3/go/dmi'
-  _EVENTIDS._serialized_start=2512
-  _EVENTIDS._serialized_end=5125
+  _EVENTIDS._serialized_start=2785
+  _EVENTIDS._serialized_end=5434
   _VALUETYPE._serialized_start=136
   _VALUETYPE._serialized_end=253
   _WATERMARKS._serialized_start=255
@@ -266,8 +276,12 @@
   _STANDBYSTATECHANGE._serialized_end=1954
   _STATECHANGEINFO._serialized_start=1957
   _STATECHANGEINFO._serialized_end=2257
-  _EVENT._serialized_start=2260
-  _EVENT._serialized_end=2509
-  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=5128
-  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=5365
+  _GENERICEVENTINFO._serialized_start=2260
+  _GENERICEVENTINFO._serialized_end=2479
+  _GENERICEVENTINFO_EVENTSEVERITY._serialized_start=2374
+  _GENERICEVENTINFO_EVENTSEVERITY._serialized_end=2479
+  _EVENT._serialized_start=2482
+  _EVENT._serialized_end=2782
+  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_start=5437
+  _NATIVEEVENTSMANAGEMENTSERVICE._serialized_end=5674
 # @@protoc_insertion_point(module_scope)