feat(streaming): carry AckTime on DebugAlarmStateDto (21) (ScadaBridge#84)

The live AlarmStateUpdate already carried ack_time (24) but the Debug View
snapshot DTO did not, so snapshot-seeded alarm rows showed a null ack time
until the next live update. Additive google.protobuf.Timestamp ack_time = 21
(absent => null, including from a pre-#84 site), vendored C# regenerated with
docker/regen-proto.sh sitecommand, mapped both ways in SiteCommandDtoMapper.
The native golden sample now sets AckTime (the computed one leaves it null),
so the round-trip golden pins both the present and the absent decode.

Claude-Session: https://claude.ai/code/session_01GT67AEHd2Acv1YPwGfXEoV
This commit is contained in:
Joseph Doherty
2026-11-09 12:45:21 -05:00
parent 03de3dcc14
commit d36825633b
5 changed files with 282 additions and 210 deletions
@@ -85,6 +85,11 @@ public record AlarmStateChanged(
/// null while a native condition is unacknowledged; cleared on re-raise, because a /// null while a native condition is unacknowledged; cleared on re-raise, because a
/// re-raise transition carries <c>Acknowledged = false</c>. /// re-raise transition carries <c>Acknowledged = false</c>.
/// </para> /// </para>
///
/// <para>
/// On the wire: <c>AlarmStateUpdate</c> field 24 (live stream) and
/// <c>DebugAlarmStateDto</c> field 21 (debug snapshot, Gitea #84) — absent decodes to null.
/// </para>
/// </summary> /// </summary>
public DateTimeOffset? AckTime { get; init; } public DateTimeOffset? AckTime { get; init; }
@@ -1955,6 +1955,11 @@ public static class SiteCommandDtoMapper
dto.OriginalRaiseTime = Ts(alarm.OriginalRaiseTime.Value); dto.OriginalRaiseTime = Ts(alarm.OriginalRaiseTime.Value);
} }
if (alarm.AckTime.HasValue)
{
dto.AckTime = Ts(alarm.AckTime.Value);
}
return dto; return dto;
} }
@@ -1985,7 +1990,8 @@ public static class SiteCommandDtoMapper
LimitValue = dto.LimitValue, LimitValue = dto.LimitValue,
NativeSourceCanonicalName = dto.NativeSourceCanonicalName, NativeSourceCanonicalName = dto.NativeSourceCanonicalName,
IsConfiguredPlaceholder = dto.IsConfiguredPlaceholder, IsConfiguredPlaceholder = dto.IsConfiguredPlaceholder,
IsMesReportable = dto.IsMesReportable IsMesReportable = dto.IsMesReportable,
AckTime = DtoOrNull(dto.AckTime)
}; };
return dto.Condition is null ? alarm : alarm with { Condition = FromProto(dto.Condition) }; return dto.Condition is null ? alarm : alarm with { Condition = FromProto(dto.Condition) };
@@ -657,6 +657,10 @@ message DebugAlarmStateDto {
// MES-reportable flag stamped by the Instance Actor's snapshot (Gitea #60); false for // MES-reportable flag stamped by the Instance Actor's snapshot (Gitea #60); false for
// native conditions and from a pre-#60 site (proto3 default). // native conditions and from a pre-#60 site (proto3 default).
bool is_mes_reportable = 20; bool is_mes_reportable = 20;
// When the alarm was last acknowledged (AlarmStateChanged.AckTime; mirrors
// AlarmStateUpdate.ack_time = 24 on the live stream, Gitea #84). Absent => null,
// including from a pre-#84 site.
google.protobuf.Timestamp ack_time = 21;
} }
message DebugViewSnapshotDto { message DebugViewSnapshotDto {
@@ -292,7 +292,7 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
"dGgYAiABKAkSFgoOYXR0cmlidXRlX25hbWUYAyABKAkSNQoFdmFsdWUYBCAB", "dGgYAiABKAkSFgoOYXR0cmlidXRlX25hbWUYAyABKAkSNQoFdmFsdWUYBCAB",
"KAsyJi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5Mb29zZVZhbHVlEg8K", "KAsyJi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5Mb29zZVZhbHVlEg8K",
"B3F1YWxpdHkYBSABKAkSLQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnBy", "B3F1YWxpdHkYBSABKAkSLQoJdGltZXN0YW1wGAYgASgLMhouZ29vZ2xlLnBy",
"b3RvYnVmLlRpbWVzdGFtcCLKBQoSRGVidWdBbGFybVN0YXRlRHRvEhwKFGlu", "b3RvYnVmLlRpbWVzdGFtcCL4BQoSRGVidWdBbGFybVN0YXRlRHRvEhwKFGlu",
"c3RhbmNlX3VuaXF1ZV9uYW1lGAEgASgJEhIKCmFsYXJtX25hbWUYAiABKAkS", "c3RhbmNlX3VuaXF1ZV9uYW1lGAEgASgJEhIKCmFsYXJtX25hbWUYAiABKAkS",
"OAoFc3RhdGUYAyABKA4yKS5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5B", "OAoFc3RhdGUYAyABKA4yKS5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5B",
"bGFybVN0YXRlRHRvEhAKCHByaW9yaXR5GAQgASgFEi0KCXRpbWVzdGFtcBgF", "bGFybVN0YXRlRHRvEhAKCHByaW9yaXR5GAQgASgFEi0KCXRpbWVzdGFtcBgF",
@@ -308,213 +308,214 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
"dGFtcBIVCg1jdXJyZW50X3ZhbHVlGBAgASgJEhMKC2xpbWl0X3ZhbHVlGBEg", "dGFtcBIVCg1jdXJyZW50X3ZhbHVlGBAgASgJEhMKC2xpbWl0X3ZhbHVlGBEg",
"ASgJEiQKHG5hdGl2ZV9zb3VyY2VfY2Fub25pY2FsX25hbWUYEiABKAkSIQoZ", "ASgJEiQKHG5hdGl2ZV9zb3VyY2VfY2Fub25pY2FsX25hbWUYEiABKAkSIQoZ",
"aXNfY29uZmlndXJlZF9wbGFjZWhvbGRlchgTIAEoCBIZChFpc19tZXNfcmVw", "aXNfY29uZmlndXJlZF9wbGFjZWhvbGRlchgTIAEoCBIZChFpc19tZXNfcmVw",
"b3J0YWJsZRgUIAEoCCKcAgoURGVidWdWaWV3U25hcHNob3REdG8SHAoUaW5z", "b3J0YWJsZRgUIAEoCBIsCghhY2tfdGltZRgVIAEoCzIaLmdvb2dsZS5wcm90",
"dGFuY2VfdW5pcXVlX25hbWUYASABKAkSTAoQYXR0cmlidXRlX3ZhbHVlcxgC", "b2J1Zi5UaW1lc3RhbXAinAIKFERlYnVnVmlld1NuYXBzaG90RHRvEhwKFGlu",
"IAMoCzIyLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkRlYnVnQXR0cmli", "c3RhbmNlX3VuaXF1ZV9uYW1lGAEgASgJEkwKEGF0dHJpYnV0ZV92YWx1ZXMY",
"dXRlVmFsdWVEdG8SRAoMYWxhcm1fc3RhdGVzGAMgAygLMi4uc2NhZGFicmlk", "AiADKAsyMi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5EZWJ1Z0F0dHJp",
"Z2Uuc2l0ZWNvbW1hbmQudjEuRGVidWdBbGFybVN0YXRlRHRvEjYKEnNuYXBz", "YnV0ZVZhbHVlRHRvEkQKDGFsYXJtX3N0YXRlcxgDIAMoCzIuLnNjYWRhYnJp",
"aG90X3RpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh", "ZGdlLnNpdGVjb21tYW5kLnYxLkRlYnVnQWxhcm1TdGF0ZUR0bxI2ChJzbmFw",
"bXASGgoSaW5zdGFuY2Vfbm90X2ZvdW5kGAUgASgIIvACCgxRdWVyeVJlcXVl", "c2hvdF90aW1lc3RhbXAYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0",
"c3QSTgoPZXZlbnRfbG9nX3F1ZXJ5GAEgASgLMjMuc2NhZGFicmlkZ2Uuc2l0", "YW1wEhoKEmluc3RhbmNlX25vdF9mb3VuZBgFIAEoCCLwAgoMUXVlcnlSZXF1",
"ZWNvbW1hbmQudjEuRXZlbnRMb2dRdWVyeVJlcXVlc3REdG9IABJNCg5kZWJ1", "ZXN0Ek4KD2V2ZW50X2xvZ19xdWVyeRgBIAEoCzIzLnNjYWRhYnJpZGdlLnNp",
"Z19zbmFwc2hvdBgCIAEoCzIzLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYx", "dGVjb21tYW5kLnYxLkV2ZW50TG9nUXVlcnlSZXF1ZXN0RHRvSAASTQoOZGVi",
"LkRlYnVnU25hcHNob3RSZXF1ZXN0RHRvSAASWAoUc3Vic2NyaWJlX2RlYnVn", "dWdfc25hcHNob3QYAiABKAsyMy5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52",
"X3ZpZXcYAyABKAsyOC5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5TdWJz", "MS5EZWJ1Z1NuYXBzaG90UmVxdWVzdER0b0gAElgKFHN1YnNjcmliZV9kZWJ1",
"Y3JpYmVEZWJ1Z1ZpZXdSZXF1ZXN0RHRvSAASXAoWdW5zdWJzY3JpYmVfZGVi", "Z192aWV3GAMgASgLMjguc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuU3Vi",
"dWdfdmlldxgEIAEoCzI6LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlVu", "c2NyaWJlRGVidWdWaWV3UmVxdWVzdER0b0gAElwKFnVuc3Vic2NyaWJlX2Rl",
"c3Vic2NyaWJlRGVidWdWaWV3UmVxdWVzdER0b0gAQgkKB2NvbW1hbmQikQIK", "YnVnX3ZpZXcYBCABKAsyOi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5V",
"ClF1ZXJ5UmVwbHkSTwoPZXZlbnRfbG9nX3F1ZXJ5GAEgASgLMjQuc2NhZGFi", "bnN1YnNjcmliZURlYnVnVmlld1JlcXVlc3REdG9IAEIJCgdjb21tYW5kIpEC",
"cmlkZ2Uuc2l0ZWNvbW1hbmQudjEuRXZlbnRMb2dRdWVyeVJlc3BvbnNlRHRv", "CgpRdWVyeVJlcGx5Ek8KD2V2ZW50X2xvZ19xdWVyeRgBIAEoCzI0LnNjYWRh",
"SAASTwoTZGVidWdfdmlld19zbmFwc2hvdBgCIAEoCzIwLnNjYWRhYnJpZGdl", "YnJpZGdlLnNpdGVjb21tYW5kLnYxLkV2ZW50TG9nUXVlcnlSZXNwb25zZUR0",
"LnNpdGVjb21tYW5kLnYxLkRlYnVnVmlld1NuYXBzaG90RHRvSAASWAoWdW5z", "b0gAEk8KE2RlYnVnX3ZpZXdfc25hcHNob3QYAiABKAsyMC5zY2FkYWJyaWRn",
"dWJzY3JpYmVfZGVidWdfdmlldxgDIAEoCzI2LnNjYWRhYnJpZGdlLnNpdGVj", "ZS5zaXRlY29tbWFuZC52MS5EZWJ1Z1ZpZXdTbmFwc2hvdER0b0gAElgKFnVu",
"b21tYW5kLnYxLlVuc3Vic2NyaWJlRGVidWdWaWV3QWNrRHRvSABCBwoFcmVw", "c3Vic2NyaWJlX2RlYnVnX3ZpZXcYAyABKAsyNi5zY2FkYWJyaWRnZS5zaXRl",
"bHkingEKHFBhcmtlZE1lc3NhZ2VRdWVyeVJlcXVlc3REdG8SFgoOY29ycmVs", "Y29tbWFuZC52MS5VbnN1YnNjcmliZURlYnVnVmlld0Fja0R0b0gAQgcKBXJl",
"YXRpb25faWQYASABKAkSDwoHc2l0ZV9pZBgCIAEoCRITCgtwYWdlX251bWJl", "cGx5Ip4BChxQYXJrZWRNZXNzYWdlUXVlcnlSZXF1ZXN0RHRvEhYKDmNvcnJl",
"chgDIAEoBRIRCglwYWdlX3NpemUYBCABKAUSLQoJdGltZXN0YW1wGAUgASgL", "bGF0aW9uX2lkGAEgASgJEg8KB3NpdGVfaWQYAiABKAkSEwoLcGFnZV9udW1i",
"MhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLyAgoVUGFya2VkTWVzc2Fn", "ZXIYAyABKAUSEQoJcGFnZV9zaXplGAQgASgFEi0KCXRpbWVzdGFtcBgFIAEo",
"ZUVudHJ5RHRvEhIKCm1lc3NhZ2VfaWQYASABKAkSFQoNdGFyZ2V0X3N5c3Rl", "CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi8gIKFVBhcmtlZE1lc3Nh",
"bRgCIAEoCRITCgttZXRob2RfbmFtZRgDIAEoCRIVCg1lcnJvcl9tZXNzYWdl", "Z2VFbnRyeUR0bxISCgptZXNzYWdlX2lkGAEgASgJEhUKDXRhcmdldF9zeXN0",
"GAQgASgJEhUKDWF0dGVtcHRfY291bnQYBSABKAUSNgoSb3JpZ2luYWxfdGlt", "ZW0YAiABKAkSEwoLbWV0aG9kX25hbWUYAyABKAkSFQoNZXJyb3JfbWVzc2Fn",
"ZXN0YW1wGAYgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI6ChZs", "ZRgEIAEoCRIVCg1hdHRlbXB0X2NvdW50GAUgASgFEjYKEm9yaWdpbmFsX3Rp",
"YXN0X2F0dGVtcHRfdGltZXN0YW1wGAcgASgLMhouZ29vZ2xlLnByb3RvYnVm", "bWVzdGFtcBgGIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOgoW",
"LlRpbWVzdGFtcBIUCgxtYXhfYXR0ZW1wdHMYCCABKAUSSAoIY2F0ZWdvcnkY", "bGFzdF9hdHRlbXB0X3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1",
"CSABKA4yNi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5TdG9yZUFuZEZv", "Zi5UaW1lc3RhbXASFAoMbWF4X2F0dGVtcHRzGAggASgFEkgKCGNhdGVnb3J5",
"cndhcmRDYXRlZ29yeUR0bxIXCg9vcmlnaW5faW5zdGFuY2UYCiABKAkioQIK", "GAkgASgOMjYuc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuU3RvcmVBbmRG",
"HVBhcmtlZE1lc3NhZ2VRdWVyeVJlc3BvbnNlRHRvEhYKDmNvcnJlbGF0aW9u", "b3J3YXJkQ2F0ZWdvcnlEdG8SFwoPb3JpZ2luX2luc3RhbmNlGAogASgJIqEC",
"X2lkGAEgASgJEg8KB3NpdGVfaWQYAiABKAkSQwoIbWVzc2FnZXMYAyADKAsy", "Ch1QYXJrZWRNZXNzYWdlUXVlcnlSZXNwb25zZUR0bxIWCg5jb3JyZWxhdGlv",
"MS5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5QYXJrZWRNZXNzYWdlRW50", "bl9pZBgBIAEoCRIPCgdzaXRlX2lkGAIgASgJEkMKCG1lc3NhZ2VzGAMgAygL",
"cnlEdG8SEwoLdG90YWxfY291bnQYBCABKAUSEwoLcGFnZV9udW1iZXIYBSAB", "MjEuc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuUGFya2VkTWVzc2FnZUVu",
"KAUSEQoJcGFnZV9zaXplGAYgASgFEg8KB3N1Y2Nlc3MYByABKAgSFQoNZXJy", "dHJ5RHRvEhMKC3RvdGFsX2NvdW50GAQgASgFEhMKC3BhZ2VfbnVtYmVyGAUg",
"b3JfbWVzc2FnZRgIIAEoCRItCgl0aW1lc3RhbXAYCSABKAsyGi5nb29nbGUu", "ASgFEhEKCXBhZ2Vfc2l6ZRgGIAEoBRIPCgdzdWNjZXNzGAcgASgIEhUKDWVy",
"cHJvdG9idWYuVGltZXN0YW1wIooBChxQYXJrZWRNZXNzYWdlUmV0cnlSZXF1", "cm9yX21lc3NhZ2UYCCABKAkSLQoJdGltZXN0YW1wGAkgASgLMhouZ29vZ2xl",
"ZXN0RHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJEg8KB3NpdGVfaWQYAiAB", "LnByb3RvYnVmLlRpbWVzdGFtcCKKAQocUGFya2VkTWVzc2FnZVJldHJ5UmVx",
"KAkSEgoKbWVzc2FnZV9pZBgDIAEoCRItCgl0aW1lc3RhbXAYBCABKAsyGi5n", "dWVzdER0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRIPCgdzaXRlX2lkGAIg",
"b29nbGUucHJvdG9idWYuVGltZXN0YW1wIl8KHVBhcmtlZE1lc3NhZ2VSZXRy", "ASgJEhIKCm1lc3NhZ2VfaWQYAyABKAkSLQoJdGltZXN0YW1wGAQgASgLMhou",
"eVJlc3BvbnNlRHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJEg8KB3N1Y2Nl", "Z29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJfCh1QYXJrZWRNZXNzYWdlUmV0",
"c3MYAiABKAgSFQoNZXJyb3JfbWVzc2FnZRgDIAEoCSKMAQoeUGFya2VkTWVz", "cnlSZXNwb25zZUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRIPCgdzdWNj",
"c2FnZURpc2NhcmRSZXF1ZXN0RHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJ", "ZXNzGAIgASgIEhUKDWVycm9yX21lc3NhZ2UYAyABKAkijAEKHlBhcmtlZE1l",
"Eg8KB3NpdGVfaWQYAiABKAkSEgoKbWVzc2FnZV9pZBgDIAEoCRItCgl0aW1l", "c3NhZ2VEaXNjYXJkUmVxdWVzdER0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEo",
"c3RhbXAYBCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wImEKH1Bh", "CRIPCgdzaXRlX2lkGAIgASgJEhIKCm1lc3NhZ2VfaWQYAyABKAkSLQoJdGlt",
"cmtlZE1lc3NhZ2VEaXNjYXJkUmVzcG9uc2VEdG8SFgoOY29ycmVsYXRpb25f", "ZXN0YW1wGAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCJhCh9Q",
"aWQYASABKAkSDwoHc3VjY2VzcxgCIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAMg", "YXJrZWRNZXNzYWdlRGlzY2FyZFJlc3BvbnNlRHRvEhYKDmNvcnJlbGF0aW9u",
"ASgJIk8KF1JldHJ5UGFya2VkT3BlcmF0aW9uRHRvEhYKDmNvcnJlbGF0aW9u", "X2lkGAEgASgJEg8KB3N1Y2Nlc3MYAiABKAgSFQoNZXJyb3JfbWVzc2FnZRgD",
"X2lkGAEgASgJEhwKFHRyYWNrZWRfb3BlcmF0aW9uX2lkGAIgASgJIlEKGURp", "IAEoCSJPChdSZXRyeVBhcmtlZE9wZXJhdGlvbkR0bxIWCg5jb3JyZWxhdGlv",
"c2NhcmRQYXJrZWRPcGVyYXRpb25EdG8SFgoOY29ycmVsYXRpb25faWQYASAB", "bl9pZBgBIAEoCRIcChR0cmFja2VkX29wZXJhdGlvbl9pZBgCIAEoCSJRChlE",
"KAkSHAoUdHJhY2tlZF9vcGVyYXRpb25faWQYAiABKAkiXQobUGFya2VkT3Bl", "aXNjYXJkUGFya2VkT3BlcmF0aW9uRHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEg",
"cmF0aW9uQWN0aW9uQWNrRHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJEg8K", "ASgJEhwKFHRyYWNrZWRfb3BlcmF0aW9uX2lkGAIgASgJIl0KG1BhcmtlZE9w",
"B2FwcGxpZWQYAiABKAgSFQoNZXJyb3JfbWVzc2FnZRgDIAEoCSLeAwoNUGFy", "ZXJhdGlvbkFjdGlvbkFja0R0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRIP",
"a2VkUmVxdWVzdBJYChRwYXJrZWRfbWVzc2FnZV9xdWVyeRgBIAEoCzI4LnNj", "CgdhcHBsaWVkGAIgASgIEhUKDWVycm9yX21lc3NhZ2UYAyABKAki3gMKDVBh",
"YWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VRdWVyeVJl", "cmtlZFJlcXVlc3QSWAoUcGFya2VkX21lc3NhZ2VfcXVlcnkYASABKAsyOC5z",
"cXVlc3REdG9IABJYChRwYXJrZWRfbWVzc2FnZV9yZXRyeRgCIAEoCzI4LnNj", "Y2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5QYXJrZWRNZXNzYWdlUXVlcnlS",
"YWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VSZXRyeVJl", "ZXF1ZXN0RHRvSAASWAoUcGFya2VkX21lc3NhZ2VfcmV0cnkYAiABKAsyOC5z",
"cXVlc3REdG9IABJcChZwYXJrZWRfbWVzc2FnZV9kaXNjYXJkGAMgASgLMjou", "Y2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5QYXJrZWRNZXNzYWdlUmV0cnlS",
"c2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuUGFya2VkTWVzc2FnZURpc2Nh", "ZXF1ZXN0RHRvSAASXAoWcGFya2VkX21lc3NhZ2VfZGlzY2FyZBgDIAEoCzI6",
"cmRSZXF1ZXN0RHRvSAASVQoWcmV0cnlfcGFya2VkX29wZXJhdGlvbhgEIAEo", "LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VEaXNj",
"CzIzLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlJldHJ5UGFya2VkT3Bl", "YXJkUmVxdWVzdER0b0gAElUKFnJldHJ5X3BhcmtlZF9vcGVyYXRpb24YBCAB",
"cmF0aW9uRHRvSAASWQoYZGlzY2FyZF9wYXJrZWRfb3BlcmF0aW9uGAUgASgL", "KAsyMy5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5SZXRyeVBhcmtlZE9w",
"MjUuc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuRGlzY2FyZFBhcmtlZE9w", "ZXJhdGlvbkR0b0gAElkKGGRpc2NhcmRfcGFya2VkX29wZXJhdGlvbhgFIAEo",
"ZXJhdGlvbkR0b0gAQgkKB2NvbW1hbmQihwMKC1BhcmtlZFJlcGx5ElkKFHBh", "CzI1LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkRpc2NhcmRQYXJrZWRP",
"cmtlZF9tZXNzYWdlX3F1ZXJ5GAEgASgLMjkuc2NhZGFicmlkZ2Uuc2l0ZWNv", "cGVyYXRpb25EdG9IAEIJCgdjb21tYW5kIocDCgtQYXJrZWRSZXBseRJZChRw",
"bW1hbmQudjEuUGFya2VkTWVzc2FnZVF1ZXJ5UmVzcG9uc2VEdG9IABJZChRw", "YXJrZWRfbWVzc2FnZV9xdWVyeRgBIAEoCzI5LnNjYWRhYnJpZGdlLnNpdGVj",
"YXJrZWRfbWVzc2FnZV9yZXRyeRgCIAEoCzI5LnNjYWRhYnJpZGdlLnNpdGVj", "b21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VRdWVyeVJlc3BvbnNlRHRvSAASWQoU",
"b21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VSZXRyeVJlc3BvbnNlRHRvSAASXQoW", "cGFya2VkX21lc3NhZ2VfcmV0cnkYAiABKAsyOS5zY2FkYWJyaWRnZS5zaXRl",
"cGFya2VkX21lc3NhZ2VfZGlzY2FyZBgDIAEoCzI7LnNjYWRhYnJpZGdlLnNp", "Y29tbWFuZC52MS5QYXJrZWRNZXNzYWdlUmV0cnlSZXNwb25zZUR0b0gAEl0K",
"dGVjb21tYW5kLnYxLlBhcmtlZE1lc3NhZ2VEaXNjYXJkUmVzcG9uc2VEdG9I", "FnBhcmtlZF9tZXNzYWdlX2Rpc2NhcmQYAyABKAsyOy5zY2FkYWJyaWRnZS5z",
"ABJaChdwYXJrZWRfb3BlcmF0aW9uX2FjdGlvbhgEIAEoCzI3LnNjYWRhYnJp", "aXRlY29tbWFuZC52MS5QYXJrZWRNZXNzYWdlRGlzY2FyZFJlc3BvbnNlRHRv",
"ZGdlLnNpdGVjb21tYW5kLnYxLlBhcmtlZE9wZXJhdGlvbkFjdGlvbkFja0R0", "SAASWgoXcGFya2VkX29wZXJhdGlvbl9hY3Rpb24YBCABKAsyNy5zY2FkYWJy",
"b0gAQgcKBXJlcGx5IvwBChVSb3V0ZVRvQ2FsbFJlcXVlc3REdG8SFgoOY29y", "aWRnZS5zaXRlY29tbWFuZC52MS5QYXJrZWRPcGVyYXRpb25BY3Rpb25BY2tE",
"dG9IAEIHCgVyZXBseSL8AQoVUm91dGVUb0NhbGxSZXF1ZXN0RHRvEhYKDmNv",
"cnJlbGF0aW9uX2lkGAEgASgJEhwKFGluc3RhbmNlX3VuaXF1ZV9uYW1lGAIg",
"ASgJEhMKC3NjcmlwdF9uYW1lGAMgASgJEj0KCnBhcmFtZXRlcnMYBCABKAsy",
"KS5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5Mb29zZVZhbHVlTWFwEi0K",
"CXRpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAS",
"GwoTcGFyZW50X2V4ZWN1dGlvbl9pZBgGIAEoCRINCgV0cmFjZRgHIAEoCCK9",
"AgoWUm91dGVUb0NhbGxSZXNwb25zZUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgB",
"IAEoCRIPCgdzdWNjZXNzGAIgASgIEjwKDHJldHVybl92YWx1ZRgDIAEoCzIm",
"LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkxvb3NlVmFsdWUSFQoNZXJy",
"b3JfbWVzc2FnZRgEIAEoCRItCgl0aW1lc3RhbXAYBSABKAsyGi5nb29nbGUu",
"cHJvdG9idWYuVGltZXN0YW1wEhoKEmNoaWxkX2V4ZWN1dGlvbl9pZBgGIAEo",
"CRIvCgx0cmFjZV9ldmVudHMYByADKAsyGS5zaXRlc3RyZWFtLkF1ZGl0RXZl",
"bnREdG8SEQoJdHJ1bmNhdGVkGAggASgIEhYKDmxvZ3NfdHJ1bmNhdGVkGAkg",
"ASgIIrsBCh5Sb3V0ZVRvR2V0QXR0cmlidXRlc1JlcXVlc3REdG8SFgoOY29y",
"cmVsYXRpb25faWQYASABKAkSHAoUaW5zdGFuY2VfdW5pcXVlX25hbWUYAiAB", "cmVsYXRpb25faWQYASABKAkSHAoUaW5zdGFuY2VfdW5pcXVlX25hbWUYAiAB",
"KAkSEwoLc2NyaXB0X25hbWUYAyABKAkSPQoKcGFyYW1ldGVycxgEIAEoCzIp", "KAkSFwoPYXR0cmlidXRlX25hbWVzGAMgAygJEi0KCXRpbWVzdGFtcBgEIAEo",
"LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkxvb3NlVmFsdWVNYXASLQoJ", "CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASGwoTcGFyZW50X2V4ZWN1",
"dGltZXN0YW1wGAUgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIb", "dGlvbl9pZBgFIAEoCSLLAQofUm91dGVUb0dldEF0dHJpYnV0ZXNSZXNwb25z",
"ChNwYXJlbnRfZXhlY3V0aW9uX2lkGAYgASgJEg0KBXRyYWNlGAcgASgIIr0C", "ZUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRI5CgZ2YWx1ZXMYAiABKAsy",
"ChZSb3V0ZVRvQ2FsbFJlc3BvbnNlRHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEg", "KS5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5Mb29zZVZhbHVlTWFwEg8K",
"ASgJEg8KB3N1Y2Nlc3MYAiABKAgSPAoMcmV0dXJuX3ZhbHVlGAMgASgLMiYu", "B3N1Y2Nlc3MYAyABKAgSFQoNZXJyb3JfbWVzc2FnZRgEIAEoCRItCgl0aW1l",
"c2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuTG9vc2VWYWx1ZRIVCg1lcnJv", "c3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wItQCCh5S",
"cl9tZXNzYWdlGAQgASgJEi0KCXRpbWVzdGFtcBgFIAEoCzIaLmdvb2dsZS5w", "b3V0ZVRvU2V0QXR0cmlidXRlc1JlcXVlc3REdG8SFgoOY29ycmVsYXRpb25f",
"cm90b2J1Zi5UaW1lc3RhbXASGgoSY2hpbGRfZXhlY3V0aW9uX2lkGAYgASgJ", "aWQYASABKAkSHAoUaW5zdGFuY2VfdW5pcXVlX25hbWUYAiABKAkSaQoQYXR0",
"Ei8KDHRyYWNlX2V2ZW50cxgHIAMoCzIZLnNpdGVzdHJlYW0uQXVkaXRFdmVu", "cmlidXRlX3ZhbHVlcxgDIAMoCzJPLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5k",
"dER0bxIRCgl0cnVuY2F0ZWQYCCABKAgSFgoObG9nc190cnVuY2F0ZWQYCSAB", "LnYxLlJvdXRlVG9TZXRBdHRyaWJ1dGVzUmVxdWVzdER0by5BdHRyaWJ1dGVW",
"KAgiuwEKHlJvdXRlVG9HZXRBdHRyaWJ1dGVzUmVxdWVzdER0bxIWCg5jb3Jy", "YWx1ZXNFbnRyeRItCgl0aW1lc3RhbXAYBCABKAsyGi5nb29nbGUucHJvdG9i",
"ZWxhdGlvbl9pZBgBIAEoCRIcChRpbnN0YW5jZV91bmlxdWVfbmFtZRgCIAEo", "dWYuVGltZXN0YW1wEhsKE3BhcmVudF9leGVjdXRpb25faWQYBSABKAkSDQoF",
"CRIXCg9hdHRyaWJ1dGVfbmFtZXMYAyADKAkSLQoJdGltZXN0YW1wGAQgASgL", "dHJhY2UYBiABKAgaNgoUQXR0cmlidXRlVmFsdWVzRW50cnkSCwoDa2V5GAEg",
"MhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbChNwYXJlbnRfZXhlY3V0", "ASgJEg0KBXZhbHVlGAIgASgJOgI4ASKQAQofUm91dGVUb1NldEF0dHJpYnV0",
"aW9uX2lkGAUgASgJIssBCh9Sb3V0ZVRvR2V0QXR0cmlidXRlc1Jlc3BvbnNl", "ZXNSZXNwb25zZUR0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRIPCgdzdWNj",
"RHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJEjkKBnZhbHVlcxgCIAEoCzIp", "ZXNzGAIgASgIEhUKDWVycm9yX21lc3NhZ2UYAyABKAkSLQoJdGltZXN0YW1w",
"LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkxvb3NlVmFsdWVNYXASDwoH", "GAQgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCLDAgohUm91dGVU",
"c3VjY2VzcxgDIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAQgASgJEi0KCXRpbWVz", "b1dhaXRGb3JBdHRyaWJ1dGVSZXF1ZXN0RHRvEhYKDmNvcnJlbGF0aW9uX2lk",
"dGFtcBgFIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAi1AIKHlJv", "GAEgASgJEhwKFGluc3RhbmNlX3VuaXF1ZV9uYW1lGAIgASgJEhYKDmF0dHJp",
"dXRlVG9TZXRBdHRyaWJ1dGVzUmVxdWVzdER0bxIWCg5jb3JyZWxhdGlvbl9p", "YnV0ZV9uYW1lGAMgASgJEjoKFHRhcmdldF92YWx1ZV9lbmNvZGVkGAQgASgL",
"ZBgBIAEoCRIcChRpbnN0YW5jZV91bmlxdWVfbmFtZRgCIAEoCRJpChBhdHRy", "MhwuZ29vZ2xlLnByb3RvYnVmLlN0cmluZ1ZhbHVlEioKB3RpbWVvdXQYBSAB",
"aWJ1dGVfdmFsdWVzGAMgAygLMk8uc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQu", "KAsyGS5nb29nbGUucHJvdG9idWYuRHVyYXRpb24SLQoJdGltZXN0YW1wGAYg",
"djEuUm91dGVUb1NldEF0dHJpYnV0ZXNSZXF1ZXN0RHRvLkF0dHJpYnV0ZVZh", "ASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIbChNwYXJlbnRfZXhl",
"bHVlc0VudHJ5Ei0KCXRpbWVzdGFtcBgEIAEoCzIaLmdvb2dsZS5wcm90b2J1", "Y3V0aW9uX2lkGAcgASgJEhwKFHJlcXVpcmVfZ29vZF9xdWFsaXR5GAggASgI",
"Zi5UaW1lc3RhbXASGwoTcGFyZW50X2V4ZWN1dGlvbl9pZBgFIAEoCRINCgV0", "Iv8BCiJSb3V0ZVRvV2FpdEZvckF0dHJpYnV0ZVJlc3BvbnNlRHRvEhYKDmNv",
"cmFjZRgGIAEoCBo2ChRBdHRyaWJ1dGVWYWx1ZXNFbnRyeRILCgNrZXkYASAB", "cnJlbGF0aW9uX2lkGAEgASgJEg8KB21hdGNoZWQYAiABKAgSNQoFdmFsdWUY",
"KAkSDQoFdmFsdWUYAiABKAk6AjgBIpABCh9Sb3V0ZVRvU2V0QXR0cmlidXRl", "AyABKAsyJi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5Mb29zZVZhbHVl",
"c1Jlc3BvbnNlRHRvEhYKDmNvcnJlbGF0aW9uX2lkGAEgASgJEg8KB3N1Y2Nl", "Eg8KB3F1YWxpdHkYBCABKAkSEQoJdGltZWRfb3V0GAUgASgIEg8KB3N1Y2Nl",
"c3MYAiABKAgSFQoNZXJyb3JfbWVzc2FnZRgDIAEoCRItCgl0aW1lc3RhbXAY", "c3MYBiABKAgSFQoNZXJyb3JfbWVzc2FnZRgHIAEoCRItCgl0aW1lc3RhbXAY",
"BCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMCCiFSb3V0ZVRv", "CCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIokDCgxSb3V0ZVJl",
"V2FpdEZvckF0dHJpYnV0ZVJlcXVlc3REdG8SFgoOY29ycmVsYXRpb25faWQY", "cXVlc3QSSgoNcm91dGVfdG9fY2FsbBgBIAEoCzIxLnNjYWRhYnJpZGdlLnNp",
"ASABKAkSHAoUaW5zdGFuY2VfdW5pcXVlX25hbWUYAiABKAkSFgoOYXR0cmli", "dGVjb21tYW5kLnYxLlJvdXRlVG9DYWxsUmVxdWVzdER0b0gAEl0KF3JvdXRl",
"dXRlX25hbWUYAyABKAkSOgoUdGFyZ2V0X3ZhbHVlX2VuY29kZWQYBCABKAsy", "X3RvX2dldF9hdHRyaWJ1dGVzGAIgASgLMjouc2NhZGFicmlkZ2Uuc2l0ZWNv",
"HC5nb29nbGUucHJvdG9idWYuU3RyaW5nVmFsdWUSKgoHdGltZW91dBgFIAEo", "bW1hbmQudjEuUm91dGVUb0dldEF0dHJpYnV0ZXNSZXF1ZXN0RHRvSAASXQoX",
"CzIZLmdvb2dsZS5wcm90b2J1Zi5EdXJhdGlvbhItCgl0aW1lc3RhbXAYBiAB", "cm91dGVfdG9fc2V0X2F0dHJpYnV0ZXMYAyABKAsyOi5zY2FkYWJyaWRnZS5z",
"KAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhsKE3BhcmVudF9leGVj", "aXRlY29tbWFuZC52MS5Sb3V0ZVRvU2V0QXR0cmlidXRlc1JlcXVlc3REdG9I",
"dXRpb25faWQYByABKAkSHAoUcmVxdWlyZV9nb29kX3F1YWxpdHkYCCABKAgi", "ABJkChtyb3V0ZV90b193YWl0X2Zvcl9hdHRyaWJ1dGUYBCABKAsyPS5zY2Fk",
"/wEKIlJvdXRlVG9XYWl0Rm9yQXR0cmlidXRlUmVzcG9uc2VEdG8SFgoOY29y", "YWJyaWRnZS5zaXRlY29tbWFuZC52MS5Sb3V0ZVRvV2FpdEZvckF0dHJpYnV0",
"cmVsYXRpb25faWQYASABKAkSDwoHbWF0Y2hlZBgCIAEoCBI1CgV2YWx1ZRgD", "ZVJlcXVlc3REdG9IAEIJCgdjb21tYW5kIokDCgpSb3V0ZVJlcGx5EksKDXJv",
"IAEoCzImLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLkxvb3NlVmFsdWUS", "dXRlX3RvX2NhbGwYASABKAsyMi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52",
"DwoHcXVhbGl0eRgEIAEoCRIRCgl0aW1lZF9vdXQYBSABKAgSDwoHc3VjY2Vz", "MS5Sb3V0ZVRvQ2FsbFJlc3BvbnNlRHRvSAASXgoXcm91dGVfdG9fZ2V0X2F0",
"cxgGIAEoCBIVCg1lcnJvcl9tZXNzYWdlGAcgASgJEi0KCXRpbWVzdGFtcBgI", "dHJpYnV0ZXMYAiABKAsyOy5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5S",
"IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAiiQMKDFJvdXRlUmVx", "b3V0ZVRvR2V0QXR0cmlidXRlc1Jlc3BvbnNlRHRvSAASXgoXcm91dGVfdG9f",
"dWVzdBJKCg1yb3V0ZV90b19jYWxsGAEgASgLMjEuc2NhZGFicmlkZ2Uuc2l0", "c2V0X2F0dHJpYnV0ZXMYAyABKAsyOy5zY2FkYWJyaWRnZS5zaXRlY29tbWFu",
"ZWNvbW1hbmQudjEuUm91dGVUb0NhbGxSZXF1ZXN0RHRvSAASXQoXcm91dGVf", "ZC52MS5Sb3V0ZVRvU2V0QXR0cmlidXRlc1Jlc3BvbnNlRHRvSAASZQobcm91",
"dG9fZ2V0X2F0dHJpYnV0ZXMYAiABKAsyOi5zY2FkYWJyaWRnZS5zaXRlY29t", "dGVfdG9fd2FpdF9mb3JfYXR0cmlidXRlGAQgASgLMj4uc2NhZGFicmlkZ2Uu",
"bWFuZC52MS5Sb3V0ZVRvR2V0QXR0cmlidXRlc1JlcXVlc3REdG9IABJdChdy", "c2l0ZWNvbW1hbmQudjEuUm91dGVUb1dhaXRGb3JBdHRyaWJ1dGVSZXNwb25z",
"b3V0ZV90b19zZXRfYXR0cmlidXRlcxgDIAEoCzI6LnNjYWRhYnJpZGdlLnNp", "ZUR0b0gAQgcKBXJlcGx5IkEKFlRyaWdnZXJTaXRlRmFpbG92ZXJEdG8SFgoO",
"dGVjb21tYW5kLnYxLlJvdXRlVG9TZXRBdHRyaWJ1dGVzUmVxdWVzdER0b0gA", "Y29ycmVsYXRpb25faWQYASABKAkSDwoHc2l0ZV9pZBgCIAEoCSJtChJTaXRl",
"EmQKG3JvdXRlX3RvX3dhaXRfZm9yX2F0dHJpYnV0ZRgEIAEoCzI9LnNjYWRh", "RmFpbG92ZXJBY2tEdG8SFgoOY29ycmVsYXRpb25faWQYASABKAkSEAoIYWNj",
"YnJpZGdlLnNpdGVjb21tYW5kLnYxLlJvdXRlVG9XYWl0Rm9yQXR0cmlidXRl", "ZXB0ZWQYAiABKAgSFgoOdGFyZ2V0X2FkZHJlc3MYAyABKAkSFQoNZXJyb3Jf",
"UmVxdWVzdER0b0gAQgkKB2NvbW1hbmQiiQMKClJvdXRlUmVwbHkSSwoNcm91", "bWVzc2FnZRgEIAEoCSrLAQoTRGVwbG95bWVudFN0YXR1c0R0bxIlCiFERVBM",
"dGVfdG9fY2FsbBgBIAEoCzIyLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYx", "T1lNRU5UX1NUQVRVU19EVE9fVU5TUEVDSUZJRUQQABIhCh1ERVBMT1lNRU5U",
"LlJvdXRlVG9DYWxsUmVzcG9uc2VEdG9IABJeChdyb3V0ZV90b19nZXRfYXR0", "X1NUQVRVU19EVE9fUEVORElORxABEiUKIURFUExPWU1FTlRfU1RBVFVTX0RU",
"cmlidXRlcxgCIAEoCzI7LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlJv", "T19JTl9QUk9HUkVTUxACEiEKHURFUExPWU1FTlRfU1RBVFVTX0RUT19TVUND",
"dXRlVG9HZXRBdHRyaWJ1dGVzUmVzcG9uc2VEdG9IABJeChdyb3V0ZV90b19z", "RVNTEAMSIAocREVQTE9ZTUVOVF9TVEFUVVNfRFRPX0ZBSUxFRBAEKsQBChJC",
"ZXRfYXR0cmlidXRlcxgDIAEoCzI7LnNjYWRhYnJpZGdlLnNpdGVjb21tYW5k", "cm93c2VOb2RlQ2xhc3NEdG8SJQohQlJPV1NFX05PREVfQ0xBU1NfRFRPX1VO",
"LnYxLlJvdXRlVG9TZXRBdHRyaWJ1dGVzUmVzcG9uc2VEdG9IABJlChtyb3V0", "U1BFQ0lGSUVEEAASIAocQlJPV1NFX05PREVfQ0xBU1NfRFRPX09CSkVDVBAB",
"ZV90b193YWl0X2Zvcl9hdHRyaWJ1dGUYBCABKAsyPi5zY2FkYWJyaWRnZS5z", "EiIKHkJST1dTRV9OT0RFX0NMQVNTX0RUT19WQVJJQUJMRRACEiAKHEJST1dT",
"aXRlY29tbWFuZC52MS5Sb3V0ZVRvV2FpdEZvckF0dHJpYnV0ZVJlc3BvbnNl", "RV9OT0RFX0NMQVNTX0RUT19NRVRIT0QQAxIfChtCUk9XU0VfTk9ERV9DTEFT",
"RHRvSABCBwoFcmVwbHkiQQoWVHJpZ2dlclNpdGVGYWlsb3ZlckR0bxIWCg5j", "U19EVE9fT1RIRVIQBCqhAgoUQnJvd3NlRmFpbHVyZUtpbmREdG8SJwojQlJP",
"b3JyZWxhdGlvbl9pZBgBIAEoCRIPCgdzaXRlX2lkGAIgASgJIm0KElNpdGVG", "V1NFX0ZBSUxVUkVfS0lORF9EVE9fVU5TUEVDSUZJRUQQABIwCixCUk9XU0Vf",
"YWlsb3ZlckFja0R0bxIWCg5jb3JyZWxhdGlvbl9pZBgBIAEoCRIQCghhY2Nl", "RkFJTFVSRV9LSU5EX0RUT19DT05ORUNUSU9OX05PVF9GT1VORBABEjQKMEJS",
"cHRlZBgCIAEoCBIWCg50YXJnZXRfYWRkcmVzcxgDIAEoCRIVCg1lcnJvcl9t", "T1dTRV9GQUlMVVJFX0tJTkRfRFRPX0NPTk5FQ1RJT05fTk9UX0NPTk5FQ1RF",
"ZXNzYWdlGAQgASgJKssBChNEZXBsb3ltZW50U3RhdHVzRHRvEiUKIURFUExP", "RBACEikKJUJST1dTRV9GQUlMVVJFX0tJTkRfRFRPX05PVF9CUk9XU0FCTEUQ",
"WU1FTlRfU1RBVFVTX0RUT19VTlNQRUNJRklFRBAAEiEKHURFUExPWU1FTlRf", "AxIjCh9CUk9XU0VfRkFJTFVSRV9LSU5EX0RUT19USU1FT1VUEAQSKAokQlJP",
"U1RBVFVTX0RUT19QRU5ESU5HEAESJQohREVQTE9ZTUVOVF9TVEFUVVNfRFRP", "V1NFX0ZBSUxVUkVfS0lORF9EVE9fU0VSVkVSX0VSUk9SEAUqqgIKG1JlYWRU",
"X0lOX1BST0dSRVNTEAISIQodREVQTE9ZTUVOVF9TVEFUVVNfRFRPX1NVQ0NF", "YWdWYWx1ZXNGYWlsdXJlS2luZER0bxIwCixSRUFEX1RBR19WQUxVRVNfRkFJ",
"U1MQAxIgChxERVBMT1lNRU5UX1NUQVRVU19EVE9fRkFJTEVEEAQqxAEKEkJy", "TFVSRV9LSU5EX0RUT19VTlNQRUNJRklFRBAAEjkKNVJFQURfVEFHX1ZBTFVF",
"b3dzZU5vZGVDbGFzc0R0bxIlCiFCUk9XU0VfTk9ERV9DTEFTU19EVE9fVU5T", "U19GQUlMVVJFX0tJTkRfRFRPX0NPTk5FQ1RJT05fTk9UX0ZPVU5EEAESPQo5",
"UEVDSUZJRUQQABIgChxCUk9XU0VfTk9ERV9DTEFTU19EVE9fT0JKRUNUEAES", "UkVBRF9UQUdfVkFMVUVTX0ZBSUxVUkVfS0lORF9EVE9fQ09OTkVDVElPTl9O",
"IgoeQlJPV1NFX05PREVfQ0xBU1NfRFRPX1ZBUklBQkxFEAISIAocQlJPV1NF", "T1RfQ09OTkVDVEVEEAISLAooUkVBRF9UQUdfVkFMVUVTX0ZBSUxVUkVfS0lO",
"X05PREVfQ0xBU1NfRFRPX01FVEhPRBADEh8KG0JST1dTRV9OT0RFX0NMQVNT", "RF9EVE9fVElNRU9VVBADEjEKLVJFQURfVEFHX1ZBTFVFU19GQUlMVVJFX0tJ",
"X0RUT19PVEhFUhAEKqECChRCcm93c2VGYWlsdXJlS2luZER0bxInCiNCUk9X", "TkRfRFRPX1NFUlZFUl9FUlJPUhAEKpMCChRWZXJpZnlGYWlsdXJlS2luZER0",
"U0VfRkFJTFVSRV9LSU5EX0RUT19VTlNQRUNJRklFRBAAEjAKLEJST1dTRV9G", "bxInCiNWRVJJRllfRkFJTFVSRV9LSU5EX0RUT19VTlNQRUNJRklFRBAAEicK",
"QUlMVVJFX0tJTkRfRFRPX0NPTk5FQ1RJT05fTk9UX0ZPVU5EEAESNAowQlJP", "I1ZFUklGWV9GQUlMVVJFX0tJTkRfRFRPX1VOUkVBQ0hBQkxFEAESJwojVkVS",
"V1NFX0ZBSUxVUkVfS0lORF9EVE9fQ09OTkVDVElPTl9OT1RfQ09OTkVDVEVE", "SUZZX0ZBSUxVUkVfS0lORF9EVE9fQVVUSF9GQUlMRUQQAhIxCi1WRVJJRllf",
"EAISKQolQlJPV1NFX0ZBSUxVUkVfS0lORF9EVE9fTk9UX0JST1dTQUJMRRAD", "RkFJTFVSRV9LSU5EX0RUT19VTlRSVVNURURfQ0VSVElGSUNBVEUQAxIjCh9W",
"EiMKH0JST1dTRV9GQUlMVVJFX0tJTkRfRFRPX1RJTUVPVVQQBBIoCiRCUk9X", "RVJJRllfRkFJTFVSRV9LSU5EX0RUT19USU1FT1VUEAQSKAokVkVSSUZZX0ZB",
"U0VfRkFJTFVSRV9LSU5EX0RUT19TRVJWRVJfRVJST1IQBSqqAgobUmVhZFRh", "SUxVUkVfS0lORF9EVE9fU0VSVkVSX0VSUk9SEAUq5QEKGlN0b3JlQW5kRm9y",
"Z1ZhbHVlc0ZhaWx1cmVLaW5kRHRvEjAKLFJFQURfVEFHX1ZBTFVFU19GQUlM", "d2FyZENhdGVnb3J5RHRvEi4KKlNUT1JFX0FORF9GT1JXQVJEX0NBVEVHT1JZ",
"VVJFX0tJTkRfRFRPX1VOU1BFQ0lGSUVEEAASOQo1UkVBRF9UQUdfVkFMVUVT", "X0RUT19VTlNQRUNJRklFRBAAEjIKLlNUT1JFX0FORF9GT1JXQVJEX0NBVEVH",
"X0ZBSUxVUkVfS0lORF9EVE9fQ09OTkVDVElPTl9OT1RfRk9VTkQQARI9CjlS", "T1JZX0RUT19FWFRFUk5BTF9TWVNURU0QARIvCitTVE9SRV9BTkRfRk9SV0FS",
"RUFEX1RBR19WQUxVRVNfRkFJTFVSRV9LSU5EX0RUT19DT05ORUNUSU9OX05P", "RF9DQVRFR09SWV9EVE9fTk9USUZJQ0FUSU9OEAISMgouU1RPUkVfQU5EX0ZP",
"VF9DT05ORUNURUQQAhIsCihSRUFEX1RBR19WQUxVRVNfRkFJTFVSRV9LSU5E", "UldBUkRfQ0FURUdPUllfRFRPX0NBQ0hFRF9EQl9XUklURRADKmgKDUFsYXJt",
"X0RUT19USU1FT1VUEAMSMQotUkVBRF9UQUdfVkFMVUVTX0ZBSUxVUkVfS0lO", "U3RhdGVEdG8SHwobQUxBUk1fU1RBVEVfRFRPX1VOU1BFQ0lGSUVEEAASGgoW",
"RF9EVE9fU0VSVkVSX0VSUk9SEAQqkwIKFFZlcmlmeUZhaWx1cmVLaW5kRHRv", "QUxBUk1fU1RBVEVfRFRPX0FDVElWRRABEhoKFkFMQVJNX1NUQVRFX0RUT19O",
"EicKI1ZFUklGWV9GQUlMVVJFX0tJTkRfRFRPX1VOU1BFQ0lGSUVEEAASJwoj", "T1JNQUwQAiq5AQoNQWxhcm1MZXZlbER0bxIfChtBTEFSTV9MRVZFTF9EVE9f",
"VkVSSUZZX0ZBSUxVUkVfS0lORF9EVE9fVU5SRUFDSEFCTEUQARInCiNWRVJJ", "VU5TUEVDSUZJRUQQABIYChRBTEFSTV9MRVZFTF9EVE9fTk9ORRABEhcKE0FM",
"RllfRkFJTFVSRV9LSU5EX0RUT19BVVRIX0ZBSUxFRBACEjEKLVZFUklGWV9G", "QVJNX0xFVkVMX0RUT19MT1cQAhIbChdBTEFSTV9MRVZFTF9EVE9fTE9XX0xP",
"QUlMVVJFX0tJTkRfRFRPX1VOVFJVU1RFRF9DRVJUSUZJQ0FURRADEiMKH1ZF", "VxADEhgKFEFMQVJNX0xFVkVMX0RUT19ISUdIEAQSHQoZQUxBUk1fTEVWRUxf",
"UklGWV9GQUlMVVJFX0tJTkRfRFRPX1RJTUVPVVQQBBIoCiRWRVJJRllfRkFJ", "RFRPX0hJR0hfSElHSBAFKpIBCgxBbGFybUtpbmREdG8SHgoaQUxBUk1fS0lO",
"TFVSRV9LSU5EX0RUT19TRVJWRVJfRVJST1IQBSrlAQoaU3RvcmVBbmRGb3J3", "RF9EVE9fVU5TUEVDSUZJRUQQABIbChdBTEFSTV9LSU5EX0RUT19DT01QVVRF",
"YXJkQ2F0ZWdvcnlEdG8SLgoqU1RPUkVfQU5EX0ZPUldBUkRfQ0FURUdPUllf", "RBABEiAKHEFMQVJNX0tJTkRfRFRPX05BVElWRV9PUENfVUEQAhIjCh9BTEFS",
"RFRPX1VOU1BFQ0lGSUVEEAASMgouU1RPUkVfQU5EX0ZPUldBUkRfQ0FURUdP", "TV9LSU5EX0RUT19OQVRJVkVfTVhfQUNDRVNTEAMq6AEKE0FsYXJtU2hlbHZl",
"UllfRFRPX0VYVEVSTkFMX1NZU1RFTRABEi8KK1NUT1JFX0FORF9GT1JXQVJE", "U3RhdGVEdG8SJgoiQUxBUk1fU0hFTFZFX1NUQVRFX0RUT19VTlNQRUNJRklF",
"X0NBVEVHT1JZX0RUT19OT1RJRklDQVRJT04QAhIyCi5TVE9SRV9BTkRfRk9S", "RBAAEiQKIEFMQVJNX1NIRUxWRV9TVEFURV9EVE9fVU5TSEVMVkVEEAESKwon",
"V0FSRF9DQVRFR09SWV9EVE9fQ0FDSEVEX0RCX1dSSVRFEAMqaAoNQWxhcm1T", "QUxBUk1fU0hFTFZFX1NUQVRFX0RUT19PTkVfU0hPVF9TSEVMVkVEEAISKAok",
"dGF0ZUR0bxIfChtBTEFSTV9TVEFURV9EVE9fVU5TUEVDSUZJRUQQABIaChZB", "QUxBUk1fU0hFTFZFX1NUQVRFX0RUT19USU1FRF9TSEVMVkVEEAMSLAooQUxB",
"TEFSTV9TVEFURV9EVE9fQUNUSVZFEAESGgoWQUxBUk1fU1RBVEVfRFRPX05P", "Uk1fU0hFTFZFX1NUQVRFX0RUT19QRVJNQU5FTlRfU0hFTFZFRBAEMoQFChJT",
"Uk1BTBACKrkBCg1BbGFybUxldmVsRHRvEh8KG0FMQVJNX0xFVkVMX0RUT19V", "aXRlQ29tbWFuZFNlcnZpY2USbAoQRXhlY3V0ZUxpZmVjeWNsZRIsLnNjYWRh",
"TlNQRUNJRklFRBAAEhgKFEFMQVJNX0xFVkVMX0RUT19OT05FEAESFwoTQUxB", "YnJpZGdlLnNpdGVjb21tYW5kLnYxLkxpZmVjeWNsZVJlcXVlc3QaKi5zY2Fk",
"Uk1fTEVWRUxfRFRPX0xPVxACEhsKF0FMQVJNX0xFVkVMX0RUT19MT1dfTE9X", "YWJyaWRnZS5zaXRlY29tbWFuZC52MS5MaWZlY3ljbGVSZXBseRJgCgxFeGVj",
"EAMSGAoUQUxBUk1fTEVWRUxfRFRPX0hJR0gQBBIdChlBTEFSTV9MRVZFTF9E", "dXRlT3BjVWESKC5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5PcGNVYVJl",
"VE9fSElHSF9ISUdIEAUqkgEKDEFsYXJtS2luZER0bxIeChpBTEFSTV9LSU5E", "cXVlc3QaJi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5PcGNVYVJlcGx5",
"X0RUT19VTlNQRUNJRklFRBAAEhsKF0FMQVJNX0tJTkRfRFRPX0NPTVBVVEVE", "EmAKDEV4ZWN1dGVRdWVyeRIoLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYx",
"EAESIAocQUxBUk1fS0lORF9EVE9fTkFUSVZFX09QQ19VQRACEiMKH0FMQVJN", "LlF1ZXJ5UmVxdWVzdBomLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlF1",
"X0tJTkRfRFRPX05BVElWRV9NWF9BQ0NFU1MQAyroAQoTQWxhcm1TaGVsdmVT", "ZXJ5UmVwbHkSYwoNRXhlY3V0ZVBhcmtlZBIpLnNjYWRhYnJpZGdlLnNpdGVj",
"dGF0ZUR0bxImCiJBTEFSTV9TSEVMVkVfU1RBVEVfRFRPX1VOU1BFQ0lGSUVE", "b21tYW5kLnYxLlBhcmtlZFJlcXVlc3QaJy5zY2FkYWJyaWRnZS5zaXRlY29t",
"EAASJAogQUxBUk1fU0hFTFZFX1NUQVRFX0RUT19VTlNIRUxWRUQQARIrCidB", "bWFuZC52MS5QYXJrZWRSZXBseRJgCgxFeGVjdXRlUm91dGUSKC5zY2FkYWJy",
"TEFSTV9TSEVMVkVfU1RBVEVfRFRPX09ORV9TSE9UX1NIRUxWRUQQAhIoCiRB", "aWRnZS5zaXRlY29tbWFuZC52MS5Sb3V0ZVJlcXVlc3QaJi5zY2FkYWJyaWRn",
"TEFSTV9TSEVMVkVfU1RBVEVfRFRPX1RJTUVEX1NIRUxWRUQQAxIsCihBTEFS", "ZS5zaXRlY29tbWFuZC52MS5Sb3V0ZVJlcGx5EnUKD1RyaWdnZXJGYWlsb3Zl",
"TV9TSEVMVkVfU1RBVEVfRFRPX1BFUk1BTkVOVF9TSEVMVkVEEAQyhAUKElNp", "chIyLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlRyaWdnZXJTaXRlRmFp",
"dGVDb21tYW5kU2VydmljZRJsChBFeGVjdXRlTGlmZWN5Y2xlEiwuc2NhZGFi", "bG92ZXJEdG8aLi5zY2FkYWJyaWRnZS5zaXRlY29tbWFuZC52MS5TaXRlRmFp",
"cmlkZ2Uuc2l0ZWNvbW1hbmQudjEuTGlmZWN5Y2xlUmVxdWVzdBoqLnNjYWRh", "bG92ZXJBY2tEdG9CK6oCKFpCLk1PTS5XVy5TY2FkYUJyaWRnZS5Db21tdW5p",
"YnJpZGdlLnNpdGVjb21tYW5kLnYxLkxpZmVjeWNsZVJlcGx5EmAKDEV4ZWN1", "Y2F0aW9uLkdycGNiBnByb3RvMw=="));
"dGVPcGNVYRIoLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLk9wY1VhUmVx",
"dWVzdBomLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLk9wY1VhUmVwbHkS",
"YAoMRXhlY3V0ZVF1ZXJ5Eiguc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEu",
"UXVlcnlSZXF1ZXN0GiYuc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuUXVl",
"cnlSZXBseRJjCg1FeGVjdXRlUGFya2VkEikuc2NhZGFicmlkZ2Uuc2l0ZWNv",
"bW1hbmQudjEuUGFya2VkUmVxdWVzdBonLnNjYWRhYnJpZGdlLnNpdGVjb21t",
"YW5kLnYxLlBhcmtlZFJlcGx5EmAKDEV4ZWN1dGVSb3V0ZRIoLnNjYWRhYnJp",
"ZGdlLnNpdGVjb21tYW5kLnYxLlJvdXRlUmVxdWVzdBomLnNjYWRhYnJpZGdl",
"LnNpdGVjb21tYW5kLnYxLlJvdXRlUmVwbHkSdQoPVHJpZ2dlckZhaWxvdmVy",
"EjIuc2NhZGFicmlkZ2Uuc2l0ZWNvbW1hbmQudjEuVHJpZ2dlclNpdGVGYWls",
"b3ZlckR0bxouLnNjYWRhYnJpZGdlLnNpdGVjb21tYW5kLnYxLlNpdGVGYWls",
"b3ZlckFja0R0b0IrqgIoWkIuTU9NLldXLlNjYWRhQnJpZGdlLkNvbW11bmlj",
"YXRpb24uR3JwY2IGcHJvdG8z"));
descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData, descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor, }, new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.WrappersReflection.Descriptor, global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.SitestreamReflection.Descriptor, },
new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DeploymentStatusDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.BrowseNodeClassDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.BrowseFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.ReadTagValuesFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.VerifyFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.StoreAndForwardCategoryDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmShelveStateDto), }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DeploymentStatusDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.BrowseNodeClassDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.BrowseFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.ReadTagValuesFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.VerifyFailureKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.StoreAndForwardCategoryDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmStateDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmLevelDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmKindDto), typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmShelveStateDto), }, null, new pbr::GeneratedClrTypeInfo[] {
@@ -582,7 +583,7 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.UnsubscribeDebugViewAckDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.UnsubscribeDebugViewAckDto.Parser, null, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.UnsubscribeDebugViewAckDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.UnsubscribeDebugViewAckDto.Parser, null, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmConditionStateDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmConditionStateDto.Parser, new[]{ "Active", "Acknowledged", "Confirmed", "Shelve", "Suppressed", "Severity" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmConditionStateDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.AlarmConditionStateDto.Parser, new[]{ "Active", "Acknowledged", "Confirmed", "Shelve", "Suppressed", "Severity" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAttributeValueDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAttributeValueDto.Parser, new[]{ "InstanceUniqueName", "AttributePath", "AttributeName", "Value", "Quality", "Timestamp" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAttributeValueDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAttributeValueDto.Parser, new[]{ "InstanceUniqueName", "AttributePath", "AttributeName", "Value", "Quality", "Timestamp" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAlarmStateDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAlarmStateDto.Parser, new[]{ "InstanceUniqueName", "AlarmName", "State", "Priority", "Timestamp", "Level", "Message", "Kind", "Condition", "SourceReference", "AlarmTypeName", "Category", "OperatorUser", "OperatorComment", "OriginalRaiseTime", "CurrentValue", "LimitValue", "NativeSourceCanonicalName", "IsConfiguredPlaceholder", "IsMesReportable" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAlarmStateDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugAlarmStateDto.Parser, new[]{ "InstanceUniqueName", "AlarmName", "State", "Priority", "Timestamp", "Level", "Message", "Kind", "Condition", "SourceReference", "AlarmTypeName", "Category", "OperatorUser", "OperatorComment", "OriginalRaiseTime", "CurrentValue", "LimitValue", "NativeSourceCanonicalName", "IsConfiguredPlaceholder", "IsMesReportable", "AckTime" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugViewSnapshotDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugViewSnapshotDto.Parser, new[]{ "InstanceUniqueName", "AttributeValues", "AlarmStates", "SnapshotTimestamp", "InstanceNotFound" }, null, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugViewSnapshotDto), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.DebugViewSnapshotDto.Parser, new[]{ "InstanceUniqueName", "AttributeValues", "AlarmStates", "SnapshotTimestamp", "InstanceNotFound" }, null, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryRequest.Parser, new[]{ "EventLogQuery", "DebugSnapshot", "SubscribeDebugView", "UnsubscribeDebugView" }, new[]{ "Command" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryRequest), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryRequest.Parser, new[]{ "EventLogQuery", "DebugSnapshot", "SubscribeDebugView", "UnsubscribeDebugView" }, new[]{ "Command" }, null, null, null),
new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryReply), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryReply.Parser, new[]{ "EventLogQuery", "DebugViewSnapshot", "UnsubscribeDebugView" }, new[]{ "Reply" }, null, null, null), new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryReply), global::ZB.MOM.WW.ScadaBridge.Communication.Grpc.QueryReply.Parser, new[]{ "EventLogQuery", "DebugViewSnapshot", "UnsubscribeDebugView" }, new[]{ "Reply" }, null, null, null),
@@ -22345,6 +22346,7 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
nativeSourceCanonicalName_ = other.nativeSourceCanonicalName_; nativeSourceCanonicalName_ = other.nativeSourceCanonicalName_;
isConfiguredPlaceholder_ = other.isConfiguredPlaceholder_; isConfiguredPlaceholder_ = other.isConfiguredPlaceholder_;
isMesReportable_ = other.isMesReportable_; isMesReportable_ = other.isMesReportable_;
ackTime_ = other.ackTime_ != null ? other.ackTime_.Clone() : null;
_unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields); _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
} }
@@ -22606,6 +22608,23 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
} }
} }
/// <summary>Field number for the "ack_time" field.</summary>
public const int AckTimeFieldNumber = 21;
private global::Google.Protobuf.WellKnownTypes.Timestamp ackTime_;
/// <summary>
/// When the alarm was last acknowledged (AlarmStateChanged.AckTime; mirrors
/// AlarmStateUpdate.ack_time = 24 on the live stream, Gitea #84). Absent => null,
/// including from a pre-#84 site.
/// </summary>
[global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public global::Google.Protobuf.WellKnownTypes.Timestamp AckTime {
get { return ackTime_; }
set {
ackTime_ = value;
}
}
[global::System.Diagnostics.DebuggerNonUserCodeAttribute] [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
[global::System.CodeDom.Compiler.GeneratedCode("protoc", null)] [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
public override bool Equals(object other) { public override bool Equals(object other) {
@@ -22641,6 +22660,7 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (NativeSourceCanonicalName != other.NativeSourceCanonicalName) return false; if (NativeSourceCanonicalName != other.NativeSourceCanonicalName) return false;
if (IsConfiguredPlaceholder != other.IsConfiguredPlaceholder) return false; if (IsConfiguredPlaceholder != other.IsConfiguredPlaceholder) return false;
if (IsMesReportable != other.IsMesReportable) return false; if (IsMesReportable != other.IsMesReportable) return false;
if (!object.Equals(AckTime, other.AckTime)) return false;
return Equals(_unknownFields, other._unknownFields); return Equals(_unknownFields, other._unknownFields);
} }
@@ -22668,6 +22688,7 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (NativeSourceCanonicalName.Length != 0) hash ^= NativeSourceCanonicalName.GetHashCode(); if (NativeSourceCanonicalName.Length != 0) hash ^= NativeSourceCanonicalName.GetHashCode();
if (IsConfiguredPlaceholder != false) hash ^= IsConfiguredPlaceholder.GetHashCode(); if (IsConfiguredPlaceholder != false) hash ^= IsConfiguredPlaceholder.GetHashCode();
if (IsMesReportable != false) hash ^= IsMesReportable.GetHashCode(); if (IsMesReportable != false) hash ^= IsMesReportable.GetHashCode();
if (ackTime_ != null) hash ^= AckTime.GetHashCode();
if (_unknownFields != null) { if (_unknownFields != null) {
hash ^= _unknownFields.GetHashCode(); hash ^= _unknownFields.GetHashCode();
} }
@@ -22766,6 +22787,10 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
output.WriteRawTag(160, 1); output.WriteRawTag(160, 1);
output.WriteBool(IsMesReportable); output.WriteBool(IsMesReportable);
} }
if (ackTime_ != null) {
output.WriteRawTag(170, 1);
output.WriteMessage(AckTime);
}
if (_unknownFields != null) { if (_unknownFields != null) {
_unknownFields.WriteTo(output); _unknownFields.WriteTo(output);
} }
@@ -22856,6 +22881,10 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
output.WriteRawTag(160, 1); output.WriteRawTag(160, 1);
output.WriteBool(IsMesReportable); output.WriteBool(IsMesReportable);
} }
if (ackTime_ != null) {
output.WriteRawTag(170, 1);
output.WriteMessage(AckTime);
}
if (_unknownFields != null) { if (_unknownFields != null) {
_unknownFields.WriteTo(ref output); _unknownFields.WriteTo(ref output);
} }
@@ -22926,6 +22955,9 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (IsMesReportable != false) { if (IsMesReportable != false) {
size += 2 + 1; size += 2 + 1;
} }
if (ackTime_ != null) {
size += 2 + pb::CodedOutputStream.ComputeMessageSize(AckTime);
}
if (_unknownFields != null) { if (_unknownFields != null) {
size += _unknownFields.CalculateSize(); size += _unknownFields.CalculateSize();
} }
@@ -23007,6 +23039,12 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
if (other.IsMesReportable != false) { if (other.IsMesReportable != false) {
IsMesReportable = other.IsMesReportable; IsMesReportable = other.IsMesReportable;
} }
if (other.ackTime_ != null) {
if (ackTime_ == null) {
AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
AckTime.MergeFrom(other.AckTime);
}
_unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields); _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
} }
@@ -23115,6 +23153,13 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
IsMesReportable = input.ReadBool(); IsMesReportable = input.ReadBool();
break; break;
} }
case 170: {
if (ackTime_ == null) {
AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
input.ReadMessage(AckTime);
break;
}
} }
} }
#endif #endif
@@ -23223,6 +23268,13 @@ namespace ZB.MOM.WW.ScadaBridge.Communication.Grpc {
IsMesReportable = input.ReadBool(); IsMesReportable = input.ReadBool();
break; break;
} }
case 170: {
if (ackTime_ == null) {
AckTime = new global::Google.Protobuf.WellKnownTypes.Timestamp();
}
input.ReadMessage(AckTime);
break;
}
} }
} }
} }
@@ -290,7 +290,11 @@ internal static class SiteCommandSamples
IsMesReportable = true IsMesReportable = true
}; };
/// <summary>A mirrored native alarm: every native enrichment field populated, <c>Condition</c> explicit.</summary> /// <summary>
/// A mirrored native alarm: every native enrichment field populated, <c>Condition</c> explicit.
/// Carries an ack time so the golden pins <c>DebugAlarmStateDto</c> field 21 (Gitea #84); the
/// computed sample leaves it null, pinning the absent-means-null decode.
/// </summary>
private static AlarmStateChanged NativeAlarm() => private static AlarmStateChanged NativeAlarm() =>
new("Site1.Pump1", "Tank01.Level.HiHi", AlarmState.Active, 850, T2) new("Site1.Pump1", "Tank01.Level.HiHi", AlarmState.Active, 850, T2)
{ {
@@ -304,6 +308,7 @@ internal static class SiteCommandSamples
OperatorUser = "multi-role", OperatorUser = "multi-role",
OperatorComment = "ack'd at panel", OperatorComment = "ack'd at panel",
OriginalRaiseTime = T1, OriginalRaiseTime = T1,
AckTime = T2,
CurrentValue = "91.2", CurrentValue = "91.2",
LimitValue = "90.0", LimitValue = "90.0",
NativeSourceCanonicalName = "Tank01.TankAlarms", NativeSourceCanonicalName = "Tank01.TankAlarms",