// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: mxaccess_gateway.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021, 8981
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace ZB.MOM.WW.MxGateway.Contracts.Proto {

  /// <summary>Holder for reflection information generated from mxaccess_gateway.proto</summary>
  public static partial class MxaccessGatewayReflection {

    #region Descriptor
    /// <summary>File descriptor for mxaccess_gateway.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static MxaccessGatewayReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "ChZteGFjY2Vzc19nYXRld2F5LnByb3RvEhNteGFjY2Vzc19nYXRld2F5LnYx",
            "Gh5nb29nbGUvcHJvdG9idWYvZHVyYXRpb24ucHJvdG8aH2dvb2dsZS9wcm90",
            "b2J1Zi90aW1lc3RhbXAucHJvdG8iagoYUXVlcnlBY3RpdmVBbGFybXNSZXF1",
            "ZXN0EhIKCnNlc3Npb25faWQYASABKAkSHQoVY2xpZW50X2NvcnJlbGF0aW9u",
            "X2lkGAIgASgJEhsKE2FsYXJtX2ZpbHRlcl9wcmVmaXgYAyABKAkinwEKEk9w",
            "ZW5TZXNzaW9uUmVxdWVzdBIZChFyZXF1ZXN0ZWRfYmFja2VuZBgBIAEoCRIb",
            "ChNjbGllbnRfc2Vzc2lvbl9uYW1lGAIgASgJEh0KFWNsaWVudF9jb3JyZWxh",
            "dGlvbl9pZBgDIAEoCRIyCg9jb21tYW5kX3RpbWVvdXQYBCABKAsyGS5nb29n",
            "bGUucHJvdG9idWYuRHVyYXRpb24iqgIKEE9wZW5TZXNzaW9uUmVwbHkSEgoK",
            "c2Vzc2lvbl9pZBgBIAEoCRIUCgxiYWNrZW5kX25hbWUYAiABKAkSGQoRd29y",
            "a2VyX3Byb2Nlc3NfaWQYAyABKAUSHwoXd29ya2VyX3Byb3RvY29sX3ZlcnNp",
            "b24YBCABKA0SFAoMY2FwYWJpbGl0aWVzGAUgAygJEjoKF2RlZmF1bHRfY29t",
            "bWFuZF90aW1lb3V0GAYgASgLMhkuZ29vZ2xlLnByb3RvYnVmLkR1cmF0aW9u",
            "EjwKD3Byb3RvY29sX3N0YXR1cxgHIAEoCzIjLm14YWNjZXNzX2dhdGV3YXku",
            "djEuUHJvdG9jb2xTdGF0dXMSIAoYZ2F0ZXdheV9wcm90b2NvbF92ZXJzaW9u",
            "GAggASgNIkgKE0Nsb3NlU2Vzc2lvblJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgB",
            "IAEoCRIdChVjbGllbnRfY29ycmVsYXRpb25faWQYAiABKAkinQEKEUNsb3Nl",
            "U2Vzc2lvblJlcGx5EhIKCnNlc3Npb25faWQYASABKAkSNgoLZmluYWxfc3Rh",
            "dGUYAiABKA4yIS5teGFjY2Vzc19nYXRld2F5LnYxLlNlc3Npb25TdGF0ZRI8",
            "Cg9wcm90b2NvbF9zdGF0dXMYAyABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYx",
            "LlByb3RvY29sU3RhdHVzIkgKE1N0cmVhbUV2ZW50c1JlcXVlc3QSEgoKc2Vz",
            "c2lvbl9pZBgBIAEoCRIdChVhZnRlcl93b3JrZXJfc2VxdWVuY2UYAiABKAQi",
            "dgoQTXhDb21tYW5kUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEh0KFWNs",
            "aWVudF9jb3JyZWxhdGlvbl9pZBgCIAEoCRIvCgdjb21tYW5kGAMgASgLMh4u",
            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmQiwBUKCU14Q29tbWFuZBIw",
            "CgRraW5kGAEgASgOMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1hbmRL",
            "aW5kEjgKCHJlZ2lzdGVyGAogASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5S",
            "ZWdpc3RlckNvbW1hbmRIABI8Cgp1bnJlZ2lzdGVyGAsgASgLMiYubXhhY2Nl",
            "c3NfZ2F0ZXdheS52MS5VbnJlZ2lzdGVyQ29tbWFuZEgAEjcKCGFkZF9pdGVt",
            "GAwgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5BZGRJdGVtQ29tbWFuZEgA",
            "EjkKCWFkZF9pdGVtMhgNIAEoCzIkLm14YWNjZXNzX2dhdGV3YXkudjEuQWRk",
            "SXRlbTJDb21tYW5kSAASPQoLcmVtb3ZlX2l0ZW0YDiABKAsyJi5teGFjY2Vz",
            "c19nYXRld2F5LnYxLlJlbW92ZUl0ZW1Db21tYW5kSAASNAoGYWR2aXNlGA8g",
            "ASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5BZHZpc2VDb21tYW5kSAASOQoJ",
            "dW5fYWR2aXNlGBAgASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5VbkFkdmlz",
            "ZUNvbW1hbmRIABJLChJhZHZpc2Vfc3VwZXJ2aXNvcnkYESABKAsyLS5teGFj",
            "Y2Vzc19nYXRld2F5LnYxLkFkdmlzZVN1cGVydmlzb3J5Q29tbWFuZEgAEkgK",
            "EWFkZF9idWZmZXJlZF9pdGVtGBIgASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52",
            "MS5BZGRCdWZmZXJlZEl0ZW1Db21tYW5kSAASXQocc2V0X2J1ZmZlcmVkX3Vw",
            "ZGF0ZV9pbnRlcnZhbBgTIAEoCzI1Lm14YWNjZXNzX2dhdGV3YXkudjEuU2V0",
            "QnVmZmVyZWRVcGRhdGVJbnRlcnZhbENvbW1hbmRIABI2CgdzdXNwZW5kGBQg",
            "ASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdXNwZW5kQ29tbWFuZEgAEjgK",
            "CGFjdGl2YXRlGBUgASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmF0",
            "ZUNvbW1hbmRIABIyCgV3cml0ZRgWIAEoCzIhLm14YWNjZXNzX2dhdGV3YXku",
            "djEuV3JpdGVDb21tYW5kSAASNAoGd3JpdGUyGBcgASgLMiIubXhhY2Nlc3Nf",
            "Z2F0ZXdheS52MS5Xcml0ZTJDb21tYW5kSAASQQoNd3JpdGVfc2VjdXJlZBgY",
            "IAEoCzIoLm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVTZWN1cmVkQ29tbWFu",
            "ZEgAEkMKDndyaXRlX3NlY3VyZWQyGBkgASgLMikubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5Xcml0ZVNlY3VyZWQyQ29tbWFuZEgAEkkKEWF1dGhlbnRpY2F0ZV91",
            "c2VyGBogASgLMiwubXhhY2Nlc3NfZ2F0ZXdheS52MS5BdXRoZW50aWNhdGVV",
            "c2VyQ29tbWFuZEgAEk0KFGFyY2hlc3RyYV91c2VyX3RvX2lkGBsgASgLMi0u",
            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5BcmNoZXN0ckFVc2VyVG9JZENvbW1hbmRI",
            "ABJACg1hZGRfaXRlbV9idWxrGBwgASgLMicubXhhY2Nlc3NfZ2F0ZXdheS52",
            "MS5BZGRJdGVtQnVsa0NvbW1hbmRIABJGChBhZHZpc2VfaXRlbV9idWxrGB0g",
            "ASgLMioubXhhY2Nlc3NfZ2F0ZXdheS52MS5BZHZpc2VJdGVtQnVsa0NvbW1h",
            "bmRIABJGChByZW1vdmVfaXRlbV9idWxrGB4gASgLMioubXhhY2Nlc3NfZ2F0",
            "ZXdheS52MS5SZW1vdmVJdGVtQnVsa0NvbW1hbmRIABJLChN1bl9hZHZpc2Vf",
            "aXRlbV9idWxrGB8gASgLMiwubXhhY2Nlc3NfZ2F0ZXdheS52MS5VbkFkdmlz",
            "ZUl0ZW1CdWxrQ29tbWFuZEgAEkMKDnN1YnNjcmliZV9idWxrGCAgASgLMiku",
            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5TdWJzY3JpYmVCdWxrQ29tbWFuZEgAEkcK",
            "EHVuc3Vic2NyaWJlX2J1bGsYISABKAsyKy5teGFjY2Vzc19nYXRld2F5LnYx",
            "LlVuc3Vic2NyaWJlQnVsa0NvbW1hbmRIABJHChBzdWJzY3JpYmVfYWxhcm1z",
            "GCIgASgLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdWJzY3JpYmVBbGFybXND",
            "b21tYW5kSAASSwoSdW5zdWJzY3JpYmVfYWxhcm1zGCMgASgLMi0ubXhhY2Nl",
            "c3NfZ2F0ZXdheS52MS5VbnN1YnNjcmliZUFsYXJtc0NvbW1hbmRIABJRChlh",
            "Y2tub3dsZWRnZV9hbGFybV9jb21tYW5kGCQgASgLMiwubXhhY2Nlc3NfZ2F0",
            "ZXdheS52MS5BY2tub3dsZWRnZUFsYXJtQ29tbWFuZEgAElQKG3F1ZXJ5X2Fj",
            "dGl2ZV9hbGFybXNfY29tbWFuZBglIAEoCzItLm14YWNjZXNzX2dhdGV3YXku",
            "djEuUXVlcnlBY3RpdmVBbGFybXNDb21tYW5kSAASXwohYWNrbm93bGVkZ2Vf",
            "YWxhcm1fYnlfbmFtZV9jb21tYW5kGCYgASgLMjIubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5BY2tub3dsZWRnZUFsYXJtQnlOYW1lQ29tbWFuZEgAEjsKCndyaXRl",
            "X2J1bGsYJyABKAsyJS5teGFjY2Vzc19nYXRld2F5LnYxLldyaXRlQnVsa0Nv",
            "bW1hbmRIABI9Cgt3cml0ZTJfYnVsaxgoIAEoCzImLm14YWNjZXNzX2dhdGV3",
            "YXkudjEuV3JpdGUyQnVsa0NvbW1hbmRIABJKChJ3cml0ZV9zZWN1cmVkX2J1",
            "bGsYKSABKAsyLC5teGFjY2Vzc19nYXRld2F5LnYxLldyaXRlU2VjdXJlZEJ1",
            "bGtDb21tYW5kSAASTAoTd3JpdGVfc2VjdXJlZDJfYnVsaxgqIAEoCzItLm14",
            "YWNjZXNzX2dhdGV3YXkudjEuV3JpdGVTZWN1cmVkMkJ1bGtDb21tYW5kSAAS",
            "OQoJcmVhZF9idWxrGCsgASgLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWFk",
            "QnVsa0NvbW1hbmRIABIwCgRwaW5nGGQgASgLMiAubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5QaW5nQ29tbWFuZEgAEkgKEWdldF9zZXNzaW9uX3N0YXRlGGUgASgL",
            "MisubXhhY2Nlc3NfZ2F0ZXdheS52MS5HZXRTZXNzaW9uU3RhdGVDb21tYW5k",
            "SAASRAoPZ2V0X3dvcmtlcl9pbmZvGGYgASgLMikubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5HZXRXb3JrZXJJbmZvQ29tbWFuZEgAEj8KDGRyYWluX2V2ZW50cxhn",
            "IAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuRHJhaW5FdmVudHNDb21tYW5k",
            "SAASRQoPc2h1dGRvd25fd29ya2VyGGggASgLMioubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5TaHV0ZG93bldvcmtlckNvbW1hbmRIAEIJCgdwYXlsb2FkIiYKD1Jl",
            "Z2lzdGVyQ29tbWFuZBITCgtjbGllbnRfbmFtZRgBIAEoCSIqChFVbnJlZ2lz",
            "dGVyQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFIkAKDkFkZEl0ZW1D",
            "b21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFwoPaXRlbV9kZWZpbml0",
            "aW9uGAIgASgJIlcKD0FkZEl0ZW0yQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxl",
            "GAEgASgFEhcKD2l0ZW1fZGVmaW5pdGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRl",
            "eHQYAyABKAkiPwoRUmVtb3ZlSXRlbUNvbW1hbmQSFQoNc2VydmVyX2hhbmRs",
            "ZRgBIAEoBRITCgtpdGVtX2hhbmRsZRgCIAEoBSI7Cg1BZHZpc2VDb21tYW5k",
            "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUi",
            "PQoPVW5BZHZpc2VDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoL",
            "aXRlbV9oYW5kbGUYAiABKAUiRgoYQWR2aXNlU3VwZXJ2aXNvcnlDb21tYW5k",
            "EhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUi",
            "XgoWQWRkQnVmZmVyZWRJdGVtQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEg",
            "ASgFEhcKD2l0ZW1fZGVmaW5pdGlvbhgCIAEoCRIUCgxpdGVtX2NvbnRleHQY",
            "AyABKAkiXwogU2V0QnVmZmVyZWRVcGRhdGVJbnRlcnZhbENvbW1hbmQSFQoN",
            "c2VydmVyX2hhbmRsZRgBIAEoBRIkChx1cGRhdGVfaW50ZXJ2YWxfbWlsbGlz",
            "ZWNvbmRzGAIgASgFIjwKDlN1c3BlbmRDb21tYW5kEhUKDXNlcnZlcl9oYW5k",
            "bGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUiPQoPQWN0aXZhdGVDb21t",
            "YW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiAB",
            "KAUieAoMV3JpdGVDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoL",
            "aXRlbV9oYW5kbGUYAiABKAUSKwoFdmFsdWUYAyABKAsyHC5teGFjY2Vzc19n",
            "YXRld2F5LnYxLk14VmFsdWUSDwoHdXNlcl9pZBgEIAEoBSKwAQoNV3JpdGUy",
            "Q29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhMKC2l0ZW1faGFuZGxl",
            "GAIgASgFEisKBXZhbHVlGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
            "eFZhbHVlEjUKD3RpbWVzdGFtcF92YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dh",
            "dGV3YXkudjEuTXhWYWx1ZRIPCgd1c2VyX2lkGAUgASgFIqEBChNXcml0ZVNl",
            "Y3VyZWRDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9o",
            "YW5kbGUYAiABKAUSFwoPY3VycmVudF91c2VyX2lkGAMgASgFEhgKEHZlcmlm",
            "aWVyX3VzZXJfaWQYBCABKAUSKwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19n",
            "YXRld2F5LnYxLk14VmFsdWUi2QEKFFdyaXRlU2VjdXJlZDJDb21tYW5kEhUK",
            "DXNlcnZlcl9oYW5kbGUYASABKAUSEwoLaXRlbV9oYW5kbGUYAiABKAUSFwoP",
            "Y3VycmVudF91c2VyX2lkGAMgASgFEhgKEHZlcmlmaWVyX3VzZXJfaWQYBCAB",
            "KAUSKwoFdmFsdWUYBSABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFs",
            "dWUSNQoPdGltZXN0YW1wX3ZhbHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5NeFZhbHVlImMKF0F1dGhlbnRpY2F0ZVVzZXJDb21tYW5kEhUKDXNl",
            "cnZlcl9oYW5kbGUYASABKAUSEwoLdmVyaWZ5X3VzZXIYAiABKAkSHAoUdmVy",
            "aWZ5X3VzZXJfcGFzc3dvcmQYAyABKAkiRwoYQXJjaGVzdHJBVXNlclRvSWRD",
            "b21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMdXNlcl9pZF9ndWlk",
            "GAIgASgJIkIKEkFkZEl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxl",
            "GAEgASgFEhUKDXRhZ19hZGRyZXNzZXMYAiADKAkiRAoVQWR2aXNlSXRlbUJ1",
            "bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5k",
            "bGVzGAIgAygFIkQKFVJlbW92ZUl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJf",
            "aGFuZGxlGAEgASgFEhQKDGl0ZW1faGFuZGxlcxgCIAMoBSJGChdVbkFkdmlz",
            "ZUl0ZW1CdWxrQ29tbWFuZBIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFEhQKDGl0",
            "ZW1faGFuZGxlcxgCIAMoBSJEChRTdWJzY3JpYmVCdWxrQ29tbWFuZBIVCg1z",
            "ZXJ2ZXJfaGFuZGxlGAEgASgFEhUKDXRhZ19hZGRyZXNzZXMYAiADKAki7gEK",
            "FlN1YnNjcmliZUFsYXJtc0NvbW1hbmQSHwoXc3Vic2NyaXB0aW9uX2V4cHJl",
            "c3Npb24YASABKAkSOwoLZm9yY2VkX21vZGUYAiABKA4yJi5teGFjY2Vzc19n",
            "YXRld2F5LnYxLkFsYXJtUHJvdmlkZXJNb2RlEjoKCndhdGNoX2xpc3QYAyAD",
            "KAsyJi5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJtU3VidGFnVGFyZ2V0EjoK",
            "CGZhaWxvdmVyGAQgASgLMigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybUZh",
            "aWxvdmVyQ29uZmlnIhoKGFVuc3Vic2NyaWJlQWxhcm1zQ29tbWFuZCK0AQoR",
            "QWxhcm1TdWJ0YWdUYXJnZXQSHAoUYWxhcm1fZnVsbF9yZWZlcmVuY2UYASAB",
            "KAkSHwoXc291cmNlX29iamVjdF9yZWZlcmVuY2UYAiABKAkSFQoNYWN0aXZl",
            "X3N1YnRhZxgDIAEoCRIUCgxhY2tlZF9zdWJ0YWcYBCABKAkSGgoSYWNrX2Nv",
            "bW1lbnRfc3VidGFnGAUgASgJEhcKD3ByaW9yaXR5X3N1YnRhZxgGIAEoCSKF",
            "AQoTQWxhcm1GYWlsb3ZlckNvbmZpZxIlCh1jb25zZWN1dGl2ZV9mYWlsdXJl",
            "X3RocmVzaG9sZBgBIAEoBRInCh9mYWlsYmFja19wcm9iZV9pbnRlcnZhbF9z",
            "ZWNvbmRzGAIgASgFEh4KFmZhaWxiYWNrX3N0YWJsZV9wcm9iZXMYAyABKAUi",
            "oQEKF0Fja25vd2xlZGdlQWxhcm1Db21tYW5kEhIKCmFsYXJtX2d1aWQYASAB",
            "KAkSDwoHY29tbWVudBgCIAEoCRIVCg1vcGVyYXRvcl91c2VyGAMgASgJEhUK",
            "DW9wZXJhdG9yX25vZGUYBCABKAkSFwoPb3BlcmF0b3JfZG9tYWluGAUgASgJ",
            "EhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgGIAEoCSI3ChhRdWVyeUFjdGl2ZUFs",
            "YXJtc0NvbW1hbmQSGwoTYWxhcm1fZmlsdGVyX3ByZWZpeBgBIAEoCSLSAQod",
            "QWNrbm93bGVkZ2VBbGFybUJ5TmFtZUNvbW1hbmQSEgoKYWxhcm1fbmFtZRgB",
            "IAEoCRIVCg1wcm92aWRlcl9uYW1lGAIgASgJEhIKCmdyb3VwX25hbWUYAyAB",
            "KAkSDwoHY29tbWVudBgEIAEoCRIVCg1vcGVyYXRvcl91c2VyGAUgASgJEhUK",
            "DW9wZXJhdG9yX25vZGUYBiABKAkSFwoPb3BlcmF0b3JfZG9tYWluGAcgASgJ",
            "EhoKEm9wZXJhdG9yX2Z1bGxfbmFtZRgIIAEoCSJFChZVbnN1YnNjcmliZUJ1",
            "bGtDb21tYW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSFAoMaXRlbV9oYW5k",
            "bGVzGAIgAygFIl8KEFdyaXRlQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRs",
            "ZRgBIAEoBRI0CgdlbnRyaWVzGAIgAygLMiMubXhhY2Nlc3NfZ2F0ZXdheS52",
            "MS5Xcml0ZUJ1bGtFbnRyeSJjCg5Xcml0ZUJ1bGtFbnRyeRITCgtpdGVtX2hh",
            "bmRsZRgBIAEoBRIrCgV2YWx1ZRgCIAEoCzIcLm14YWNjZXNzX2dhdGV3YXku",
            "djEuTXhWYWx1ZRIPCgd1c2VyX2lkGAMgASgFImEKEVdyaXRlMkJ1bGtDb21t",
            "YW5kEhUKDXNlcnZlcl9oYW5kbGUYASABKAUSNQoHZW50cmllcxgCIAMoCzIk",
            "Lm14YWNjZXNzX2dhdGV3YXkudjEuV3JpdGUyQnVsa0VudHJ5IpsBCg9Xcml0",
            "ZTJCdWxrRW50cnkSEwoLaXRlbV9oYW5kbGUYASABKAUSKwoFdmFsdWUYAiAB",
            "KAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSNQoPdGltZXN0YW1w",
            "X3ZhbHVlGAMgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEg8K",
            "B3VzZXJfaWQYBCABKAUibQoXV3JpdGVTZWN1cmVkQnVsa0NvbW1hbmQSFQoN",
            "c2VydmVyX2hhbmRsZRgBIAEoBRI7CgdlbnRyaWVzGAIgAygLMioubXhhY2Nl",
            "c3NfZ2F0ZXdheS52MS5Xcml0ZVNlY3VyZWRCdWxrRW50cnkijAEKFVdyaXRl",
            "U2VjdXJlZEJ1bGtFbnRyeRITCgtpdGVtX2hhbmRsZRgBIAEoBRIXCg9jdXJy",
            "ZW50X3VzZXJfaWQYAiABKAUSGAoQdmVyaWZpZXJfdXNlcl9pZBgDIAEoBRIr",
            "CgV2YWx1ZRgEIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSJv",
            "ChhXcml0ZVNlY3VyZWQyQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgB",
            "IAEoBRI8CgdlbnRyaWVzGAIgAygLMisubXhhY2Nlc3NfZ2F0ZXdheS52MS5X",
            "cml0ZVNlY3VyZWQyQnVsa0VudHJ5IsQBChZXcml0ZVNlY3VyZWQyQnVsa0Vu",
            "dHJ5EhMKC2l0ZW1faGFuZGxlGAEgASgFEhcKD2N1cnJlbnRfdXNlcl9pZBgC",
            "IAEoBRIYChB2ZXJpZmllcl91c2VyX2lkGAMgASgFEisKBXZhbHVlGAQgASgL",
            "MhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlEjUKD3RpbWVzdGFtcF92",
            "YWx1ZRgFIAEoCzIcLm14YWNjZXNzX2dhdGV3YXkudjEuTXhWYWx1ZSJTCg9S",
            "ZWFkQnVsa0NvbW1hbmQSFQoNc2VydmVyX2hhbmRsZRgBIAEoBRIVCg10YWdf",
            "YWRkcmVzc2VzGAIgAygJEhIKCnRpbWVvdXRfbXMYAyABKA0iHgoLUGluZ0Nv",
            "bW1hbmQSDwoHbWVzc2FnZRgBIAEoCSIYChZHZXRTZXNzaW9uU3RhdGVDb21t",
            "YW5kIhYKFEdldFdvcmtlckluZm9Db21tYW5kIigKEkRyYWluRXZlbnRzQ29t",
            "bWFuZBISCgptYXhfZXZlbnRzGAEgASgNIkgKFVNodXRkb3duV29ya2VyQ29t",
            "bWFuZBIvCgxncmFjZV9wZXJpb2QYASABKAsyGS5nb29nbGUucHJvdG9idWYu",
            "RHVyYXRpb24ihg8KDk14Q29tbWFuZFJlcGx5EhIKCnNlc3Npb25faWQYASAB",
            "KAkSFgoOY29ycmVsYXRpb25faWQYAiABKAkSMAoEa2luZBgDIAEoDjIiLm14",
            "YWNjZXNzX2dhdGV3YXkudjEuTXhDb21tYW5kS2luZBI8Cg9wcm90b2NvbF9z",
            "dGF0dXMYBCABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlByb3RvY29sU3Rh",
            "dHVzEhQKB2hyZXN1bHQYBSABKAVIAYgBARIyCgxyZXR1cm5fdmFsdWUYBiAB",
            "KAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUSNAoIc3RhdHVzZXMY",
            "ByADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkSGgoS",
            "ZGlhZ25vc3RpY19tZXNzYWdlGAggASgJEjYKCHJlZ2lzdGVyGBQgASgLMiIu",
            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5SZWdpc3RlclJlcGx5SAASNQoIYWRkX2l0",
            "ZW0YFSABKAsyIS5teGFjY2Vzc19nYXRld2F5LnYxLkFkZEl0ZW1SZXBseUgA",
            "EjcKCWFkZF9pdGVtMhgWIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuQWRk",
            "SXRlbTJSZXBseUgAEkYKEWFkZF9idWZmZXJlZF9pdGVtGBcgASgLMikubXhh",
            "Y2Nlc3NfZ2F0ZXdheS52MS5BZGRCdWZmZXJlZEl0ZW1SZXBseUgAEjQKB3N1",
            "c3BlbmQYGCABKAsyIS5teGFjY2Vzc19nYXRld2F5LnYxLlN1c3BlbmRSZXBs",
            "eUgAEjYKCGFjdGl2YXRlGBkgASgLMiIubXhhY2Nlc3NfZ2F0ZXdheS52MS5B",
            "Y3RpdmF0ZVJlcGx5SAASRwoRYXV0aGVudGljYXRlX3VzZXIYGiABKAsyKi5t",
            "eGFjY2Vzc19nYXRld2F5LnYxLkF1dGhlbnRpY2F0ZVVzZXJSZXBseUgAEksK",
            "FGFyY2hlc3RyYV91c2VyX3RvX2lkGBsgASgLMisubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5BcmNoZXN0ckFVc2VyVG9JZFJlcGx5SAASQAoNYWRkX2l0ZW1fYnVs",
            "axgcIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJl",
            "cGx5SAASQwoQYWR2aXNlX2l0ZW1fYnVsaxgdIAEoCzInLm14YWNjZXNzX2dh",
            "dGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASQwoQcmVtb3ZlX2l0ZW1f",
            "YnVsaxgeIAEoCzInLm14YWNjZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmli",
            "ZVJlcGx5SAASRgoTdW5fYWR2aXNlX2l0ZW1fYnVsaxgfIAEoCzInLm14YWNj",
            "ZXNzX2dhdGV3YXkudjEuQnVsa1N1YnNjcmliZVJlcGx5SAASQQoOc3Vic2Ny",
            "aWJlX2J1bGsYICABKAsyJy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJz",
            "Y3JpYmVSZXBseUgAEkMKEHVuc3Vic2NyaWJlX2J1bGsYISABKAsyJy5teGFj",
            "Y2Vzc19nYXRld2F5LnYxLkJ1bGtTdWJzY3JpYmVSZXBseUgAEk4KEWFja25v",
            "d2xlZGdlX2FsYXJtGCIgASgLMjEubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY2tu",
            "b3dsZWRnZUFsYXJtUmVwbHlQYXlsb2FkSAASUQoTcXVlcnlfYWN0aXZlX2Fs",
            "YXJtcxgjIAEoCzIyLm14YWNjZXNzX2dhdGV3YXkudjEuUXVlcnlBY3RpdmVB",
            "bGFybXNSZXBseVBheWxvYWRIABI5Cgp3cml0ZV9idWxrGCQgASgLMiMubXhh",
            "Y2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBseUgAEjoKC3dyaXRlMl9i",
            "dWxrGCUgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBs",
            "eUgAEkEKEndyaXRlX3NlY3VyZWRfYnVsaxgmIAEoCzIjLm14YWNjZXNzX2dh",
            "dGV3YXkudjEuQnVsa1dyaXRlUmVwbHlIABJCChN3cml0ZV9zZWN1cmVkMl9i",
            "dWxrGCcgASgLMiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5CdWxrV3JpdGVSZXBs",
            "eUgAEjcKCXJlYWRfYnVsaxgoIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEu",
            "QnVsa1JlYWRSZXBseUgAEj8KDXNlc3Npb25fc3RhdGUYZCABKAsyJi5teGFj",
            "Y2Vzc19nYXRld2F5LnYxLlNlc3Npb25TdGF0ZVJlcGx5SAASOwoLd29ya2Vy",
            "X2luZm8YZSABKAsyJC5teGFjY2Vzc19nYXRld2F5LnYxLldvcmtlckluZm9S",
            "ZXBseUgAEj0KDGRyYWluX2V2ZW50cxhmIAEoCzIlLm14YWNjZXNzX2dhdGV3",
            "YXkudjEuRHJhaW5FdmVudHNSZXBseUgAQgkKB3BheWxvYWRCCgoIX2hyZXN1",
            "bHQiJgoNUmVnaXN0ZXJSZXBseRIVCg1zZXJ2ZXJfaGFuZGxlGAEgASgFIiMK",
            "DEFkZEl0ZW1SZXBseRITCgtpdGVtX2hhbmRsZRgBIAEoBSIkCg1BZGRJdGVt",
            "MlJlcGx5EhMKC2l0ZW1faGFuZGxlGAEgASgFIisKFEFkZEJ1ZmZlcmVkSXRl",
            "bVJlcGx5EhMKC2l0ZW1faGFuZGxlGAEgASgFIkIKDFN1c3BlbmRSZXBseRIy",
            "CgZzdGF0dXMYASABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVz",
            "UHJveHkiQwoNQWN0aXZhdGVSZXBseRIyCgZzdGF0dXMYASABKAsyIi5teGFj",
            "Y2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkiKAoVQXV0aGVudGljYXRl",
            "VXNlclJlcGx5Eg8KB3VzZXJfaWQYASABKAUiKQoWQXJjaGVzdHJBVXNlclRv",
            "SWRSZXBseRIPCgd1c2VyX2lkGAEgASgFIoEBCg9TdWJzY3JpYmVSZXN1bHQS",
            "FQoNc2VydmVyX2hhbmRsZRgBIAEoBRITCgt0YWdfYWRkcmVzcxgCIAEoCRIT",
            "CgtpdGVtX2hhbmRsZRgDIAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgEIAEoCBIV",
            "Cg1lcnJvcl9tZXNzYWdlGAUgASgJIksKEkJ1bGtTdWJzY3JpYmVSZXBseRI1",
            "CgdyZXN1bHRzGAEgAygLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5TdWJzY3Jp",
            "YmVSZXN1bHQixAEKD0J1bGtXcml0ZVJlc3VsdBIVCg1zZXJ2ZXJfaGFuZGxl",
            "GAEgASgFEhMKC2l0ZW1faGFuZGxlGAIgASgFEhYKDndhc19zdWNjZXNzZnVs",
            "GAMgASgIEhQKB2hyZXN1bHQYBCABKAVIAIgBARI0CghzdGF0dXNlcxgFIAMo",
            "CzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQcm94eRIVCg1lcnJv",
            "cl9tZXNzYWdlGAYgASgJQgoKCF9ocmVzdWx0IkcKDkJ1bGtXcml0ZVJlcGx5",
            "EjUKB3Jlc3VsdHMYASADKAsyJC5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtX",
            "cml0ZVJlc3VsdCK+AgoOQnVsa1JlYWRSZXN1bHQSFQoNc2VydmVyX2hhbmRs",
            "ZRgBIAEoBRITCgt0YWdfYWRkcmVzcxgCIAEoCRITCgtpdGVtX2hhbmRsZRgD",
            "IAEoBRIWCg53YXNfc3VjY2Vzc2Z1bBgEIAEoCBISCgp3YXNfY2FjaGVkGAUg",
            "ASgIEisKBXZhbHVlGAYgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZh",
            "bHVlEg8KB3F1YWxpdHkYByABKAUSNAoQc291cmNlX3RpbWVzdGFtcBgIIAEo",
            "CzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoIc3RhdHVzZXMYCSAD",
            "KAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3RhdHVzUHJveHkSFQoNZXJy",
            "b3JfbWVzc2FnZRgKIAEoCSJFCg1CdWxrUmVhZFJlcGx5EjQKB3Jlc3VsdHMY",
            "ASADKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLkJ1bGtSZWFkUmVzdWx0IkUK",
            "EVNlc3Npb25TdGF0ZVJlcGx5EjAKBXN0YXRlGAEgASgOMiEubXhhY2Nlc3Nf",
            "Z2F0ZXdheS52MS5TZXNzaW9uU3RhdGUidQoPV29ya2VySW5mb1JlcGx5EhkK",
            "EXdvcmtlcl9wcm9jZXNzX2lkGAEgASgFEhYKDndvcmtlcl92ZXJzaW9uGAIg",
            "ASgJEhcKD214YWNjZXNzX3Byb2dpZBgDIAEoCRIWCg5teGFjY2Vzc19jbHNp",
            "ZBgEIAEoCSJAChBEcmFpbkV2ZW50c1JlcGx5EiwKBmV2ZW50cxgBIAMoCzIc",
            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhFdmVudCI1ChxBY2tub3dsZWRnZUFs",
            "YXJtUmVwbHlQYXlsb2FkEhUKDW5hdGl2ZV9zdGF0dXMYASABKAUieAodUXVl",
            "cnlBY3RpdmVBbGFybXNSZXBseVBheWxvYWQSOwoJc25hcHNob3RzGAEgAygL",
            "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BY3RpdmVBbGFybVNuYXBzaG90EhoK",
            "EnNuYXBzaG90X3RydW5jYXRlZBgCIAEoCCKPCAoHTXhFdmVudBIyCgZmYW1p",
            "bHkYASABKA4yIi5teGFjY2Vzc19nYXRld2F5LnYxLk14RXZlbnRGYW1pbHkS",
            "EgoKc2Vzc2lvbl9pZBgCIAEoCRIVCg1zZXJ2ZXJfaGFuZGxlGAMgASgFEhMK",
            "C2l0ZW1faGFuZGxlGAQgASgFEisKBXZhbHVlGAUgASgLMhwubXhhY2Nlc3Nf",
            "Z2F0ZXdheS52MS5NeFZhbHVlEg8KB3F1YWxpdHkYBiABKAUSNAoQc291cmNl",
            "X3RpbWVzdGFtcBgHIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXAS",
            "NAoIc3RhdHVzZXMYCCADKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3Rh",
            "dHVzUHJveHkSFwoPd29ya2VyX3NlcXVlbmNlGAkgASgEEjQKEHdvcmtlcl90",
            "aW1lc3RhbXAYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEj0K",
            "GWdhdGV3YXlfcmVjZWl2ZV90aW1lc3RhbXAYCyABKAsyGi5nb29nbGUucHJv",
            "dG9idWYuVGltZXN0YW1wEhQKB2hyZXN1bHQYDCABKAVIAYgBARISCgpyYXdf",
            "c3RhdHVzGA0gASgJEjcKCnJlcGxheV9nYXAYDiABKAsyHi5teGFjY2Vzc19n",
            "YXRld2F5LnYxLlJlcGxheUdhcEgCiAEBEkAKDm9uX2RhdGFfY2hhbmdlGBQg",
            "ASgLMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkRhdGFDaGFuZ2VFdmVudEgA",
            "EkYKEW9uX3dyaXRlX2NvbXBsZXRlGBUgASgLMikubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5PbldyaXRlQ29tcGxldGVFdmVudEgAEkkKEm9wZXJhdGlvbl9jb21w",
            "bGV0ZRgWIAEoCzIrLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlcmF0aW9uQ29t",
            "cGxldGVFdmVudEgAElEKF29uX2J1ZmZlcmVkX2RhdGFfY2hhbmdlGBcgASgL",
            "Mi4ubXhhY2Nlc3NfZ2F0ZXdheS52MS5PbkJ1ZmZlcmVkRGF0YUNoYW5nZUV2",
            "ZW50SAASSgoTb25fYWxhcm1fdHJhbnNpdGlvbhgYIAEoCzIrLm14YWNjZXNz",
            "X2dhdGV3YXkudjEuT25BbGFybVRyYW5zaXRpb25FdmVudEgAEl4KHm9uX2Fs",
            "YXJtX3Byb3ZpZGVyX21vZGVfY2hhbmdlZBgZIAEoCzI0Lm14YWNjZXNzX2dh",
            "dGV3YXkudjEuT25BbGFybVByb3ZpZGVyTW9kZUNoYW5nZWRFdmVudEgAQgYK",
            "BGJvZHlCCgoIX2hyZXN1bHRCDQoLX3JlcGxheV9nYXAiUAoJUmVwbGF5R2Fw",
            "EiAKGHJlcXVlc3RlZF9hZnRlcl9zZXF1ZW5jZRgBIAEoBBIhChlvbGRlc3Rf",
            "YXZhaWxhYmxlX3NlcXVlbmNlGAIgASgEIhMKEU9uRGF0YUNoYW5nZUV2ZW50",
            "IhYKFE9uV3JpdGVDb21wbGV0ZUV2ZW50IhgKFk9wZXJhdGlvbkNvbXBsZXRl",
            "RXZlbnQi1AEKGU9uQnVmZmVyZWREYXRhQ2hhbmdlRXZlbnQSMgoJZGF0YV90",
            "eXBlGAEgASgOMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEjQK",
            "DnF1YWxpdHlfdmFsdWVzGAIgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
            "eEFycmF5EjYKEHRpbWVzdGFtcF92YWx1ZXMYAyABKAsyHC5teGFjY2Vzc19n",
            "YXRld2F5LnYxLk14QXJyYXkSFQoNcmF3X2RhdGFfdHlwZRgEIAEoBSLQBAoW",
            "T25BbGFybVRyYW5zaXRpb25FdmVudBIcChRhbGFybV9mdWxsX3JlZmVyZW5j",
            "ZRgBIAEoCRIfChdzb3VyY2Vfb2JqZWN0X3JlZmVyZW5jZRgCIAEoCRIXCg9h",
            "bGFybV90eXBlX25hbWUYAyABKAkSQQoPdHJhbnNpdGlvbl9raW5kGAQgASgO",
            "MigubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVRyYW5zaXRpb25LaW5kEhAK",
            "CHNldmVyaXR5GAUgASgFEjwKGG9yaWdpbmFsX3JhaXNlX3RpbWVzdGFtcBgG",
            "IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASOAoUdHJhbnNpdGlv",
            "bl90aW1lc3RhbXAYByABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w",
            "EhUKDW9wZXJhdG9yX3VzZXIYCCABKAkSGAoQb3BlcmF0b3JfY29tbWVudBgJ",
            "IAEoCRIQCghjYXRlZ29yeRgKIAEoCRITCgtkZXNjcmlwdGlvbhgLIAEoCRIz",
            "Cg1jdXJyZW50X3ZhbHVlGAwgASgLMhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
            "eFZhbHVlEjEKC2xpbWl0X3ZhbHVlGA0gASgLMhwubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5NeFZhbHVlEhAKCGRlZ3JhZGVkGA4gASgIEj8KD3NvdXJjZV9wcm92",
            "aWRlchgPIAEoDjImLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Qcm92aWRl",
            "ck1vZGUioAEKH09uQWxhcm1Qcm92aWRlck1vZGVDaGFuZ2VkRXZlbnQSNAoE",
            "bW9kZRgBIAEoDjImLm14YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1Qcm92aWRl",
            "ck1vZGUSDgoGcmVhc29uGAIgASgJEg8KB2hyZXN1bHQYAyABKAUSJgoCYXQY",
            "BCABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIvEEChNBY3RpdmVB",
            "bGFybVNuYXBzaG90EhwKFGFsYXJtX2Z1bGxfcmVmZXJlbmNlGAEgASgJEh8K",
            "F3NvdXJjZV9vYmplY3RfcmVmZXJlbmNlGAIgASgJEhcKD2FsYXJtX3R5cGVf",
            "bmFtZRgDIAEoCRIQCghzZXZlcml0eRgEIAEoBRI8ChhvcmlnaW5hbF9yYWlz",
            "ZV90aW1lc3RhbXAYBSABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1w",
            "Ej8KDWN1cnJlbnRfc3RhdGUYBiABKA4yKC5teGFjY2Vzc19nYXRld2F5LnYx",
            "LkFsYXJtQ29uZGl0aW9uU3RhdGUSEAoIY2F0ZWdvcnkYByABKAkSEwoLZGVz",
            "Y3JpcHRpb24YCCABKAkSPQoZbGFzdF90cmFuc2l0aW9uX3RpbWVzdGFtcBgJ",
            "IAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNb3BlcmF0b3Jf",
            "dXNlchgKIAEoCRIYChBvcGVyYXRvcl9jb21tZW50GAsgASgJEjMKDWN1cnJl",
            "bnRfdmFsdWUYDCABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14VmFsdWUS",
            "MQoLbGltaXRfdmFsdWUYDSABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14",
            "VmFsdWUSEAoIZGVncmFkZWQYDiABKAgSPwoPc291cmNlX3Byb3ZpZGVyGA8g",
            "ASgOMiYubXhhY2Nlc3NfZ2F0ZXdheS52MS5BbGFybVByb3ZpZGVyTW9kZRIf",
            "Chdmcm9tX3RydW5jYXRlZF9zbmFwc2hvdBgQIAEoCCKQAQoXQWNrbm93bGVk",
            "Z2VBbGFybVJlcXVlc3QSHQoVY2xpZW50X2NvcnJlbGF0aW9uX2lkGAIgASgJ",
            "EhwKFGFsYXJtX2Z1bGxfcmVmZXJlbmNlGAMgASgJEg8KB2NvbW1lbnQYBCAB",
            "KAkSFQoNb3BlcmF0b3JfdXNlchgFIAEoCUoECAEQAlIKc2Vzc2lvbl9pZCLx",
            "AQoVQWNrbm93bGVkZ2VBbGFybVJlcGx5EhYKDmNvcnJlbGF0aW9uX2lkGAIg",
            "ASgJEjwKD3Byb3RvY29sX3N0YXR1cxgDIAEoCzIjLm14YWNjZXNzX2dhdGV3",
            "YXkudjEuUHJvdG9jb2xTdGF0dXMSFAoHaHJlc3VsdBgEIAEoBUgAiAEBEjIK",
            "BnN0YXR1cxgFIAEoCzIiLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNQ",
            "cm94eRIaChJkaWFnbm9zdGljX21lc3NhZ2UYBiABKAlCCgoIX2hyZXN1bHRK",
            "BAgBEAJSCnNlc3Npb25faWQiUQoTU3RyZWFtQWxhcm1zUmVxdWVzdBIdChVj",
            "bGllbnRfY29ycmVsYXRpb25faWQYASABKAkSGwoTYWxhcm1fZmlsdGVyX3By",
            "ZWZpeBgCIAEoCSLJAgoQQWxhcm1GZWVkTWVzc2FnZRJACgxhY3RpdmVfYWxh",
            "cm0YASABKAsyKC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2ZUFsYXJtU25h",
            "cHNob3RIABIbChFzbmFwc2hvdF9jb21wbGV0ZRgCIAEoCEgAEkEKCnRyYW5z",
            "aXRpb24YAyABKAsyKy5teGFjY2Vzc19nYXRld2F5LnYxLk9uQWxhcm1UcmFu",
            "c2l0aW9uRXZlbnRIABJDCg9wcm92aWRlcl9zdGF0dXMYBCABKAsyKC5teGFj",
            "Y2Vzc19nYXRld2F5LnYxLkFsYXJtUHJvdmlkZXJTdGF0dXNIABJDCg9zbmFw",
            "c2hvdF9zdGF0dXMYBSABKAsyKC5teGFjY2Vzc19nYXRld2F5LnYxLkFsYXJt",
            "U25hcHNob3RTdGF0dXNIAEIJCgdwYXlsb2FkIpgBChNBbGFybVByb3ZpZGVy",
            "U3RhdHVzEjQKBG1vZGUYASABKA4yJi5teGFjY2Vzc19nYXRld2F5LnYxLkFs",
            "YXJtUHJvdmlkZXJNb2RlEhAKCGRlZ3JhZGVkGAIgASgIEg4KBnJlYXNvbhgD",
            "IAEoCRIpCgVzaW5jZRgEIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3Rh",
            "bXAiKAoTQWxhcm1TbmFwc2hvdFN0YXR1cxIRCgl0cnVuY2F0ZWQYASABKAgi",
            "6wEKDU14U3RhdHVzUHJveHkSDwoHc3VjY2VzcxgBIAEoBRI3CghjYXRlZ29y",
            "eRgCIAEoDjIlLm14YWNjZXNzX2dhdGV3YXkudjEuTXhTdGF0dXNDYXRlZ29y",
            "eRI4CgtkZXRlY3RlZF9ieRgDIAEoDjIjLm14YWNjZXNzX2dhdGV3YXkudjEu",
            "TXhTdGF0dXNTb3VyY2USDgoGZGV0YWlsGAQgASgFEhQKDHJhd19jYXRlZ29y",
            "eRgFIAEoBRIXCg9yYXdfZGV0ZWN0ZWRfYnkYBiABKAUSFwoPZGlhZ25vc3Rp",
            "Y190ZXh0GAcgASgJIukDCgdNeFZhbHVlEjIKCWRhdGFfdHlwZRgBIAEoDjIf",
            "Lm14YWNjZXNzX2dhdGV3YXkudjEuTXhEYXRhVHlwZRIUCgx2YXJpYW50X3R5",
            "cGUYAiABKAkSDwoHaXNfbnVsbBgDIAEoCBIWCg5yYXdfZGlhZ25vc3RpYxgE",
            "IAEoCRIVCg1yYXdfZGF0YV90eXBlGAUgASgFEhQKCmJvb2xfdmFsdWUYCiAB",
            "KAhIABIVCgtpbnQzMl92YWx1ZRgLIAEoBUgAEhUKC2ludDY0X3ZhbHVlGAwg",
            "ASgDSAASFQoLZmxvYXRfdmFsdWUYDSABKAJIABIWCgxkb3VibGVfdmFsdWUY",
            "DiABKAFIABIWCgxzdHJpbmdfdmFsdWUYDyABKAlIABI1Cg90aW1lc3RhbXBf",
            "dmFsdWUYECABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wSAASMwoL",
            "YXJyYXlfdmFsdWUYESABKAsyHC5teGFjY2Vzc19nYXRld2F5LnYxLk14QXJy",
            "YXlIABITCglyYXdfdmFsdWUYEiABKAxIABJAChJzcGFyc2VfYXJyYXlfdmFs",
            "dWUYEyABKAsyIi5teGFjY2Vzc19nYXRld2F5LnYxLk14U3BhcnNlQXJyYXlI",
            "AEIGCgRraW5kIv4ECgdNeEFycmF5EjoKEWVsZW1lbnRfZGF0YV90eXBlGAEg",
            "ASgOMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeERhdGFUeXBlEhQKDHZhcmlh",
            "bnRfdHlwZRgCIAEoCRISCgpkaW1lbnNpb25zGAMgAygNEhYKDnJhd19kaWFn",
            "bm9zdGljGAQgASgJEh0KFXJhd19lbGVtZW50X2RhdGFfdHlwZRgFIAEoBRI1",
            "Cgtib29sX3ZhbHVlcxgKIAEoCzIeLm14YWNjZXNzX2dhdGV3YXkudjEuQm9v",
            "bEFycmF5SAASNwoMaW50MzJfdmFsdWVzGAsgASgLMh8ubXhhY2Nlc3NfZ2F0",
            "ZXdheS52MS5JbnQzMkFycmF5SAASNwoMaW50NjRfdmFsdWVzGAwgASgLMh8u",
            "bXhhY2Nlc3NfZ2F0ZXdheS52MS5JbnQ2NEFycmF5SAASNwoMZmxvYXRfdmFs",
            "dWVzGA0gASgLMh8ubXhhY2Nlc3NfZ2F0ZXdheS52MS5GbG9hdEFycmF5SAAS",
            "OQoNZG91YmxlX3ZhbHVlcxgOIAEoCzIgLm14YWNjZXNzX2dhdGV3YXkudjEu",
            "RG91YmxlQXJyYXlIABI5Cg1zdHJpbmdfdmFsdWVzGA8gASgLMiAubXhhY2Nl",
            "c3NfZ2F0ZXdheS52MS5TdHJpbmdBcnJheUgAEj8KEHRpbWVzdGFtcF92YWx1",
            "ZXMYECABKAsyIy5teGFjY2Vzc19nYXRld2F5LnYxLlRpbWVzdGFtcEFycmF5",
            "SAASMwoKcmF3X3ZhbHVlcxgRIAEoCzIdLm14YWNjZXNzX2dhdGV3YXkudjEu",
            "UmF3QXJyYXlIAEIICgZ2YWx1ZXMimQEKDU14U3BhcnNlQXJyYXkSOgoRZWxl",
            "bWVudF9kYXRhX3R5cGUYASABKA4yHy5teGFjY2Vzc19nYXRld2F5LnYxLk14",
            "RGF0YVR5cGUSFAoMdG90YWxfbGVuZ3RoGAIgASgNEjYKCGVsZW1lbnRzGAMg",
            "AygLMiQubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFNwYXJzZUVsZW1lbnQiTQoP",
            "TXhTcGFyc2VFbGVtZW50Eg0KBWluZGV4GAEgASgNEisKBXZhbHVlGAIgASgL",
            "MhwubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeFZhbHVlIhsKCUJvb2xBcnJheRIO",
            "CgZ2YWx1ZXMYASADKAgiHAoKSW50MzJBcnJheRIOCgZ2YWx1ZXMYASADKAUi",
            "HAoKSW50NjRBcnJheRIOCgZ2YWx1ZXMYASADKAMiHAoKRmxvYXRBcnJheRIO",
            "CgZ2YWx1ZXMYASADKAIiHQoLRG91YmxlQXJyYXkSDgoGdmFsdWVzGAEgAygB",
            "Ih0KC1N0cmluZ0FycmF5Eg4KBnZhbHVlcxgBIAMoCSI8Cg5UaW1lc3RhbXBB",
            "cnJheRIqCgZ2YWx1ZXMYASADKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0",
            "YW1wIhoKCFJhd0FycmF5Eg4KBnZhbHVlcxgBIAMoDCJYCg5Qcm90b2NvbFN0",
            "YXR1cxI1CgRjb2RlGAEgASgOMicubXhhY2Nlc3NfZ2F0ZXdheS52MS5Qcm90",
            "b2NvbFN0YXR1c0NvZGUSDwoHbWVzc2FnZRgCIAEoCSqfCwoNTXhDb21tYW5k",
            "S2luZBIfChtNWF9DT01NQU5EX0tJTkRfVU5TUEVDSUZJRUQQABIcChhNWF9D",
            "T01NQU5EX0tJTkRfUkVHSVNURVIQARIeChpNWF9DT01NQU5EX0tJTkRfVU5S",
            "RUdJU1RFUhACEhwKGE1YX0NPTU1BTkRfS0lORF9BRERfSVRFTRADEh0KGU1Y",
            "X0NPTU1BTkRfS0lORF9BRERfSVRFTTIQBBIfChtNWF9DT01NQU5EX0tJTkRf",
            "UkVNT1ZFX0lURU0QBRIaChZNWF9DT01NQU5EX0tJTkRfQURWSVNFEAYSHQoZ",
            "TVhfQ09NTUFORF9LSU5EX1VOX0FEVklTRRAHEiYKIk1YX0NPTU1BTkRfS0lO",
            "RF9BRFZJU0VfU1VQRVJWSVNPUlkQCBIlCiFNWF9DT01NQU5EX0tJTkRfQURE",
            "X0JVRkZFUkVEX0lURU0QCRIwCixNWF9DT01NQU5EX0tJTkRfU0VUX0JVRkZF",
            "UkVEX1VQREFURV9JTlRFUlZBTBAKEhsKF01YX0NPTU1BTkRfS0lORF9TVVNQ",
            "RU5EEAsSHAoYTVhfQ09NTUFORF9LSU5EX0FDVElWQVRFEAwSGQoVTVhfQ09N",
            "TUFORF9LSU5EX1dSSVRFEA0SGgoWTVhfQ09NTUFORF9LSU5EX1dSSVRFMhAO",
            "EiEKHU1YX0NPTU1BTkRfS0lORF9XUklURV9TRUNVUkVEEA8SIgoeTVhfQ09N",
            "TUFORF9LSU5EX1dSSVRFX1NFQ1VSRUQyEBASJQohTVhfQ09NTUFORF9LSU5E",
            "X0FVVEhFTlRJQ0FURV9VU0VSEBESKAokTVhfQ09NTUFORF9LSU5EX0FSQ0hF",
            "U1RSQV9VU0VSX1RPX0lEEBISIQodTVhfQ09NTUFORF9LSU5EX0FERF9JVEVN",
            "X0JVTEsQExIkCiBNWF9DT01NQU5EX0tJTkRfQURWSVNFX0lURU1fQlVMSxAU",
            "EiQKIE1YX0NPTU1BTkRfS0lORF9SRU1PVkVfSVRFTV9CVUxLEBUSJwojTVhf",
            "Q09NTUFORF9LSU5EX1VOX0FEVklTRV9JVEVNX0JVTEsQFhIiCh5NWF9DT01N",
            "QU5EX0tJTkRfU1VCU0NSSUJFX0JVTEsQFxIkCiBNWF9DT01NQU5EX0tJTkRf",
            "VU5TVUJTQ1JJQkVfQlVMSxAYEiQKIE1YX0NPTU1BTkRfS0lORF9TVUJTQ1JJ",
            "QkVfQUxBUk1TEBkSJgoiTVhfQ09NTUFORF9LSU5EX1VOU1VCU0NSSUJFX0FM",
            "QVJNUxAaEiUKIU1YX0NPTU1BTkRfS0lORF9BQ0tOT1dMRURHRV9BTEFSTRAb",
            "EicKI01YX0NPTU1BTkRfS0lORF9RVUVSWV9BQ1RJVkVfQUxBUk1TEBwSLQop",
            "TVhfQ09NTUFORF9LSU5EX0FDS05PV0xFREdFX0FMQVJNX0JZX05BTUUQHRIe",
            "ChpNWF9DT01NQU5EX0tJTkRfV1JJVEVfQlVMSxAeEh8KG01YX0NPTU1BTkRf",
            "S0lORF9XUklURTJfQlVMSxAfEiYKIk1YX0NPTU1BTkRfS0lORF9XUklURV9T",
            "RUNVUkVEX0JVTEsQIBInCiNNWF9DT01NQU5EX0tJTkRfV1JJVEVfU0VDVVJF",
            "RDJfQlVMSxAhEh0KGU1YX0NPTU1BTkRfS0lORF9SRUFEX0JVTEsQIhIYChRN",
            "WF9DT01NQU5EX0tJTkRfUElORxBkEiUKIU1YX0NPTU1BTkRfS0lORF9HRVRf",
            "U0VTU0lPTl9TVEFURRBlEiMKH01YX0NPTU1BTkRfS0lORF9HRVRfV09SS0VS",
            "X0lORk8QZhIgChxNWF9DT01NQU5EX0tJTkRfRFJBSU5fRVZFTlRTEGcSIwof",
            "TVhfQ09NTUFORF9LSU5EX1NIVVRET1dOX1dPUktFUhBoKnoKEUFsYXJtUHJv",
            "dmlkZXJNb2RlEiMKH0FMQVJNX1BST1ZJREVSX01PREVfVU5TUEVDSUZJRUQQ",
            "ABIgChxBTEFSTV9QUk9WSURFUl9NT0RFX0FMQVJNTUdSEAESHgoaQUxBUk1f",
            "UFJPVklERVJfTU9ERV9TVUJUQUcQAiqtAgoNTXhFdmVudEZhbWlseRIfChtN",
            "WF9FVkVOVF9GQU1JTFlfVU5TUEVDSUZJRUQQABIiCh5NWF9FVkVOVF9GQU1J",
            "TFlfT05fREFUQV9DSEFOR0UQARIlCiFNWF9FVkVOVF9GQU1JTFlfT05fV1JJ",
            "VEVfQ09NUExFVEUQAhImCiJNWF9FVkVOVF9GQU1JTFlfT1BFUkFUSU9OX0NP",
            "TVBMRVRFEAMSKwonTVhfRVZFTlRfRkFNSUxZX09OX0JVRkZFUkVEX0RBVEFf",
            "Q0hBTkdFEAQSJwojTVhfRVZFTlRfRkFNSUxZX09OX0FMQVJNX1RSQU5TSVRJ",
            "T04QBRIyCi5NWF9FVkVOVF9GQU1JTFlfT05fQUxBUk1fUFJPVklERVJfTU9E",
            "RV9DSEFOR0VEEAYqygEKE0FsYXJtVHJhbnNpdGlvbktpbmQSJQohQUxBUk1f",
            "VFJBTlNJVElPTl9LSU5EX1VOU1BFQ0lGSUVEEAASHwobQUxBUk1fVFJBTlNJ",
            "VElPTl9LSU5EX1JBSVNFEAESJQohQUxBUk1fVFJBTlNJVElPTl9LSU5EX0FD",
            "S05PV0xFREdFEAISHwobQUxBUk1fVFJBTlNJVElPTl9LSU5EX0NMRUFSEAMS",
            "IwofQUxBUk1fVFJBTlNJVElPTl9LSU5EX1JFVFJJR0dFUhAEKqoBChNBbGFy",
            "bUNvbmRpdGlvblN0YXRlEiUKIUFMQVJNX0NPTkRJVElPTl9TVEFURV9VTlNQ",
            "RUNJRklFRBAAEiAKHEFMQVJNX0NPTkRJVElPTl9TVEFURV9BQ1RJVkUQARIm",
            "CiJBTEFSTV9DT05ESVRJT05fU1RBVEVfQUNUSVZFX0FDS0VEEAISIgoeQUxB",
            "Uk1fQ09ORElUSU9OX1NUQVRFX0lOQUNUSVZFEAMqpQMKEE14U3RhdHVzQ2F0",
            "ZWdvcnkSIgoeTVhfU1RBVFVTX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASHgoa",
            "TVhfU1RBVFVTX0NBVEVHT1JZX1VOS05PV04QARIZChVNWF9TVEFUVVNfQ0FU",
            "RUdPUllfT0sQAhIeChpNWF9TVEFUVVNfQ0FURUdPUllfUEVORElORxADEh4K",
            "Gk1YX1NUQVRVU19DQVRFR09SWV9XQVJOSU5HEAQSKgomTVhfU1RBVFVTX0NB",
            "VEVHT1JZX0NPTU1VTklDQVRJT05fRVJST1IQBRIqCiZNWF9TVEFUVVNfQ0FU",
            "RUdPUllfQ09ORklHVVJBVElPTl9FUlJPUhAGEigKJE1YX1NUQVRVU19DQVRF",
            "R09SWV9PUEVSQVRJT05BTF9FUlJPUhAHEiUKIU1YX1NUQVRVU19DQVRFR09S",
            "WV9TRUNVUklUWV9FUlJPUhAIEiUKIU1YX1NUQVRVU19DQVRFR09SWV9TT0ZU",
            "V0FSRV9FUlJPUhAJEiIKHk1YX1NUQVRVU19DQVRFR09SWV9PVEhFUl9FUlJP",
            "UhAKKsoCCg5NeFN0YXR1c1NvdXJjZRIgChxNWF9TVEFUVVNfU09VUkNFX1VO",
            "U1BFQ0lGSUVEEAASHAoYTVhfU1RBVFVTX1NPVVJDRV9VTktOT1dOEAESIwof",
            "TVhfU1RBVFVTX1NPVVJDRV9SRVFVRVNUSU5HX0xNWBACEiMKH01YX1NUQVRV",
            "U19TT1VSQ0VfUkVTUE9ORElOR19MTVgQAxIjCh9NWF9TVEFUVVNfU09VUkNF",
            "X1JFUVVFU1RJTkdfTk1YEAQSIwofTVhfU1RBVFVTX1NPVVJDRV9SRVNQT05E",
            "SU5HX05NWBAFEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVRVUVTVElOR19BVVRP",
            "TUFUSU9OX09CSkVDVBAGEjEKLU1YX1NUQVRVU19TT1VSQ0VfUkVTUE9ORElO",
            "R19BVVRPTUFUSU9OX09CSkVDVBAHKt0ECgpNeERhdGFUeXBlEhwKGE1YX0RB",
            "VEFfVFlQRV9VTlNQRUNJRklFRBAAEhgKFE1YX0RBVEFfVFlQRV9VTktOT1dO",
            "EAESGAoUTVhfREFUQV9UWVBFX05PX0RBVEEQAhIYChRNWF9EQVRBX1RZUEVf",
            "Qk9PTEVBThADEhgKFE1YX0RBVEFfVFlQRV9JTlRFR0VSEAQSFgoSTVhfREFU",
            "QV9UWVBFX0ZMT0FUEAUSFwoTTVhfREFUQV9UWVBFX0RPVUJMRRAGEhcKE01Y",
            "X0RBVEFfVFlQRV9TVFJJTkcQBxIVChFNWF9EQVRBX1RZUEVfVElNRRAIEh0K",
            "GU1YX0RBVEFfVFlQRV9FTEFQU0VEX1RJTUUQCRIfChtNWF9EQVRBX1RZUEVf",
            "UkVGRVJFTkNFX1RZUEUQChIcChhNWF9EQVRBX1RZUEVfU1RBVFVTX1RZUEUQ",
            "CxIVChFNWF9EQVRBX1RZUEVfRU5VTRAMEi0KKU1YX0RBVEFfVFlQRV9TRUNV",
            "UklUWV9DTEFTU0lGSUNBVElPTl9FTlVNEA0SIgoeTVhfREFUQV9UWVBFX0RB",
            "VEFfUVVBTElUWV9UWVBFEA4SHwobTVhfREFUQV9UWVBFX1FVQUxJRklFRF9F",
            "TlVNEA8SIQodTVhfREFUQV9UWVBFX1FVQUxJRklFRF9TVFJVQ1QQEBIpCiVN",
            "WF9EQVRBX1RZUEVfSU5URVJOQVRJT05BTElaRURfU1RSSU5HEBESGwoXTVhf",
            "REFUQV9UWVBFX0JJR19TVFJJTkcQEhIUChBNWF9EQVRBX1RZUEVfRU5EEBMq",
            "owMKElByb3RvY29sU3RhdHVzQ29kZRIkCiBQUk9UT0NPTF9TVEFUVVNfQ09E",
            "RV9VTlNQRUNJRklFRBAAEhsKF1BST1RPQ09MX1NUQVRVU19DT0RFX09LEAES",
            "KAokUFJPVE9DT0xfU1RBVFVTX0NPREVfSU5WQUxJRF9SRVFVRVNUEAISKgom",
            "UFJPVE9DT0xfU1RBVFVTX0NPREVfU0VTU0lPTl9OT1RfRk9VTkQQAxIqCiZQ",
            "Uk9UT0NPTF9TVEFUVVNfQ09ERV9TRVNTSU9OX05PVF9SRUFEWRAEEisKJ1BS",
            "T1RPQ09MX1NUQVRVU19DT0RFX1dPUktFUl9VTkFWQUlMQUJMRRAFEiAKHFBS",
            "T1RPQ09MX1NUQVRVU19DT0RFX1RJTUVPVVQQBhIhCh1QUk9UT0NPTF9TVEFU",
            "VVNfQ09ERV9DQU5DRUxFRBAHEisKJ1BST1RPQ09MX1NUQVRVU19DT0RFX1BS",
            "T1RPQ09MX1ZJT0xBVElPThAIEikKJVBST1RPQ09MX1NUQVRVU19DT0RFX01Y",
            "QUNDRVNTX0ZBSUxVUkUQCSq/AgoMU2Vzc2lvblN0YXRlEh0KGVNFU1NJT05f",
            "U1RBVEVfVU5TUEVDSUZJRUQQABIaChZTRVNTSU9OX1NUQVRFX0NSRUFUSU5H",
            "EAESIQodU0VTU0lPTl9TVEFURV9TVEFSVElOR19XT1JLRVIQAhIiCh5TRVNT",
            "SU9OX1NUQVRFX1dBSVRJTkdfRk9SX1BJUEUQAxIdChlTRVNTSU9OX1NUQVRF",
            "X0hBTkRTSEFLSU5HEAQSJQohU0VTU0lPTl9TVEFURV9JTklUSUFMSVpJTkdf",
            "V09SS0VSEAUSFwoTU0VTU0lPTl9TVEFURV9SRUFEWRAGEhkKFVNFU1NJT05f",
            "U1RBVEVfQ0xPU0lORxAHEhgKFFNFU1NJT05fU1RBVEVfQ0xPU0VEEAgSGQoV",
            "U0VTU0lPTl9TVEFURV9GQVVMVEVEEAkywwUKD014QWNjZXNzR2F0ZXdheRJd",
            "CgtPcGVuU2Vzc2lvbhInLm14YWNjZXNzX2dhdGV3YXkudjEuT3BlblNlc3Np",
            "b25SZXF1ZXN0GiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5PcGVuU2Vzc2lvblJl",
            "cGx5EmAKDENsb3NlU2Vzc2lvbhIoLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xv",
            "c2VTZXNzaW9uUmVxdWVzdBomLm14YWNjZXNzX2dhdGV3YXkudjEuQ2xvc2VT",
            "ZXNzaW9uUmVwbHkSVAoGSW52b2tlEiUubXhhY2Nlc3NfZ2F0ZXdheS52MS5N",
            "eENvbW1hbmRSZXF1ZXN0GiMubXhhY2Nlc3NfZ2F0ZXdheS52MS5NeENvbW1h",
            "bmRSZXBseRJYCgxTdHJlYW1FdmVudHMSKC5teGFjY2Vzc19nYXRld2F5LnYx",
            "LlN0cmVhbUV2ZW50c1JlcXVlc3QaHC5teGFjY2Vzc19nYXRld2F5LnYxLk14",
            "RXZlbnQwARJsChBBY2tub3dsZWRnZUFsYXJtEiwubXhhY2Nlc3NfZ2F0ZXdh",
            "eS52MS5BY2tub3dsZWRnZUFsYXJtUmVxdWVzdBoqLm14YWNjZXNzX2dhdGV3",
            "YXkudjEuQWNrbm93bGVkZ2VBbGFybVJlcGx5EmEKDFN0cmVhbUFsYXJtcxIo",
            "Lm14YWNjZXNzX2dhdGV3YXkudjEuU3RyZWFtQWxhcm1zUmVxdWVzdBolLm14",
            "YWNjZXNzX2dhdGV3YXkudjEuQWxhcm1GZWVkTWVzc2FnZTABEm4KEVF1ZXJ5",
            "QWN0aXZlQWxhcm1zEi0ubXhhY2Nlc3NfZ2F0ZXdheS52MS5RdWVyeUFjdGl2",
            "ZUFsYXJtc1JlcXVlc3QaKC5teGFjY2Vzc19nYXRld2F5LnYxLkFjdGl2ZUFs",
            "YXJtU25hcHNob3QwAUImqgIjWkIuTU9NLldXLk14R2F0ZXdheS5Db250cmFj",
            "dHMuUHJvdG9iBnByb3RvMw=="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Google.Protobuf.WellKnownTypes.DurationReflection.Descriptor, global::Google.Protobuf.WellKnownTypes.TimestampReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode), typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState), }, null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsRequest.Parser, new[]{ "SessionId", "ClientCorrelationId", "AlarmFilterPrefix" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OpenSessionRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OpenSessionRequest.Parser, new[]{ "RequestedBackend", "ClientSessionName", "ClientCorrelationId", "CommandTimeout" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OpenSessionReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OpenSessionReply.Parser, new[]{ "SessionId", "BackendName", "WorkerProcessId", "WorkerProtocolVersion", "Capabilities", "DefaultCommandTimeout", "ProtocolStatus", "GatewayProtocolVersion" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionRequest.Parser, new[]{ "SessionId", "ClientCorrelationId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.CloseSessionReply.Parser, new[]{ "SessionId", "FinalState", "ProtocolStatus" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamEventsRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamEventsRequest.Parser, new[]{ "SessionId", "AfterWorkerSequence" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandRequest.Parser, new[]{ "SessionId", "ClientCorrelationId", "Command" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand.Parser, new[]{ "Kind", "Register", "Unregister", "AddItem", "AddItem2", "RemoveItem", "Advise", "UnAdvise", "AdviseSupervisory", "AddBufferedItem", "SetBufferedUpdateInterval", "Suspend", "Activate", "Write", "Write2", "WriteSecured", "WriteSecured2", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "SubscribeAlarms", "UnsubscribeAlarms", "AcknowledgeAlarmCommand", "QueryActiveAlarmsCommand", "AcknowledgeAlarmByNameCommand", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "Ping", "GetSessionState", "GetWorkerInfo", "DrainEvents", "ShutdownWorker" }, new[]{ "Payload" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand.Parser, new[]{ "ClientName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand.Parser, new[]{ "ServerHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand.Parser, new[]{ "ServerHandle", "ItemDefinition" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command.Parser, new[]{ "ServerHandle", "ItemDefinition", "ItemContext" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand.Parser, new[]{ "ServerHandle", "ItemDefinition", "ItemContext" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand.Parser, new[]{ "ServerHandle", "UpdateIntervalMilliseconds" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand.Parser, new[]{ "ServerHandle", "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand.Parser, new[]{ "ServerHandle", "ItemHandle", "Value", "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command), global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command.Parser, new[]{ "ServerHandle", "ItemHandle", "Value", "TimestampValue", "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand.Parser, new[]{ "ServerHandle", "ItemHandle", "CurrentUserId", "VerifierUserId", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command.Parser, new[]{ "ServerHandle", "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", "TimestampValue" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand.Parser, new[]{ "ServerHandle", "VerifyUser", "VerifyUserPassword" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand.Parser, new[]{ "ServerHandle", "UserIdGuid" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand.Parser, new[]{ "ServerHandle", "TagAddresses" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand.Parser, new[]{ "ServerHandle", "TagAddresses" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand.Parser, new[]{ "SubscriptionExpression", "ForcedMode", "WatchList", "Failover" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget.Parser, new[]{ "AlarmFullReference", "SourceObjectReference", "ActiveSubtag", "AckedSubtag", "AckCommentSubtag", "PrioritySubtag" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig.Parser, new[]{ "ConsecutiveFailureThreshold", "FailbackProbeIntervalSeconds", "FailbackStableProbes" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand.Parser, new[]{ "AlarmGuid", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand.Parser, new[]{ "AlarmFilterPrefix" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand.Parser, new[]{ "AlarmName", "ProviderName", "GroupName", "Comment", "OperatorUser", "OperatorNode", "OperatorDomain", "OperatorFullName" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand.Parser, new[]{ "ServerHandle", "ItemHandles" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry.Parser, new[]{ "ItemHandle", "Value", "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry), global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry.Parser, new[]{ "ItemHandle", "Value", "TimestampValue", "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry.Parser, new[]{ "ItemHandle", "CurrentUserId", "VerifierUserId", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand.Parser, new[]{ "ServerHandle", "Entries" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry.Parser, new[]{ "ItemHandle", "CurrentUserId", "VerifierUserId", "Value", "TimestampValue" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand.Parser, new[]{ "ServerHandle", "TagAddresses", "TimeoutMs" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand.Parser, new[]{ "Message" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand.Parser, new[]{ "MaxEvents" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand.Parser, new[]{ "GracePeriod" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandReply.Parser, new[]{ "SessionId", "CorrelationId", "Kind", "ProtocolStatus", "Hresult", "ReturnValue", "Statuses", "DiagnosticMessage", "Register", "AddItem", "AddItem2", "AddBufferedItem", "Suspend", "Activate", "AuthenticateUser", "ArchestraUserToId", "AddItemBulk", "AdviseItemBulk", "RemoveItemBulk", "UnAdviseItemBulk", "SubscribeBulk", "UnsubscribeBulk", "AcknowledgeAlarm", "QueryActiveAlarms", "WriteBulk", "Write2Bulk", "WriteSecuredBulk", "WriteSecured2Bulk", "ReadBulk", "SessionState", "WorkerInfo", "DrainEvents" }, new[]{ "Payload", "Hresult" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply.Parser, new[]{ "ServerHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply.Parser, new[]{ "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply.Parser, new[]{ "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply.Parser, new[]{ "ItemHandle" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply.Parser, new[]{ "Status" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply.Parser, new[]{ "Status" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply.Parser, new[]{ "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply.Parser, new[]{ "UserId" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult.Parser, new[]{ "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "ErrorMessage" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply.Parser, new[]{ "Results" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult.Parser, new[]{ "ServerHandle", "ItemHandle", "WasSuccessful", "Hresult", "Statuses", "ErrorMessage" }, new[]{ "Hresult" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply.Parser, new[]{ "Results" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult.Parser, new[]{ "ServerHandle", "TagAddress", "ItemHandle", "WasSuccessful", "WasCached", "Value", "Quality", "SourceTimestamp", "Statuses", "ErrorMessage" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply.Parser, new[]{ "Results" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply.Parser, new[]{ "State" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply.Parser, new[]{ "WorkerProcessId", "WorkerVersion", "MxaccessProgid", "MxaccessClsid" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply.Parser, new[]{ "Events" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload.Parser, new[]{ "NativeStatus" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload), global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload.Parser, new[]{ "Snapshots", "SnapshotTruncated" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent.Parser, new[]{ "Family", "SessionId", "ServerHandle", "ItemHandle", "Value", "Quality", "SourceTimestamp", "Statuses", "WorkerSequence", "WorkerTimestamp", "GatewayReceiveTimestamp", "Hresult", "RawStatus", "ReplayGap", "OnDataChange", "OnWriteComplete", "OperationComplete", "OnBufferedDataChange", "OnAlarmTransition", "OnAlarmProviderModeChanged" }, new[]{ "Body", "Hresult", "ReplayGap" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap.Parser, new[]{ "RequestedAfterSequence", "OldestAvailableSequence" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent.Parser, null, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent.Parser, new[]{ "DataType", "QualityValues", "TimestampValues", "RawDataType" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent.Parser, new[]{ "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "TransitionKind", "Severity", "OriginalRaiseTimestamp", "TransitionTimestamp", "OperatorUser", "OperatorComment", "Category", "Description", "CurrentValue", "LimitValue", "Degraded", "SourceProvider" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent), global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent.Parser, new[]{ "Mode", "Reason", "Hresult", "At" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot.Parser, new[]{ "AlarmFullReference", "SourceObjectReference", "AlarmTypeName", "Severity", "OriginalRaiseTimestamp", "CurrentState", "Category", "Description", "LastTransitionTimestamp", "OperatorUser", "OperatorComment", "CurrentValue", "LimitValue", "Degraded", "SourceProvider", "FromTruncatedSnapshot" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmRequest.Parser, new[]{ "ClientCorrelationId", "AlarmFullReference", "Comment", "OperatorUser" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReply), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReply.Parser, new[]{ "CorrelationId", "ProtocolStatus", "Hresult", "Status", "DiagnosticMessage" }, new[]{ "Hresult" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamAlarmsRequest), global::ZB.MOM.WW.MxGateway.Contracts.Proto.StreamAlarmsRequest.Parser, new[]{ "ClientCorrelationId", "AlarmFilterPrefix" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFeedMessage), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFeedMessage.Parser, new[]{ "ActiveAlarm", "SnapshotComplete", "Transition", "ProviderStatus", "SnapshotStatus" }, new[]{ "Payload" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus.Parser, new[]{ "Mode", "Degraded", "Reason", "Since" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus), global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus.Parser, new[]{ "Truncated" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy.Parser, new[]{ "Success", "Category", "DetectedBy", "Detail", "RawCategory", "RawDetectedBy", "DiagnosticText" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue.Parser, new[]{ "DataType", "VariantType", "IsNull", "RawDiagnostic", "RawDataType", "BoolValue", "Int32Value", "Int64Value", "FloatValue", "DoubleValue", "StringValue", "TimestampValue", "ArrayValue", "RawValue", "SparseArrayValue" }, new[]{ "Kind" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray.Parser, new[]{ "ElementDataType", "VariantType", "Dimensions", "RawDiagnostic", "RawElementDataType", "BoolValues", "Int32Values", "Int64Values", "FloatValues", "DoubleValues", "StringValues", "TimestampValues", "RawValues" }, new[]{ "Values" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray.Parser, new[]{ "ElementDataType", "TotalLength", "Elements" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement), global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement.Parser, new[]{ "Index", "Value" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array), global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array), global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray), global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray.Parser, new[]{ "Values" }, null, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus), global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus.Parser, new[]{ "Code", "Message" }, null, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum MxCommandKind {
    [pbr::OriginalName("MX_COMMAND_KIND_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("MX_COMMAND_KIND_REGISTER")] Register = 1,
    [pbr::OriginalName("MX_COMMAND_KIND_UNREGISTER")] Unregister = 2,
    [pbr::OriginalName("MX_COMMAND_KIND_ADD_ITEM")] AddItem = 3,
    [pbr::OriginalName("MX_COMMAND_KIND_ADD_ITEM2")] AddItem2 = 4,
    [pbr::OriginalName("MX_COMMAND_KIND_REMOVE_ITEM")] RemoveItem = 5,
    [pbr::OriginalName("MX_COMMAND_KIND_ADVISE")] Advise = 6,
    [pbr::OriginalName("MX_COMMAND_KIND_UN_ADVISE")] UnAdvise = 7,
    [pbr::OriginalName("MX_COMMAND_KIND_ADVISE_SUPERVISORY")] AdviseSupervisory = 8,
    [pbr::OriginalName("MX_COMMAND_KIND_ADD_BUFFERED_ITEM")] AddBufferedItem = 9,
    [pbr::OriginalName("MX_COMMAND_KIND_SET_BUFFERED_UPDATE_INTERVAL")] SetBufferedUpdateInterval = 10,
    [pbr::OriginalName("MX_COMMAND_KIND_SUSPEND")] Suspend = 11,
    [pbr::OriginalName("MX_COMMAND_KIND_ACTIVATE")] Activate = 12,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE")] Write = 13,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE2")] Write2 = 14,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED")] WriteSecured = 15,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED2")] WriteSecured2 = 16,
    [pbr::OriginalName("MX_COMMAND_KIND_AUTHENTICATE_USER")] AuthenticateUser = 17,
    [pbr::OriginalName("MX_COMMAND_KIND_ARCHESTRA_USER_TO_ID")] ArchestraUserToId = 18,
    [pbr::OriginalName("MX_COMMAND_KIND_ADD_ITEM_BULK")] AddItemBulk = 19,
    [pbr::OriginalName("MX_COMMAND_KIND_ADVISE_ITEM_BULK")] AdviseItemBulk = 20,
    [pbr::OriginalName("MX_COMMAND_KIND_REMOVE_ITEM_BULK")] RemoveItemBulk = 21,
    [pbr::OriginalName("MX_COMMAND_KIND_UN_ADVISE_ITEM_BULK")] UnAdviseItemBulk = 22,
    [pbr::OriginalName("MX_COMMAND_KIND_SUBSCRIBE_BULK")] SubscribeBulk = 23,
    [pbr::OriginalName("MX_COMMAND_KIND_UNSUBSCRIBE_BULK")] UnsubscribeBulk = 24,
    [pbr::OriginalName("MX_COMMAND_KIND_SUBSCRIBE_ALARMS")] SubscribeAlarms = 25,
    [pbr::OriginalName("MX_COMMAND_KIND_UNSUBSCRIBE_ALARMS")] UnsubscribeAlarms = 26,
    [pbr::OriginalName("MX_COMMAND_KIND_ACKNOWLEDGE_ALARM")] AcknowledgeAlarm = 27,
    [pbr::OriginalName("MX_COMMAND_KIND_QUERY_ACTIVE_ALARMS")] QueryActiveAlarms = 28,
    [pbr::OriginalName("MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME")] AcknowledgeAlarmByName = 29,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE_BULK")] WriteBulk = 30,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE2_BULK")] Write2Bulk = 31,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED_BULK")] WriteSecuredBulk = 32,
    [pbr::OriginalName("MX_COMMAND_KIND_WRITE_SECURED2_BULK")] WriteSecured2Bulk = 33,
    [pbr::OriginalName("MX_COMMAND_KIND_READ_BULK")] ReadBulk = 34,
    [pbr::OriginalName("MX_COMMAND_KIND_PING")] Ping = 100,
    [pbr::OriginalName("MX_COMMAND_KIND_GET_SESSION_STATE")] GetSessionState = 101,
    [pbr::OriginalName("MX_COMMAND_KIND_GET_WORKER_INFO")] GetWorkerInfo = 102,
    [pbr::OriginalName("MX_COMMAND_KIND_DRAIN_EVENTS")] DrainEvents = 103,
    [pbr::OriginalName("MX_COMMAND_KIND_SHUTDOWN_WORKER")] ShutdownWorker = 104,
  }

  /// <summary>
  /// Provider selection / current provider for the alarm feed. The zero value
  /// has two distinct meanings depending on the use site:
  ///   - As SubscribeAlarmsCommand.forced_mode, UNSPECIFIED means auto: alarmmgr
  ///     primary with subtag fallback.
  ///   - As a provenance value (OnAlarmTransitionEvent.source_provider,
  ///     ActiveAlarmSnapshot.source_provider, OnAlarmProviderModeChangedEvent.mode,
  ///     AlarmProviderStatus.mode), the worker always emits ALARMMGR or SUBTAG and
  ///     never UNSPECIFIED; clients should treat a UNSPECIFIED provenance value as
  ///     "unknown / not yet determined".
  /// </summary>
  public enum AlarmProviderMode {
    [pbr::OriginalName("ALARM_PROVIDER_MODE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("ALARM_PROVIDER_MODE_ALARMMGR")] Alarmmgr = 1,
    [pbr::OriginalName("ALARM_PROVIDER_MODE_SUBTAG")] Subtag = 2,
  }

  public enum MxEventFamily {
    [pbr::OriginalName("MX_EVENT_FAMILY_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("MX_EVENT_FAMILY_ON_DATA_CHANGE")] OnDataChange = 1,
    [pbr::OriginalName("MX_EVENT_FAMILY_ON_WRITE_COMPLETE")] OnWriteComplete = 2,
    [pbr::OriginalName("MX_EVENT_FAMILY_OPERATION_COMPLETE")] OperationComplete = 3,
    [pbr::OriginalName("MX_EVENT_FAMILY_ON_BUFFERED_DATA_CHANGE")] OnBufferedDataChange = 4,
    [pbr::OriginalName("MX_EVENT_FAMILY_ON_ALARM_TRANSITION")] OnAlarmTransition = 5,
    [pbr::OriginalName("MX_EVENT_FAMILY_ON_ALARM_PROVIDER_MODE_CHANGED")] OnAlarmProviderModeChanged = 6,
  }

  public enum AlarmTransitionKind {
    [pbr::OriginalName("ALARM_TRANSITION_KIND_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("ALARM_TRANSITION_KIND_RAISE")] Raise = 1,
    [pbr::OriginalName("ALARM_TRANSITION_KIND_ACKNOWLEDGE")] Acknowledge = 2,
    [pbr::OriginalName("ALARM_TRANSITION_KIND_CLEAR")] Clear = 3,
    [pbr::OriginalName("ALARM_TRANSITION_KIND_RETRIGGER")] Retrigger = 4,
  }

  public enum AlarmConditionState {
    [pbr::OriginalName("ALARM_CONDITION_STATE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("ALARM_CONDITION_STATE_ACTIVE")] Active = 1,
    [pbr::OriginalName("ALARM_CONDITION_STATE_ACTIVE_ACKED")] ActiveAcked = 2,
    [pbr::OriginalName("ALARM_CONDITION_STATE_INACTIVE")] Inactive = 3,
  }

  public enum MxStatusCategory {
    [pbr::OriginalName("MX_STATUS_CATEGORY_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("MX_STATUS_CATEGORY_UNKNOWN")] Unknown = 1,
    [pbr::OriginalName("MX_STATUS_CATEGORY_OK")] Ok = 2,
    [pbr::OriginalName("MX_STATUS_CATEGORY_PENDING")] Pending = 3,
    [pbr::OriginalName("MX_STATUS_CATEGORY_WARNING")] Warning = 4,
    [pbr::OriginalName("MX_STATUS_CATEGORY_COMMUNICATION_ERROR")] CommunicationError = 5,
    [pbr::OriginalName("MX_STATUS_CATEGORY_CONFIGURATION_ERROR")] ConfigurationError = 6,
    [pbr::OriginalName("MX_STATUS_CATEGORY_OPERATIONAL_ERROR")] OperationalError = 7,
    [pbr::OriginalName("MX_STATUS_CATEGORY_SECURITY_ERROR")] SecurityError = 8,
    [pbr::OriginalName("MX_STATUS_CATEGORY_SOFTWARE_ERROR")] SoftwareError = 9,
    [pbr::OriginalName("MX_STATUS_CATEGORY_OTHER_ERROR")] OtherError = 10,
  }

  public enum MxStatusSource {
    [pbr::OriginalName("MX_STATUS_SOURCE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("MX_STATUS_SOURCE_UNKNOWN")] Unknown = 1,
    [pbr::OriginalName("MX_STATUS_SOURCE_REQUESTING_LMX")] RequestingLmx = 2,
    [pbr::OriginalName("MX_STATUS_SOURCE_RESPONDING_LMX")] RespondingLmx = 3,
    [pbr::OriginalName("MX_STATUS_SOURCE_REQUESTING_NMX")] RequestingNmx = 4,
    [pbr::OriginalName("MX_STATUS_SOURCE_RESPONDING_NMX")] RespondingNmx = 5,
    [pbr::OriginalName("MX_STATUS_SOURCE_REQUESTING_AUTOMATION_OBJECT")] RequestingAutomationObject = 6,
    [pbr::OriginalName("MX_STATUS_SOURCE_RESPONDING_AUTOMATION_OBJECT")] RespondingAutomationObject = 7,
  }

  public enum MxDataType {
    [pbr::OriginalName("MX_DATA_TYPE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("MX_DATA_TYPE_UNKNOWN")] Unknown = 1,
    [pbr::OriginalName("MX_DATA_TYPE_NO_DATA")] NoData = 2,
    [pbr::OriginalName("MX_DATA_TYPE_BOOLEAN")] Boolean = 3,
    [pbr::OriginalName("MX_DATA_TYPE_INTEGER")] Integer = 4,
    [pbr::OriginalName("MX_DATA_TYPE_FLOAT")] Float = 5,
    [pbr::OriginalName("MX_DATA_TYPE_DOUBLE")] Double = 6,
    [pbr::OriginalName("MX_DATA_TYPE_STRING")] String = 7,
    [pbr::OriginalName("MX_DATA_TYPE_TIME")] Time = 8,
    [pbr::OriginalName("MX_DATA_TYPE_ELAPSED_TIME")] ElapsedTime = 9,
    [pbr::OriginalName("MX_DATA_TYPE_REFERENCE_TYPE")] ReferenceType = 10,
    [pbr::OriginalName("MX_DATA_TYPE_STATUS_TYPE")] StatusType = 11,
    [pbr::OriginalName("MX_DATA_TYPE_ENUM")] Enum = 12,
    [pbr::OriginalName("MX_DATA_TYPE_SECURITY_CLASSIFICATION_ENUM")] SecurityClassificationEnum = 13,
    [pbr::OriginalName("MX_DATA_TYPE_DATA_QUALITY_TYPE")] DataQualityType = 14,
    [pbr::OriginalName("MX_DATA_TYPE_QUALIFIED_ENUM")] QualifiedEnum = 15,
    [pbr::OriginalName("MX_DATA_TYPE_QUALIFIED_STRUCT")] QualifiedStruct = 16,
    [pbr::OriginalName("MX_DATA_TYPE_INTERNATIONALIZED_STRING")] InternationalizedString = 17,
    [pbr::OriginalName("MX_DATA_TYPE_BIG_STRING")] BigString = 18,
    [pbr::OriginalName("MX_DATA_TYPE_END")] End = 19,
  }

  public enum ProtocolStatusCode {
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_OK")] Ok = 1,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_INVALID_REQUEST")] InvalidRequest = 2,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_SESSION_NOT_FOUND")] SessionNotFound = 3,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_SESSION_NOT_READY")] SessionNotReady = 4,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_WORKER_UNAVAILABLE")] WorkerUnavailable = 5,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_TIMEOUT")] Timeout = 6,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_CANCELED")] Canceled = 7,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_PROTOCOL_VIOLATION")] ProtocolViolation = 8,
    [pbr::OriginalName("PROTOCOL_STATUS_CODE_MXACCESS_FAILURE")] MxaccessFailure = 9,
  }

  public enum SessionState {
    [pbr::OriginalName("SESSION_STATE_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("SESSION_STATE_CREATING")] Creating = 1,
    [pbr::OriginalName("SESSION_STATE_STARTING_WORKER")] StartingWorker = 2,
    [pbr::OriginalName("SESSION_STATE_WAITING_FOR_PIPE")] WaitingForPipe = 3,
    [pbr::OriginalName("SESSION_STATE_HANDSHAKING")] Handshaking = 4,
    [pbr::OriginalName("SESSION_STATE_INITIALIZING_WORKER")] InitializingWorker = 5,
    [pbr::OriginalName("SESSION_STATE_READY")] Ready = 6,
    [pbr::OriginalName("SESSION_STATE_CLOSING")] Closing = 7,
    [pbr::OriginalName("SESSION_STATE_CLOSED")] Closed = 8,
    [pbr::OriginalName("SESSION_STATE_FAULTED")] Faulted = 9,
  }

  #endregion

  #region Messages
  /// <summary>
  /// Public request shape for QueryActiveAlarms.
  /// Clients may leave `session_id` empty; the gateway currently ignores it and
  /// serves the session-less central-monitor cache. A future version may use it
  /// to scope the snapshot to one session.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class QueryActiveAlarmsRequest : pb::IMessage<QueryActiveAlarmsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<QueryActiveAlarmsRequest> _parser = new pb::MessageParser<QueryActiveAlarmsRequest>(() => new QueryActiveAlarmsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<QueryActiveAlarmsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsRequest(QueryActiveAlarmsRequest other) : this() {
      sessionId_ = other.sessionId_;
      clientCorrelationId_ = other.clientCorrelationId_;
      alarmFilterPrefix_ = other.alarmFilterPrefix_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsRequest Clone() {
      return new QueryActiveAlarmsRequest(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 2;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_filter_prefix" field.</summary>
    public const int AlarmFilterPrefixFieldNumber = 3;
    private string alarmFilterPrefix_ = "";
    /// <summary>
    /// Optional filter: when non-empty, only snapshots whose alarm_full_reference
    /// starts with this string are returned.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFilterPrefix {
      get { return alarmFilterPrefix_; }
      set {
        alarmFilterPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as QueryActiveAlarmsRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(QueryActiveAlarmsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      if (AlarmFilterPrefix != other.AlarmFilterPrefix) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (AlarmFilterPrefix.Length != 0) hash ^= AlarmFilterPrefix.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(QueryActiveAlarmsRequest other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      if (other.AlarmFilterPrefix.Length != 0) {
        AlarmFilterPrefix = other.AlarmFilterPrefix;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OpenSessionRequest : pb::IMessage<OpenSessionRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OpenSessionRequest> _parser = new pb::MessageParser<OpenSessionRequest>(() => new OpenSessionRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OpenSessionRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionRequest(OpenSessionRequest other) : this() {
      requestedBackend_ = other.requestedBackend_;
      clientSessionName_ = other.clientSessionName_;
      clientCorrelationId_ = other.clientCorrelationId_;
      commandTimeout_ = other.commandTimeout_ != null ? other.commandTimeout_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionRequest Clone() {
      return new OpenSessionRequest(this);
    }

    /// <summary>Field number for the "requested_backend" field.</summary>
    public const int RequestedBackendFieldNumber = 1;
    private string requestedBackend_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RequestedBackend {
      get { return requestedBackend_; }
      set {
        requestedBackend_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "client_session_name" field.</summary>
    public const int ClientSessionNameFieldNumber = 2;
    private string clientSessionName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientSessionName {
      get { return clientSessionName_; }
      set {
        clientSessionName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 3;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "command_timeout" field.</summary>
    public const int CommandTimeoutFieldNumber = 4;
    private global::Google.Protobuf.WellKnownTypes.Duration commandTimeout_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration CommandTimeout {
      get { return commandTimeout_; }
      set {
        commandTimeout_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OpenSessionRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OpenSessionRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RequestedBackend != other.RequestedBackend) return false;
      if (ClientSessionName != other.ClientSessionName) return false;
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      if (!object.Equals(CommandTimeout, other.CommandTimeout)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (RequestedBackend.Length != 0) hash ^= RequestedBackend.GetHashCode();
      if (ClientSessionName.Length != 0) hash ^= ClientSessionName.GetHashCode();
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (commandTimeout_ != null) hash ^= CommandTimeout.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (RequestedBackend.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestedBackend);
      }
      if (ClientSessionName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientSessionName);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ClientCorrelationId);
      }
      if (commandTimeout_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CommandTimeout);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (RequestedBackend.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(RequestedBackend);
      }
      if (ClientSessionName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientSessionName);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ClientCorrelationId);
      }
      if (commandTimeout_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(CommandTimeout);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (RequestedBackend.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RequestedBackend);
      }
      if (ClientSessionName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientSessionName);
      }
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (commandTimeout_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CommandTimeout);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OpenSessionRequest other) {
      if (other == null) {
        return;
      }
      if (other.RequestedBackend.Length != 0) {
        RequestedBackend = other.RequestedBackend;
      }
      if (other.ClientSessionName.Length != 0) {
        ClientSessionName = other.ClientSessionName;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      if (other.commandTimeout_ != null) {
        if (commandTimeout_ == null) {
          CommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
        }
        CommandTimeout.MergeFrom(other.CommandTimeout);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            RequestedBackend = input.ReadString();
            break;
          }
          case 18: {
            ClientSessionName = input.ReadString();
            break;
          }
          case 26: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 34: {
            if (commandTimeout_ == null) {
              CommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(CommandTimeout);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            RequestedBackend = input.ReadString();
            break;
          }
          case 18: {
            ClientSessionName = input.ReadString();
            break;
          }
          case 26: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 34: {
            if (commandTimeout_ == null) {
              CommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(CommandTimeout);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OpenSessionReply : pb::IMessage<OpenSessionReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OpenSessionReply> _parser = new pb::MessageParser<OpenSessionReply>(() => new OpenSessionReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OpenSessionReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionReply(OpenSessionReply other) : this() {
      sessionId_ = other.sessionId_;
      backendName_ = other.backendName_;
      workerProcessId_ = other.workerProcessId_;
      workerProtocolVersion_ = other.workerProtocolVersion_;
      capabilities_ = other.capabilities_.Clone();
      defaultCommandTimeout_ = other.defaultCommandTimeout_ != null ? other.defaultCommandTimeout_.Clone() : null;
      protocolStatus_ = other.protocolStatus_ != null ? other.protocolStatus_.Clone() : null;
      gatewayProtocolVersion_ = other.gatewayProtocolVersion_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OpenSessionReply Clone() {
      return new OpenSessionReply(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "backend_name" field.</summary>
    public const int BackendNameFieldNumber = 2;
    private string backendName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string BackendName {
      get { return backendName_; }
      set {
        backendName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "worker_process_id" field.</summary>
    public const int WorkerProcessIdFieldNumber = 3;
    private int workerProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int WorkerProcessId {
      get { return workerProcessId_; }
      set {
        workerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "worker_protocol_version" field.</summary>
    public const int WorkerProtocolVersionFieldNumber = 4;
    private uint workerProtocolVersion_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint WorkerProtocolVersion {
      get { return workerProtocolVersion_; }
      set {
        workerProtocolVersion_ = value;
      }
    }

    /// <summary>Field number for the "capabilities" field.</summary>
    public const int CapabilitiesFieldNumber = 5;
    private static readonly pb::FieldCodec<string> _repeated_capabilities_codec
        = pb::FieldCodec.ForString(42);
    private readonly pbc::RepeatedField<string> capabilities_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Capabilities {
      get { return capabilities_; }
    }

    /// <summary>Field number for the "default_command_timeout" field.</summary>
    public const int DefaultCommandTimeoutFieldNumber = 6;
    private global::Google.Protobuf.WellKnownTypes.Duration defaultCommandTimeout_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration DefaultCommandTimeout {
      get { return defaultCommandTimeout_; }
      set {
        defaultCommandTimeout_ = value;
      }
    }

    /// <summary>Field number for the "protocol_status" field.</summary>
    public const int ProtocolStatusFieldNumber = 7;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus protocolStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus ProtocolStatus {
      get { return protocolStatus_; }
      set {
        protocolStatus_ = value;
      }
    }

    /// <summary>Field number for the "gateway_protocol_version" field.</summary>
    public const int GatewayProtocolVersionFieldNumber = 8;
    private uint gatewayProtocolVersion_;
    /// <summary>
    /// Public gateway contract version implemented by this endpoint. Clients use
    /// this value to reject incompatible generated-code inputs before issuing
    /// command-specific MXAccess calls.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint GatewayProtocolVersion {
      get { return gatewayProtocolVersion_; }
      set {
        gatewayProtocolVersion_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OpenSessionReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OpenSessionReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (BackendName != other.BackendName) return false;
      if (WorkerProcessId != other.WorkerProcessId) return false;
      if (WorkerProtocolVersion != other.WorkerProtocolVersion) return false;
      if(!capabilities_.Equals(other.capabilities_)) return false;
      if (!object.Equals(DefaultCommandTimeout, other.DefaultCommandTimeout)) return false;
      if (!object.Equals(ProtocolStatus, other.ProtocolStatus)) return false;
      if (GatewayProtocolVersion != other.GatewayProtocolVersion) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (BackendName.Length != 0) hash ^= BackendName.GetHashCode();
      if (WorkerProcessId != 0) hash ^= WorkerProcessId.GetHashCode();
      if (WorkerProtocolVersion != 0) hash ^= WorkerProtocolVersion.GetHashCode();
      hash ^= capabilities_.GetHashCode();
      if (defaultCommandTimeout_ != null) hash ^= DefaultCommandTimeout.GetHashCode();
      if (protocolStatus_ != null) hash ^= ProtocolStatus.GetHashCode();
      if (GatewayProtocolVersion != 0) hash ^= GatewayProtocolVersion.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (BackendName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(BackendName);
      }
      if (WorkerProcessId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerProtocolVersion != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(WorkerProtocolVersion);
      }
      capabilities_.WriteTo(output, _repeated_capabilities_codec);
      if (defaultCommandTimeout_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(DefaultCommandTimeout);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(ProtocolStatus);
      }
      if (GatewayProtocolVersion != 0) {
        output.WriteRawTag(64);
        output.WriteUInt32(GatewayProtocolVersion);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (BackendName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(BackendName);
      }
      if (WorkerProcessId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerProtocolVersion != 0) {
        output.WriteRawTag(32);
        output.WriteUInt32(WorkerProtocolVersion);
      }
      capabilities_.WriteTo(ref output, _repeated_capabilities_codec);
      if (defaultCommandTimeout_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(DefaultCommandTimeout);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(ProtocolStatus);
      }
      if (GatewayProtocolVersion != 0) {
        output.WriteRawTag(64);
        output.WriteUInt32(GatewayProtocolVersion);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (BackendName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(BackendName);
      }
      if (WorkerProcessId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WorkerProcessId);
      }
      if (WorkerProtocolVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(WorkerProtocolVersion);
      }
      size += capabilities_.CalculateSize(_repeated_capabilities_codec);
      if (defaultCommandTimeout_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DefaultCommandTimeout);
      }
      if (protocolStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProtocolStatus);
      }
      if (GatewayProtocolVersion != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(GatewayProtocolVersion);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OpenSessionReply other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.BackendName.Length != 0) {
        BackendName = other.BackendName;
      }
      if (other.WorkerProcessId != 0) {
        WorkerProcessId = other.WorkerProcessId;
      }
      if (other.WorkerProtocolVersion != 0) {
        WorkerProtocolVersion = other.WorkerProtocolVersion;
      }
      capabilities_.Add(other.capabilities_);
      if (other.defaultCommandTimeout_ != null) {
        if (defaultCommandTimeout_ == null) {
          DefaultCommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
        }
        DefaultCommandTimeout.MergeFrom(other.DefaultCommandTimeout);
      }
      if (other.protocolStatus_ != null) {
        if (protocolStatus_ == null) {
          ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        ProtocolStatus.MergeFrom(other.ProtocolStatus);
      }
      if (other.GatewayProtocolVersion != 0) {
        GatewayProtocolVersion = other.GatewayProtocolVersion;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            BackendName = input.ReadString();
            break;
          }
          case 24: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 32: {
            WorkerProtocolVersion = input.ReadUInt32();
            break;
          }
          case 42: {
            capabilities_.AddEntriesFrom(input, _repeated_capabilities_codec);
            break;
          }
          case 50: {
            if (defaultCommandTimeout_ == null) {
              DefaultCommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(DefaultCommandTimeout);
            break;
          }
          case 58: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 64: {
            GatewayProtocolVersion = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            BackendName = input.ReadString();
            break;
          }
          case 24: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 32: {
            WorkerProtocolVersion = input.ReadUInt32();
            break;
          }
          case 42: {
            capabilities_.AddEntriesFrom(ref input, _repeated_capabilities_codec);
            break;
          }
          case 50: {
            if (defaultCommandTimeout_ == null) {
              DefaultCommandTimeout = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(DefaultCommandTimeout);
            break;
          }
          case 58: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 64: {
            GatewayProtocolVersion = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CloseSessionRequest : pb::IMessage<CloseSessionRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CloseSessionRequest> _parser = new pb::MessageParser<CloseSessionRequest>(() => new CloseSessionRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CloseSessionRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionRequest(CloseSessionRequest other) : this() {
      sessionId_ = other.sessionId_;
      clientCorrelationId_ = other.clientCorrelationId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionRequest Clone() {
      return new CloseSessionRequest(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 2;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CloseSessionRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CloseSessionRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CloseSessionRequest other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class CloseSessionReply : pb::IMessage<CloseSessionReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<CloseSessionReply> _parser = new pb::MessageParser<CloseSessionReply>(() => new CloseSessionReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<CloseSessionReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[4]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionReply(CloseSessionReply other) : this() {
      sessionId_ = other.sessionId_;
      finalState_ = other.finalState_;
      protocolStatus_ = other.protocolStatus_ != null ? other.protocolStatus_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public CloseSessionReply Clone() {
      return new CloseSessionReply(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "final_state" field.</summary>
    public const int FinalStateFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState finalState_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState FinalState {
      get { return finalState_; }
      set {
        finalState_ = value;
      }
    }

    /// <summary>Field number for the "protocol_status" field.</summary>
    public const int ProtocolStatusFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus protocolStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus ProtocolStatus {
      get { return protocolStatus_; }
      set {
        protocolStatus_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as CloseSessionReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(CloseSessionReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (FinalState != other.FinalState) return false;
      if (!object.Equals(ProtocolStatus, other.ProtocolStatus)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (FinalState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) hash ^= FinalState.GetHashCode();
      if (protocolStatus_ != null) hash ^= ProtocolStatus.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (FinalState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) FinalState);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ProtocolStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (FinalState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) FinalState);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ProtocolStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (FinalState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FinalState);
      }
      if (protocolStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProtocolStatus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(CloseSessionReply other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.FinalState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        FinalState = other.FinalState;
      }
      if (other.protocolStatus_ != null) {
        if (protocolStatus_ == null) {
          ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        ProtocolStatus.MergeFrom(other.ProtocolStatus);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 16: {
            FinalState = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState) input.ReadEnum();
            break;
          }
          case 26: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 16: {
            FinalState = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState) input.ReadEnum();
            break;
          }
          case 26: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class StreamEventsRequest : pb::IMessage<StreamEventsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StreamEventsRequest> _parser = new pb::MessageParser<StreamEventsRequest>(() => new StreamEventsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StreamEventsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[5]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamEventsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamEventsRequest(StreamEventsRequest other) : this() {
      sessionId_ = other.sessionId_;
      afterWorkerSequence_ = other.afterWorkerSequence_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamEventsRequest Clone() {
      return new StreamEventsRequest(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "after_worker_sequence" field.</summary>
    public const int AfterWorkerSequenceFieldNumber = 2;
    private ulong afterWorkerSequence_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong AfterWorkerSequence {
      get { return afterWorkerSequence_; }
      set {
        afterWorkerSequence_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StreamEventsRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StreamEventsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (AfterWorkerSequence != other.AfterWorkerSequence) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (AfterWorkerSequence != 0UL) hash ^= AfterWorkerSequence.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (AfterWorkerSequence != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(AfterWorkerSequence);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (AfterWorkerSequence != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(AfterWorkerSequence);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (AfterWorkerSequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(AfterWorkerSequence);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StreamEventsRequest other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.AfterWorkerSequence != 0UL) {
        AfterWorkerSequence = other.AfterWorkerSequence;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 16: {
            AfterWorkerSequence = input.ReadUInt64();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 16: {
            AfterWorkerSequence = input.ReadUInt64();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxCommandRequest : pb::IMessage<MxCommandRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxCommandRequest> _parser = new pb::MessageParser<MxCommandRequest>(() => new MxCommandRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxCommandRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[6]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandRequest(MxCommandRequest other) : this() {
      sessionId_ = other.sessionId_;
      clientCorrelationId_ = other.clientCorrelationId_;
      command_ = other.command_ != null ? other.command_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandRequest Clone() {
      return new MxCommandRequest(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 2;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "command" field.</summary>
    public const int CommandFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand command_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand Command {
      get { return command_; }
      set {
        command_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxCommandRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxCommandRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      if (!object.Equals(Command, other.Command)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (command_ != null) hash ^= Command.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (command_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Command);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (command_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Command);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (command_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Command);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxCommandRequest other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      if (other.command_ != null) {
        if (command_ == null) {
          Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
        }
        Command.MergeFrom(other.Command);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            if (command_ == null) {
              Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
            }
            input.ReadMessage(Command);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            if (command_ == null) {
              Command = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommand();
            }
            input.ReadMessage(Command);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxCommand : pb::IMessage<MxCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxCommand> _parser = new pb::MessageParser<MxCommand>(() => new MxCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[7]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommand(MxCommand other) : this() {
      kind_ = other.kind_;
      switch (other.PayloadCase) {
        case PayloadOneofCase.Register:
          Register = other.Register.Clone();
          break;
        case PayloadOneofCase.Unregister:
          Unregister = other.Unregister.Clone();
          break;
        case PayloadOneofCase.AddItem:
          AddItem = other.AddItem.Clone();
          break;
        case PayloadOneofCase.AddItem2:
          AddItem2 = other.AddItem2.Clone();
          break;
        case PayloadOneofCase.RemoveItem:
          RemoveItem = other.RemoveItem.Clone();
          break;
        case PayloadOneofCase.Advise:
          Advise = other.Advise.Clone();
          break;
        case PayloadOneofCase.UnAdvise:
          UnAdvise = other.UnAdvise.Clone();
          break;
        case PayloadOneofCase.AdviseSupervisory:
          AdviseSupervisory = other.AdviseSupervisory.Clone();
          break;
        case PayloadOneofCase.AddBufferedItem:
          AddBufferedItem = other.AddBufferedItem.Clone();
          break;
        case PayloadOneofCase.SetBufferedUpdateInterval:
          SetBufferedUpdateInterval = other.SetBufferedUpdateInterval.Clone();
          break;
        case PayloadOneofCase.Suspend:
          Suspend = other.Suspend.Clone();
          break;
        case PayloadOneofCase.Activate:
          Activate = other.Activate.Clone();
          break;
        case PayloadOneofCase.Write:
          Write = other.Write.Clone();
          break;
        case PayloadOneofCase.Write2:
          Write2 = other.Write2.Clone();
          break;
        case PayloadOneofCase.WriteSecured:
          WriteSecured = other.WriteSecured.Clone();
          break;
        case PayloadOneofCase.WriteSecured2:
          WriteSecured2 = other.WriteSecured2.Clone();
          break;
        case PayloadOneofCase.AuthenticateUser:
          AuthenticateUser = other.AuthenticateUser.Clone();
          break;
        case PayloadOneofCase.ArchestraUserToId:
          ArchestraUserToId = other.ArchestraUserToId.Clone();
          break;
        case PayloadOneofCase.AddItemBulk:
          AddItemBulk = other.AddItemBulk.Clone();
          break;
        case PayloadOneofCase.AdviseItemBulk:
          AdviseItemBulk = other.AdviseItemBulk.Clone();
          break;
        case PayloadOneofCase.RemoveItemBulk:
          RemoveItemBulk = other.RemoveItemBulk.Clone();
          break;
        case PayloadOneofCase.UnAdviseItemBulk:
          UnAdviseItemBulk = other.UnAdviseItemBulk.Clone();
          break;
        case PayloadOneofCase.SubscribeBulk:
          SubscribeBulk = other.SubscribeBulk.Clone();
          break;
        case PayloadOneofCase.UnsubscribeBulk:
          UnsubscribeBulk = other.UnsubscribeBulk.Clone();
          break;
        case PayloadOneofCase.SubscribeAlarms:
          SubscribeAlarms = other.SubscribeAlarms.Clone();
          break;
        case PayloadOneofCase.UnsubscribeAlarms:
          UnsubscribeAlarms = other.UnsubscribeAlarms.Clone();
          break;
        case PayloadOneofCase.AcknowledgeAlarmCommand:
          AcknowledgeAlarmCommand = other.AcknowledgeAlarmCommand.Clone();
          break;
        case PayloadOneofCase.QueryActiveAlarmsCommand:
          QueryActiveAlarmsCommand = other.QueryActiveAlarmsCommand.Clone();
          break;
        case PayloadOneofCase.AcknowledgeAlarmByNameCommand:
          AcknowledgeAlarmByNameCommand = other.AcknowledgeAlarmByNameCommand.Clone();
          break;
        case PayloadOneofCase.WriteBulk:
          WriteBulk = other.WriteBulk.Clone();
          break;
        case PayloadOneofCase.Write2Bulk:
          Write2Bulk = other.Write2Bulk.Clone();
          break;
        case PayloadOneofCase.WriteSecuredBulk:
          WriteSecuredBulk = other.WriteSecuredBulk.Clone();
          break;
        case PayloadOneofCase.WriteSecured2Bulk:
          WriteSecured2Bulk = other.WriteSecured2Bulk.Clone();
          break;
        case PayloadOneofCase.ReadBulk:
          ReadBulk = other.ReadBulk.Clone();
          break;
        case PayloadOneofCase.Ping:
          Ping = other.Ping.Clone();
          break;
        case PayloadOneofCase.GetSessionState:
          GetSessionState = other.GetSessionState.Clone();
          break;
        case PayloadOneofCase.GetWorkerInfo:
          GetWorkerInfo = other.GetWorkerInfo.Clone();
          break;
        case PayloadOneofCase.DrainEvents:
          DrainEvents = other.DrainEvents.Clone();
          break;
        case PayloadOneofCase.ShutdownWorker:
          ShutdownWorker = other.ShutdownWorker.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommand Clone() {
      return new MxCommand(this);
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind kind_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind Kind {
      get { return kind_; }
      set {
        kind_ = value;
      }
    }

    /// <summary>Field number for the "register" field.</summary>
    public const int RegisterFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand Register {
      get { return payloadCase_ == PayloadOneofCase.Register ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Register;
      }
    }

    /// <summary>Field number for the "unregister" field.</summary>
    public const int UnregisterFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand Unregister {
      get { return payloadCase_ == PayloadOneofCase.Unregister ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Unregister;
      }
    }

    /// <summary>Field number for the "add_item" field.</summary>
    public const int AddItemFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand AddItem {
      get { return payloadCase_ == PayloadOneofCase.AddItem ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItem;
      }
    }

    /// <summary>Field number for the "add_item2" field.</summary>
    public const int AddItem2FieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command AddItem2 {
      get { return payloadCase_ == PayloadOneofCase.AddItem2 ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItem2;
      }
    }

    /// <summary>Field number for the "remove_item" field.</summary>
    public const int RemoveItemFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand RemoveItem {
      get { return payloadCase_ == PayloadOneofCase.RemoveItem ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.RemoveItem;
      }
    }

    /// <summary>Field number for the "advise" field.</summary>
    public const int AdviseFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand Advise {
      get { return payloadCase_ == PayloadOneofCase.Advise ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Advise;
      }
    }

    /// <summary>Field number for the "un_advise" field.</summary>
    public const int UnAdviseFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand UnAdvise {
      get { return payloadCase_ == PayloadOneofCase.UnAdvise ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnAdvise;
      }
    }

    /// <summary>Field number for the "advise_supervisory" field.</summary>
    public const int AdviseSupervisoryFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand AdviseSupervisory {
      get { return payloadCase_ == PayloadOneofCase.AdviseSupervisory ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AdviseSupervisory;
      }
    }

    /// <summary>Field number for the "add_buffered_item" field.</summary>
    public const int AddBufferedItemFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand AddBufferedItem {
      get { return payloadCase_ == PayloadOneofCase.AddBufferedItem ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddBufferedItem;
      }
    }

    /// <summary>Field number for the "set_buffered_update_interval" field.</summary>
    public const int SetBufferedUpdateIntervalFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand SetBufferedUpdateInterval {
      get { return payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SetBufferedUpdateInterval;
      }
    }

    /// <summary>Field number for the "suspend" field.</summary>
    public const int SuspendFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand Suspend {
      get { return payloadCase_ == PayloadOneofCase.Suspend ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Suspend;
      }
    }

    /// <summary>Field number for the "activate" field.</summary>
    public const int ActivateFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand Activate {
      get { return payloadCase_ == PayloadOneofCase.Activate ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Activate;
      }
    }

    /// <summary>Field number for the "write" field.</summary>
    public const int WriteFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand Write {
      get { return payloadCase_ == PayloadOneofCase.Write ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write;
      }
    }

    /// <summary>Field number for the "write2" field.</summary>
    public const int Write2FieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command Write2 {
      get { return payloadCase_ == PayloadOneofCase.Write2 ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write2;
      }
    }

    /// <summary>Field number for the "write_secured" field.</summary>
    public const int WriteSecuredFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand WriteSecured {
      get { return payloadCase_ == PayloadOneofCase.WriteSecured ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured;
      }
    }

    /// <summary>Field number for the "write_secured2" field.</summary>
    public const int WriteSecured2FieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command WriteSecured2 {
      get { return payloadCase_ == PayloadOneofCase.WriteSecured2 ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured2;
      }
    }

    /// <summary>Field number for the "authenticate_user" field.</summary>
    public const int AuthenticateUserFieldNumber = 26;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand AuthenticateUser {
      get { return payloadCase_ == PayloadOneofCase.AuthenticateUser ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AuthenticateUser;
      }
    }

    /// <summary>Field number for the "archestra_user_to_id" field.</summary>
    public const int ArchestraUserToIdFieldNumber = 27;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand ArchestraUserToId {
      get { return payloadCase_ == PayloadOneofCase.ArchestraUserToId ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ArchestraUserToId;
      }
    }

    /// <summary>Field number for the "add_item_bulk" field.</summary>
    public const int AddItemBulkFieldNumber = 28;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand AddItemBulk {
      get { return payloadCase_ == PayloadOneofCase.AddItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItemBulk;
      }
    }

    /// <summary>Field number for the "advise_item_bulk" field.</summary>
    public const int AdviseItemBulkFieldNumber = 29;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand AdviseItemBulk {
      get { return payloadCase_ == PayloadOneofCase.AdviseItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AdviseItemBulk;
      }
    }

    /// <summary>Field number for the "remove_item_bulk" field.</summary>
    public const int RemoveItemBulkFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand RemoveItemBulk {
      get { return payloadCase_ == PayloadOneofCase.RemoveItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.RemoveItemBulk;
      }
    }

    /// <summary>Field number for the "un_advise_item_bulk" field.</summary>
    public const int UnAdviseItemBulkFieldNumber = 31;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand UnAdviseItemBulk {
      get { return payloadCase_ == PayloadOneofCase.UnAdviseItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnAdviseItemBulk;
      }
    }

    /// <summary>Field number for the "subscribe_bulk" field.</summary>
    public const int SubscribeBulkFieldNumber = 32;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand SubscribeBulk {
      get { return payloadCase_ == PayloadOneofCase.SubscribeBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SubscribeBulk;
      }
    }

    /// <summary>Field number for the "unsubscribe_bulk" field.</summary>
    public const int UnsubscribeBulkFieldNumber = 33;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand UnsubscribeBulk {
      get { return payloadCase_ == PayloadOneofCase.UnsubscribeBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnsubscribeBulk;
      }
    }

    /// <summary>Field number for the "subscribe_alarms" field.</summary>
    public const int SubscribeAlarmsFieldNumber = 34;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand SubscribeAlarms {
      get { return payloadCase_ == PayloadOneofCase.SubscribeAlarms ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SubscribeAlarms;
      }
    }

    /// <summary>Field number for the "unsubscribe_alarms" field.</summary>
    public const int UnsubscribeAlarmsFieldNumber = 35;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand UnsubscribeAlarms {
      get { return payloadCase_ == PayloadOneofCase.UnsubscribeAlarms ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnsubscribeAlarms;
      }
    }

    /// <summary>Field number for the "acknowledge_alarm_command" field.</summary>
    public const int AcknowledgeAlarmCommandFieldNumber = 36;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand AcknowledgeAlarmCommand {
      get { return payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AcknowledgeAlarmCommand;
      }
    }

    /// <summary>Field number for the "query_active_alarms_command" field.</summary>
    public const int QueryActiveAlarmsCommandFieldNumber = 37;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand QueryActiveAlarmsCommand {
      get { return payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.QueryActiveAlarmsCommand;
      }
    }

    /// <summary>Field number for the "acknowledge_alarm_by_name_command" field.</summary>
    public const int AcknowledgeAlarmByNameCommandFieldNumber = 38;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand AcknowledgeAlarmByNameCommand {
      get { return payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AcknowledgeAlarmByNameCommand;
      }
    }

    /// <summary>Field number for the "write_bulk" field.</summary>
    public const int WriteBulkFieldNumber = 39;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand WriteBulk {
      get { return payloadCase_ == PayloadOneofCase.WriteBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteBulk;
      }
    }

    /// <summary>Field number for the "write2_bulk" field.</summary>
    public const int Write2BulkFieldNumber = 40;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand Write2Bulk {
      get { return payloadCase_ == PayloadOneofCase.Write2Bulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write2Bulk;
      }
    }

    /// <summary>Field number for the "write_secured_bulk" field.</summary>
    public const int WriteSecuredBulkFieldNumber = 41;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand WriteSecuredBulk {
      get { return payloadCase_ == PayloadOneofCase.WriteSecuredBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecuredBulk;
      }
    }

    /// <summary>Field number for the "write_secured2_bulk" field.</summary>
    public const int WriteSecured2BulkFieldNumber = 42;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand WriteSecured2Bulk {
      get { return payloadCase_ == PayloadOneofCase.WriteSecured2Bulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured2Bulk;
      }
    }

    /// <summary>Field number for the "read_bulk" field.</summary>
    public const int ReadBulkFieldNumber = 43;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand ReadBulk {
      get { return payloadCase_ == PayloadOneofCase.ReadBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ReadBulk;
      }
    }

    /// <summary>Field number for the "ping" field.</summary>
    public const int PingFieldNumber = 100;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand Ping {
      get { return payloadCase_ == PayloadOneofCase.Ping ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Ping;
      }
    }

    /// <summary>Field number for the "get_session_state" field.</summary>
    public const int GetSessionStateFieldNumber = 101;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand GetSessionState {
      get { return payloadCase_ == PayloadOneofCase.GetSessionState ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.GetSessionState;
      }
    }

    /// <summary>Field number for the "get_worker_info" field.</summary>
    public const int GetWorkerInfoFieldNumber = 102;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand GetWorkerInfo {
      get { return payloadCase_ == PayloadOneofCase.GetWorkerInfo ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.GetWorkerInfo;
      }
    }

    /// <summary>Field number for the "drain_events" field.</summary>
    public const int DrainEventsFieldNumber = 103;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand DrainEvents {
      get { return payloadCase_ == PayloadOneofCase.DrainEvents ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.DrainEvents;
      }
    }

    /// <summary>Field number for the "shutdown_worker" field.</summary>
    public const int ShutdownWorkerFieldNumber = 104;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand ShutdownWorker {
      get { return payloadCase_ == PayloadOneofCase.ShutdownWorker ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ShutdownWorker;
      }
    }

    private object payload_;
    /// <summary>Enum of possible cases for the "payload" oneof.</summary>
    public enum PayloadOneofCase {
      None = 0,
      Register = 10,
      Unregister = 11,
      AddItem = 12,
      AddItem2 = 13,
      RemoveItem = 14,
      Advise = 15,
      UnAdvise = 16,
      AdviseSupervisory = 17,
      AddBufferedItem = 18,
      SetBufferedUpdateInterval = 19,
      Suspend = 20,
      Activate = 21,
      Write = 22,
      Write2 = 23,
      WriteSecured = 24,
      WriteSecured2 = 25,
      AuthenticateUser = 26,
      ArchestraUserToId = 27,
      AddItemBulk = 28,
      AdviseItemBulk = 29,
      RemoveItemBulk = 30,
      UnAdviseItemBulk = 31,
      SubscribeBulk = 32,
      UnsubscribeBulk = 33,
      SubscribeAlarms = 34,
      UnsubscribeAlarms = 35,
      AcknowledgeAlarmCommand = 36,
      QueryActiveAlarmsCommand = 37,
      AcknowledgeAlarmByNameCommand = 38,
      WriteBulk = 39,
      Write2Bulk = 40,
      WriteSecuredBulk = 41,
      WriteSecured2Bulk = 42,
      ReadBulk = 43,
      Ping = 100,
      GetSessionState = 101,
      GetWorkerInfo = 102,
      DrainEvents = 103,
      ShutdownWorker = 104,
    }
    private PayloadOneofCase payloadCase_ = PayloadOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PayloadOneofCase PayloadCase {
      get { return payloadCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPayload() {
      payloadCase_ = PayloadOneofCase.None;
      payload_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Kind != other.Kind) return false;
      if (!object.Equals(Register, other.Register)) return false;
      if (!object.Equals(Unregister, other.Unregister)) return false;
      if (!object.Equals(AddItem, other.AddItem)) return false;
      if (!object.Equals(AddItem2, other.AddItem2)) return false;
      if (!object.Equals(RemoveItem, other.RemoveItem)) return false;
      if (!object.Equals(Advise, other.Advise)) return false;
      if (!object.Equals(UnAdvise, other.UnAdvise)) return false;
      if (!object.Equals(AdviseSupervisory, other.AdviseSupervisory)) return false;
      if (!object.Equals(AddBufferedItem, other.AddBufferedItem)) return false;
      if (!object.Equals(SetBufferedUpdateInterval, other.SetBufferedUpdateInterval)) return false;
      if (!object.Equals(Suspend, other.Suspend)) return false;
      if (!object.Equals(Activate, other.Activate)) return false;
      if (!object.Equals(Write, other.Write)) return false;
      if (!object.Equals(Write2, other.Write2)) return false;
      if (!object.Equals(WriteSecured, other.WriteSecured)) return false;
      if (!object.Equals(WriteSecured2, other.WriteSecured2)) return false;
      if (!object.Equals(AuthenticateUser, other.AuthenticateUser)) return false;
      if (!object.Equals(ArchestraUserToId, other.ArchestraUserToId)) return false;
      if (!object.Equals(AddItemBulk, other.AddItemBulk)) return false;
      if (!object.Equals(AdviseItemBulk, other.AdviseItemBulk)) return false;
      if (!object.Equals(RemoveItemBulk, other.RemoveItemBulk)) return false;
      if (!object.Equals(UnAdviseItemBulk, other.UnAdviseItemBulk)) return false;
      if (!object.Equals(SubscribeBulk, other.SubscribeBulk)) return false;
      if (!object.Equals(UnsubscribeBulk, other.UnsubscribeBulk)) return false;
      if (!object.Equals(SubscribeAlarms, other.SubscribeAlarms)) return false;
      if (!object.Equals(UnsubscribeAlarms, other.UnsubscribeAlarms)) return false;
      if (!object.Equals(AcknowledgeAlarmCommand, other.AcknowledgeAlarmCommand)) return false;
      if (!object.Equals(QueryActiveAlarmsCommand, other.QueryActiveAlarmsCommand)) return false;
      if (!object.Equals(AcknowledgeAlarmByNameCommand, other.AcknowledgeAlarmByNameCommand)) return false;
      if (!object.Equals(WriteBulk, other.WriteBulk)) return false;
      if (!object.Equals(Write2Bulk, other.Write2Bulk)) return false;
      if (!object.Equals(WriteSecuredBulk, other.WriteSecuredBulk)) return false;
      if (!object.Equals(WriteSecured2Bulk, other.WriteSecured2Bulk)) return false;
      if (!object.Equals(ReadBulk, other.ReadBulk)) return false;
      if (!object.Equals(Ping, other.Ping)) return false;
      if (!object.Equals(GetSessionState, other.GetSessionState)) return false;
      if (!object.Equals(GetWorkerInfo, other.GetWorkerInfo)) return false;
      if (!object.Equals(DrainEvents, other.DrainEvents)) return false;
      if (!object.Equals(ShutdownWorker, other.ShutdownWorker)) return false;
      if (PayloadCase != other.PayloadCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) hash ^= Kind.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Register) hash ^= Register.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Unregister) hash ^= Unregister.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItem) hash ^= AddItem.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItem2) hash ^= AddItem2.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.RemoveItem) hash ^= RemoveItem.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Advise) hash ^= Advise.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnAdvise) hash ^= UnAdvise.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) hash ^= AdviseSupervisory.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) hash ^= AddBufferedItem.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) hash ^= SetBufferedUpdateInterval.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Suspend) hash ^= Suspend.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Activate) hash ^= Activate.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Write) hash ^= Write.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Write2) hash ^= Write2.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecured) hash ^= WriteSecured.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecured2) hash ^= WriteSecured2.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) hash ^= AuthenticateUser.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) hash ^= ArchestraUserToId.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) hash ^= AddItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) hash ^= AdviseItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) hash ^= RemoveItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) hash ^= UnAdviseItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) hash ^= SubscribeBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) hash ^= UnsubscribeBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) hash ^= SubscribeAlarms.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) hash ^= UnsubscribeAlarms.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) hash ^= AcknowledgeAlarmCommand.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) hash ^= QueryActiveAlarmsCommand.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) hash ^= AcknowledgeAlarmByNameCommand.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteBulk) hash ^= WriteBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) hash ^= Write2Bulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) hash ^= WriteSecuredBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) hash ^= WriteSecured2Bulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ReadBulk) hash ^= ReadBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Ping) hash ^= Ping.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.GetSessionState) hash ^= GetSessionState.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) hash ^= GetWorkerInfo.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.DrainEvents) hash ^= DrainEvents.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ShutdownWorker) hash ^= ShutdownWorker.GetHashCode();
      hash ^= (int) payloadCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Kind);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        output.WriteRawTag(82);
        output.WriteMessage(Register);
      }
      if (payloadCase_ == PayloadOneofCase.Unregister) {
        output.WriteRawTag(90);
        output.WriteMessage(Unregister);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        output.WriteRawTag(98);
        output.WriteMessage(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        output.WriteRawTag(106);
        output.WriteMessage(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItem) {
        output.WriteRawTag(114);
        output.WriteMessage(RemoveItem);
      }
      if (payloadCase_ == PayloadOneofCase.Advise) {
        output.WriteRawTag(122);
        output.WriteMessage(Advise);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdvise) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(UnAdvise);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(AdviseSupervisory);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(SetBufferedUpdateInterval);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.Write) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(Write);
      }
      if (payloadCase_ == PayloadOneofCase.Write2) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(Write2);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(WriteSecured);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(WriteSecured2);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        output.WriteRawTag(226, 1);
        output.WriteMessage(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        output.WriteRawTag(234, 1);
        output.WriteMessage(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        output.WriteRawTag(138, 2);
        output.WriteMessage(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) {
        output.WriteRawTag(146, 2);
        output.WriteMessage(SubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) {
        output.WriteRawTag(154, 2);
        output.WriteMessage(UnsubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) {
        output.WriteRawTag(162, 2);
        output.WriteMessage(AcknowledgeAlarmCommand);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) {
        output.WriteRawTag(170, 2);
        output.WriteMessage(QueryActiveAlarmsCommand);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) {
        output.WriteRawTag(178, 2);
        output.WriteMessage(AcknowledgeAlarmByNameCommand);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        output.WriteRawTag(186, 2);
        output.WriteMessage(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        output.WriteRawTag(194, 2);
        output.WriteMessage(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        output.WriteRawTag(202, 2);
        output.WriteMessage(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        output.WriteRawTag(210, 2);
        output.WriteMessage(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        output.WriteRawTag(218, 2);
        output.WriteMessage(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Ping) {
        output.WriteRawTag(162, 6);
        output.WriteMessage(Ping);
      }
      if (payloadCase_ == PayloadOneofCase.GetSessionState) {
        output.WriteRawTag(170, 6);
        output.WriteMessage(GetSessionState);
      }
      if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) {
        output.WriteRawTag(178, 6);
        output.WriteMessage(GetWorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        output.WriteRawTag(186, 6);
        output.WriteMessage(DrainEvents);
      }
      if (payloadCase_ == PayloadOneofCase.ShutdownWorker) {
        output.WriteRawTag(194, 6);
        output.WriteMessage(ShutdownWorker);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Kind);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        output.WriteRawTag(82);
        output.WriteMessage(Register);
      }
      if (payloadCase_ == PayloadOneofCase.Unregister) {
        output.WriteRawTag(90);
        output.WriteMessage(Unregister);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        output.WriteRawTag(98);
        output.WriteMessage(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        output.WriteRawTag(106);
        output.WriteMessage(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItem) {
        output.WriteRawTag(114);
        output.WriteMessage(RemoveItem);
      }
      if (payloadCase_ == PayloadOneofCase.Advise) {
        output.WriteRawTag(122);
        output.WriteMessage(Advise);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdvise) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(UnAdvise);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(AdviseSupervisory);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        output.WriteRawTag(146, 1);
        output.WriteMessage(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(SetBufferedUpdateInterval);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.Write) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(Write);
      }
      if (payloadCase_ == PayloadOneofCase.Write2) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(Write2);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(WriteSecured);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(WriteSecured2);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        output.WriteRawTag(226, 1);
        output.WriteMessage(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        output.WriteRawTag(234, 1);
        output.WriteMessage(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        output.WriteRawTag(138, 2);
        output.WriteMessage(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) {
        output.WriteRawTag(146, 2);
        output.WriteMessage(SubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) {
        output.WriteRawTag(154, 2);
        output.WriteMessage(UnsubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) {
        output.WriteRawTag(162, 2);
        output.WriteMessage(AcknowledgeAlarmCommand);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) {
        output.WriteRawTag(170, 2);
        output.WriteMessage(QueryActiveAlarmsCommand);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) {
        output.WriteRawTag(178, 2);
        output.WriteMessage(AcknowledgeAlarmByNameCommand);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        output.WriteRawTag(186, 2);
        output.WriteMessage(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        output.WriteRawTag(194, 2);
        output.WriteMessage(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        output.WriteRawTag(202, 2);
        output.WriteMessage(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        output.WriteRawTag(210, 2);
        output.WriteMessage(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        output.WriteRawTag(218, 2);
        output.WriteMessage(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Ping) {
        output.WriteRawTag(162, 6);
        output.WriteMessage(Ping);
      }
      if (payloadCase_ == PayloadOneofCase.GetSessionState) {
        output.WriteRawTag(170, 6);
        output.WriteMessage(GetSessionState);
      }
      if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) {
        output.WriteRawTag(178, 6);
        output.WriteMessage(GetWorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        output.WriteRawTag(186, 6);
        output.WriteMessage(DrainEvents);
      }
      if (payloadCase_ == PayloadOneofCase.ShutdownWorker) {
        output.WriteRawTag(194, 6);
        output.WriteMessage(ShutdownWorker);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Register);
      }
      if (payloadCase_ == PayloadOneofCase.Unregister) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Unregister);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItem) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(RemoveItem);
      }
      if (payloadCase_ == PayloadOneofCase.Advise) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Advise);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdvise) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnAdvise);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AdviseSupervisory);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SetBufferedUpdateInterval);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.Write) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write);
      }
      if (payloadCase_ == PayloadOneofCase.Write2) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write2);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured2);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnsubscribeAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AcknowledgeAlarmCommand);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(QueryActiveAlarmsCommand);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AcknowledgeAlarmByNameCommand);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Ping) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Ping);
      }
      if (payloadCase_ == PayloadOneofCase.GetSessionState) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetSessionState);
      }
      if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(GetWorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DrainEvents);
      }
      if (payloadCase_ == PayloadOneofCase.ShutdownWorker) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ShutdownWorker);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxCommand other) {
      if (other == null) {
        return;
      }
      if (other.Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        Kind = other.Kind;
      }
      switch (other.PayloadCase) {
        case PayloadOneofCase.Register:
          if (Register == null) {
            Register = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand();
          }
          Register.MergeFrom(other.Register);
          break;
        case PayloadOneofCase.Unregister:
          if (Unregister == null) {
            Unregister = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand();
          }
          Unregister.MergeFrom(other.Unregister);
          break;
        case PayloadOneofCase.AddItem:
          if (AddItem == null) {
            AddItem = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand();
          }
          AddItem.MergeFrom(other.AddItem);
          break;
        case PayloadOneofCase.AddItem2:
          if (AddItem2 == null) {
            AddItem2 = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command();
          }
          AddItem2.MergeFrom(other.AddItem2);
          break;
        case PayloadOneofCase.RemoveItem:
          if (RemoveItem == null) {
            RemoveItem = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand();
          }
          RemoveItem.MergeFrom(other.RemoveItem);
          break;
        case PayloadOneofCase.Advise:
          if (Advise == null) {
            Advise = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand();
          }
          Advise.MergeFrom(other.Advise);
          break;
        case PayloadOneofCase.UnAdvise:
          if (UnAdvise == null) {
            UnAdvise = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand();
          }
          UnAdvise.MergeFrom(other.UnAdvise);
          break;
        case PayloadOneofCase.AdviseSupervisory:
          if (AdviseSupervisory == null) {
            AdviseSupervisory = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand();
          }
          AdviseSupervisory.MergeFrom(other.AdviseSupervisory);
          break;
        case PayloadOneofCase.AddBufferedItem:
          if (AddBufferedItem == null) {
            AddBufferedItem = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand();
          }
          AddBufferedItem.MergeFrom(other.AddBufferedItem);
          break;
        case PayloadOneofCase.SetBufferedUpdateInterval:
          if (SetBufferedUpdateInterval == null) {
            SetBufferedUpdateInterval = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand();
          }
          SetBufferedUpdateInterval.MergeFrom(other.SetBufferedUpdateInterval);
          break;
        case PayloadOneofCase.Suspend:
          if (Suspend == null) {
            Suspend = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand();
          }
          Suspend.MergeFrom(other.Suspend);
          break;
        case PayloadOneofCase.Activate:
          if (Activate == null) {
            Activate = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand();
          }
          Activate.MergeFrom(other.Activate);
          break;
        case PayloadOneofCase.Write:
          if (Write == null) {
            Write = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand();
          }
          Write.MergeFrom(other.Write);
          break;
        case PayloadOneofCase.Write2:
          if (Write2 == null) {
            Write2 = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command();
          }
          Write2.MergeFrom(other.Write2);
          break;
        case PayloadOneofCase.WriteSecured:
          if (WriteSecured == null) {
            WriteSecured = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand();
          }
          WriteSecured.MergeFrom(other.WriteSecured);
          break;
        case PayloadOneofCase.WriteSecured2:
          if (WriteSecured2 == null) {
            WriteSecured2 = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command();
          }
          WriteSecured2.MergeFrom(other.WriteSecured2);
          break;
        case PayloadOneofCase.AuthenticateUser:
          if (AuthenticateUser == null) {
            AuthenticateUser = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand();
          }
          AuthenticateUser.MergeFrom(other.AuthenticateUser);
          break;
        case PayloadOneofCase.ArchestraUserToId:
          if (ArchestraUserToId == null) {
            ArchestraUserToId = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand();
          }
          ArchestraUserToId.MergeFrom(other.ArchestraUserToId);
          break;
        case PayloadOneofCase.AddItemBulk:
          if (AddItemBulk == null) {
            AddItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand();
          }
          AddItemBulk.MergeFrom(other.AddItemBulk);
          break;
        case PayloadOneofCase.AdviseItemBulk:
          if (AdviseItemBulk == null) {
            AdviseItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand();
          }
          AdviseItemBulk.MergeFrom(other.AdviseItemBulk);
          break;
        case PayloadOneofCase.RemoveItemBulk:
          if (RemoveItemBulk == null) {
            RemoveItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand();
          }
          RemoveItemBulk.MergeFrom(other.RemoveItemBulk);
          break;
        case PayloadOneofCase.UnAdviseItemBulk:
          if (UnAdviseItemBulk == null) {
            UnAdviseItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand();
          }
          UnAdviseItemBulk.MergeFrom(other.UnAdviseItemBulk);
          break;
        case PayloadOneofCase.SubscribeBulk:
          if (SubscribeBulk == null) {
            SubscribeBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand();
          }
          SubscribeBulk.MergeFrom(other.SubscribeBulk);
          break;
        case PayloadOneofCase.UnsubscribeBulk:
          if (UnsubscribeBulk == null) {
            UnsubscribeBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand();
          }
          UnsubscribeBulk.MergeFrom(other.UnsubscribeBulk);
          break;
        case PayloadOneofCase.SubscribeAlarms:
          if (SubscribeAlarms == null) {
            SubscribeAlarms = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand();
          }
          SubscribeAlarms.MergeFrom(other.SubscribeAlarms);
          break;
        case PayloadOneofCase.UnsubscribeAlarms:
          if (UnsubscribeAlarms == null) {
            UnsubscribeAlarms = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand();
          }
          UnsubscribeAlarms.MergeFrom(other.UnsubscribeAlarms);
          break;
        case PayloadOneofCase.AcknowledgeAlarmCommand:
          if (AcknowledgeAlarmCommand == null) {
            AcknowledgeAlarmCommand = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand();
          }
          AcknowledgeAlarmCommand.MergeFrom(other.AcknowledgeAlarmCommand);
          break;
        case PayloadOneofCase.QueryActiveAlarmsCommand:
          if (QueryActiveAlarmsCommand == null) {
            QueryActiveAlarmsCommand = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand();
          }
          QueryActiveAlarmsCommand.MergeFrom(other.QueryActiveAlarmsCommand);
          break;
        case PayloadOneofCase.AcknowledgeAlarmByNameCommand:
          if (AcknowledgeAlarmByNameCommand == null) {
            AcknowledgeAlarmByNameCommand = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand();
          }
          AcknowledgeAlarmByNameCommand.MergeFrom(other.AcknowledgeAlarmByNameCommand);
          break;
        case PayloadOneofCase.WriteBulk:
          if (WriteBulk == null) {
            WriteBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand();
          }
          WriteBulk.MergeFrom(other.WriteBulk);
          break;
        case PayloadOneofCase.Write2Bulk:
          if (Write2Bulk == null) {
            Write2Bulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand();
          }
          Write2Bulk.MergeFrom(other.Write2Bulk);
          break;
        case PayloadOneofCase.WriteSecuredBulk:
          if (WriteSecuredBulk == null) {
            WriteSecuredBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand();
          }
          WriteSecuredBulk.MergeFrom(other.WriteSecuredBulk);
          break;
        case PayloadOneofCase.WriteSecured2Bulk:
          if (WriteSecured2Bulk == null) {
            WriteSecured2Bulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand();
          }
          WriteSecured2Bulk.MergeFrom(other.WriteSecured2Bulk);
          break;
        case PayloadOneofCase.ReadBulk:
          if (ReadBulk == null) {
            ReadBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand();
          }
          ReadBulk.MergeFrom(other.ReadBulk);
          break;
        case PayloadOneofCase.Ping:
          if (Ping == null) {
            Ping = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
          }
          Ping.MergeFrom(other.Ping);
          break;
        case PayloadOneofCase.GetSessionState:
          if (GetSessionState == null) {
            GetSessionState = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand();
          }
          GetSessionState.MergeFrom(other.GetSessionState);
          break;
        case PayloadOneofCase.GetWorkerInfo:
          if (GetWorkerInfo == null) {
            GetWorkerInfo = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand();
          }
          GetWorkerInfo.MergeFrom(other.GetWorkerInfo);
          break;
        case PayloadOneofCase.DrainEvents:
          if (DrainEvents == null) {
            DrainEvents = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand();
          }
          DrainEvents.MergeFrom(other.DrainEvents);
          break;
        case PayloadOneofCase.ShutdownWorker:
          if (ShutdownWorker == null) {
            ShutdownWorker = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand();
          }
          ShutdownWorker.MergeFrom(other.ShutdownWorker);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Kind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind) input.ReadEnum();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand();
            if (payloadCase_ == PayloadOneofCase.Register) {
              subBuilder.MergeFrom(Register);
            }
            input.ReadMessage(subBuilder);
            Register = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand();
            if (payloadCase_ == PayloadOneofCase.Unregister) {
              subBuilder.MergeFrom(Unregister);
            }
            input.ReadMessage(subBuilder);
            Unregister = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand();
            if (payloadCase_ == PayloadOneofCase.AddItem) {
              subBuilder.MergeFrom(AddItem);
            }
            input.ReadMessage(subBuilder);
            AddItem = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command();
            if (payloadCase_ == PayloadOneofCase.AddItem2) {
              subBuilder.MergeFrom(AddItem2);
            }
            input.ReadMessage(subBuilder);
            AddItem2 = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand();
            if (payloadCase_ == PayloadOneofCase.RemoveItem) {
              subBuilder.MergeFrom(RemoveItem);
            }
            input.ReadMessage(subBuilder);
            RemoveItem = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand();
            if (payloadCase_ == PayloadOneofCase.Advise) {
              subBuilder.MergeFrom(Advise);
            }
            input.ReadMessage(subBuilder);
            Advise = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand();
            if (payloadCase_ == PayloadOneofCase.UnAdvise) {
              subBuilder.MergeFrom(UnAdvise);
            }
            input.ReadMessage(subBuilder);
            UnAdvise = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand();
            if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) {
              subBuilder.MergeFrom(AdviseSupervisory);
            }
            input.ReadMessage(subBuilder);
            AdviseSupervisory = subBuilder;
            break;
          }
          case 146: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand();
            if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
              subBuilder.MergeFrom(AddBufferedItem);
            }
            input.ReadMessage(subBuilder);
            AddBufferedItem = subBuilder;
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand();
            if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) {
              subBuilder.MergeFrom(SetBufferedUpdateInterval);
            }
            input.ReadMessage(subBuilder);
            SetBufferedUpdateInterval = subBuilder;
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand();
            if (payloadCase_ == PayloadOneofCase.Suspend) {
              subBuilder.MergeFrom(Suspend);
            }
            input.ReadMessage(subBuilder);
            Suspend = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand();
            if (payloadCase_ == PayloadOneofCase.Activate) {
              subBuilder.MergeFrom(Activate);
            }
            input.ReadMessage(subBuilder);
            Activate = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand();
            if (payloadCase_ == PayloadOneofCase.Write) {
              subBuilder.MergeFrom(Write);
            }
            input.ReadMessage(subBuilder);
            Write = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command();
            if (payloadCase_ == PayloadOneofCase.Write2) {
              subBuilder.MergeFrom(Write2);
            }
            input.ReadMessage(subBuilder);
            Write2 = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecured) {
              subBuilder.MergeFrom(WriteSecured);
            }
            input.ReadMessage(subBuilder);
            WriteSecured = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2) {
              subBuilder.MergeFrom(WriteSecured2);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2 = subBuilder;
            break;
          }
          case 210: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand();
            if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
              subBuilder.MergeFrom(AuthenticateUser);
            }
            input.ReadMessage(subBuilder);
            AuthenticateUser = subBuilder;
            break;
          }
          case 218: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand();
            if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
              subBuilder.MergeFrom(ArchestraUserToId);
            }
            input.ReadMessage(subBuilder);
            ArchestraUserToId = subBuilder;
            break;
          }
          case 226: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
              subBuilder.MergeFrom(AddItemBulk);
            }
            input.ReadMessage(subBuilder);
            AddItemBulk = subBuilder;
            break;
          }
          case 234: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
              subBuilder.MergeFrom(AdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            AdviseItemBulk = subBuilder;
            break;
          }
          case 242: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
              subBuilder.MergeFrom(RemoveItemBulk);
            }
            input.ReadMessage(subBuilder);
            RemoveItemBulk = subBuilder;
            break;
          }
          case 250: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
              subBuilder.MergeFrom(UnAdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            UnAdviseItemBulk = subBuilder;
            break;
          }
          case 258: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand();
            if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
              subBuilder.MergeFrom(SubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            SubscribeBulk = subBuilder;
            break;
          }
          case 266: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
              subBuilder.MergeFrom(UnsubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeBulk = subBuilder;
            break;
          }
          case 274: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) {
              subBuilder.MergeFrom(SubscribeAlarms);
            }
            input.ReadMessage(subBuilder);
            SubscribeAlarms = subBuilder;
            break;
          }
          case 282: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) {
              subBuilder.MergeFrom(UnsubscribeAlarms);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeAlarms = subBuilder;
            break;
          }
          case 290: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) {
              subBuilder.MergeFrom(AcknowledgeAlarmCommand);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarmCommand = subBuilder;
            break;
          }
          case 298: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) {
              subBuilder.MergeFrom(QueryActiveAlarmsCommand);
            }
            input.ReadMessage(subBuilder);
            QueryActiveAlarmsCommand = subBuilder;
            break;
          }
          case 306: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) {
              subBuilder.MergeFrom(AcknowledgeAlarmByNameCommand);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarmByNameCommand = subBuilder;
            break;
          }
          case 314: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteBulk) {
              subBuilder.MergeFrom(WriteBulk);
            }
            input.ReadMessage(subBuilder);
            WriteBulk = subBuilder;
            break;
          }
          case 322: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand();
            if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
              subBuilder.MergeFrom(Write2Bulk);
            }
            input.ReadMessage(subBuilder);
            Write2Bulk = subBuilder;
            break;
          }
          case 330: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
              subBuilder.MergeFrom(WriteSecuredBulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecuredBulk = subBuilder;
            break;
          }
          case 338: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
              subBuilder.MergeFrom(WriteSecured2Bulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2Bulk = subBuilder;
            break;
          }
          case 346: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand();
            if (payloadCase_ == PayloadOneofCase.ReadBulk) {
              subBuilder.MergeFrom(ReadBulk);
            }
            input.ReadMessage(subBuilder);
            ReadBulk = subBuilder;
            break;
          }
          case 802: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
            if (payloadCase_ == PayloadOneofCase.Ping) {
              subBuilder.MergeFrom(Ping);
            }
            input.ReadMessage(subBuilder);
            Ping = subBuilder;
            break;
          }
          case 810: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand();
            if (payloadCase_ == PayloadOneofCase.GetSessionState) {
              subBuilder.MergeFrom(GetSessionState);
            }
            input.ReadMessage(subBuilder);
            GetSessionState = subBuilder;
            break;
          }
          case 818: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand();
            if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) {
              subBuilder.MergeFrom(GetWorkerInfo);
            }
            input.ReadMessage(subBuilder);
            GetWorkerInfo = subBuilder;
            break;
          }
          case 826: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand();
            if (payloadCase_ == PayloadOneofCase.DrainEvents) {
              subBuilder.MergeFrom(DrainEvents);
            }
            input.ReadMessage(subBuilder);
            DrainEvents = subBuilder;
            break;
          }
          case 834: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand();
            if (payloadCase_ == PayloadOneofCase.ShutdownWorker) {
              subBuilder.MergeFrom(ShutdownWorker);
            }
            input.ReadMessage(subBuilder);
            ShutdownWorker = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Kind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind) input.ReadEnum();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterCommand();
            if (payloadCase_ == PayloadOneofCase.Register) {
              subBuilder.MergeFrom(Register);
            }
            input.ReadMessage(subBuilder);
            Register = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnregisterCommand();
            if (payloadCase_ == PayloadOneofCase.Unregister) {
              subBuilder.MergeFrom(Unregister);
            }
            input.ReadMessage(subBuilder);
            Unregister = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemCommand();
            if (payloadCase_ == PayloadOneofCase.AddItem) {
              subBuilder.MergeFrom(AddItem);
            }
            input.ReadMessage(subBuilder);
            AddItem = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Command();
            if (payloadCase_ == PayloadOneofCase.AddItem2) {
              subBuilder.MergeFrom(AddItem2);
            }
            input.ReadMessage(subBuilder);
            AddItem2 = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemCommand();
            if (payloadCase_ == PayloadOneofCase.RemoveItem) {
              subBuilder.MergeFrom(RemoveItem);
            }
            input.ReadMessage(subBuilder);
            RemoveItem = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseCommand();
            if (payloadCase_ == PayloadOneofCase.Advise) {
              subBuilder.MergeFrom(Advise);
            }
            input.ReadMessage(subBuilder);
            Advise = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseCommand();
            if (payloadCase_ == PayloadOneofCase.UnAdvise) {
              subBuilder.MergeFrom(UnAdvise);
            }
            input.ReadMessage(subBuilder);
            UnAdvise = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseSupervisoryCommand();
            if (payloadCase_ == PayloadOneofCase.AdviseSupervisory) {
              subBuilder.MergeFrom(AdviseSupervisory);
            }
            input.ReadMessage(subBuilder);
            AdviseSupervisory = subBuilder;
            break;
          }
          case 146: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemCommand();
            if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
              subBuilder.MergeFrom(AddBufferedItem);
            }
            input.ReadMessage(subBuilder);
            AddBufferedItem = subBuilder;
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SetBufferedUpdateIntervalCommand();
            if (payloadCase_ == PayloadOneofCase.SetBufferedUpdateInterval) {
              subBuilder.MergeFrom(SetBufferedUpdateInterval);
            }
            input.ReadMessage(subBuilder);
            SetBufferedUpdateInterval = subBuilder;
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendCommand();
            if (payloadCase_ == PayloadOneofCase.Suspend) {
              subBuilder.MergeFrom(Suspend);
            }
            input.ReadMessage(subBuilder);
            Suspend = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateCommand();
            if (payloadCase_ == PayloadOneofCase.Activate) {
              subBuilder.MergeFrom(Activate);
            }
            input.ReadMessage(subBuilder);
            Activate = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteCommand();
            if (payloadCase_ == PayloadOneofCase.Write) {
              subBuilder.MergeFrom(Write);
            }
            input.ReadMessage(subBuilder);
            Write = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2Command();
            if (payloadCase_ == PayloadOneofCase.Write2) {
              subBuilder.MergeFrom(Write2);
            }
            input.ReadMessage(subBuilder);
            Write2 = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecured) {
              subBuilder.MergeFrom(WriteSecured);
            }
            input.ReadMessage(subBuilder);
            WriteSecured = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2Command();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2) {
              subBuilder.MergeFrom(WriteSecured2);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2 = subBuilder;
            break;
          }
          case 210: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserCommand();
            if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
              subBuilder.MergeFrom(AuthenticateUser);
            }
            input.ReadMessage(subBuilder);
            AuthenticateUser = subBuilder;
            break;
          }
          case 218: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdCommand();
            if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
              subBuilder.MergeFrom(ArchestraUserToId);
            }
            input.ReadMessage(subBuilder);
            ArchestraUserToId = subBuilder;
            break;
          }
          case 226: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
              subBuilder.MergeFrom(AddItemBulk);
            }
            input.ReadMessage(subBuilder);
            AddItemBulk = subBuilder;
            break;
          }
          case 234: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AdviseItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
              subBuilder.MergeFrom(AdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            AdviseItemBulk = subBuilder;
            break;
          }
          case 242: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RemoveItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
              subBuilder.MergeFrom(RemoveItemBulk);
            }
            input.ReadMessage(subBuilder);
            RemoveItemBulk = subBuilder;
            break;
          }
          case 250: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnAdviseItemBulkCommand();
            if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
              subBuilder.MergeFrom(UnAdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            UnAdviseItemBulk = subBuilder;
            break;
          }
          case 258: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeBulkCommand();
            if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
              subBuilder.MergeFrom(SubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            SubscribeBulk = subBuilder;
            break;
          }
          case 266: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeBulkCommand();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
              subBuilder.MergeFrom(UnsubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeBulk = subBuilder;
            break;
          }
          case 274: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.SubscribeAlarms) {
              subBuilder.MergeFrom(SubscribeAlarms);
            }
            input.ReadMessage(subBuilder);
            SubscribeAlarms = subBuilder;
            break;
          }
          case 282: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.UnsubscribeAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeAlarms) {
              subBuilder.MergeFrom(UnsubscribeAlarms);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeAlarms = subBuilder;
            break;
          }
          case 290: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmCommand();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmCommand) {
              subBuilder.MergeFrom(AcknowledgeAlarmCommand);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarmCommand = subBuilder;
            break;
          }
          case 298: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsCommand();
            if (payloadCase_ == PayloadOneofCase.QueryActiveAlarmsCommand) {
              subBuilder.MergeFrom(QueryActiveAlarmsCommand);
            }
            input.ReadMessage(subBuilder);
            QueryActiveAlarmsCommand = subBuilder;
            break;
          }
          case 306: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmByNameCommand();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarmByNameCommand) {
              subBuilder.MergeFrom(AcknowledgeAlarmByNameCommand);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarmByNameCommand = subBuilder;
            break;
          }
          case 314: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteBulk) {
              subBuilder.MergeFrom(WriteBulk);
            }
            input.ReadMessage(subBuilder);
            WriteBulk = subBuilder;
            break;
          }
          case 322: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkCommand();
            if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
              subBuilder.MergeFrom(Write2Bulk);
            }
            input.ReadMessage(subBuilder);
            Write2Bulk = subBuilder;
            break;
          }
          case 330: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
              subBuilder.MergeFrom(WriteSecuredBulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecuredBulk = subBuilder;
            break;
          }
          case 338: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkCommand();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
              subBuilder.MergeFrom(WriteSecured2Bulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2Bulk = subBuilder;
            break;
          }
          case 346: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReadBulkCommand();
            if (payloadCase_ == PayloadOneofCase.ReadBulk) {
              subBuilder.MergeFrom(ReadBulk);
            }
            input.ReadMessage(subBuilder);
            ReadBulk = subBuilder;
            break;
          }
          case 802: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.PingCommand();
            if (payloadCase_ == PayloadOneofCase.Ping) {
              subBuilder.MergeFrom(Ping);
            }
            input.ReadMessage(subBuilder);
            Ping = subBuilder;
            break;
          }
          case 810: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetSessionStateCommand();
            if (payloadCase_ == PayloadOneofCase.GetSessionState) {
              subBuilder.MergeFrom(GetSessionState);
            }
            input.ReadMessage(subBuilder);
            GetSessionState = subBuilder;
            break;
          }
          case 818: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.GetWorkerInfoCommand();
            if (payloadCase_ == PayloadOneofCase.GetWorkerInfo) {
              subBuilder.MergeFrom(GetWorkerInfo);
            }
            input.ReadMessage(subBuilder);
            GetWorkerInfo = subBuilder;
            break;
          }
          case 826: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsCommand();
            if (payloadCase_ == PayloadOneofCase.DrainEvents) {
              subBuilder.MergeFrom(DrainEvents);
            }
            input.ReadMessage(subBuilder);
            DrainEvents = subBuilder;
            break;
          }
          case 834: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ShutdownWorkerCommand();
            if (payloadCase_ == PayloadOneofCase.ShutdownWorker) {
              subBuilder.MergeFrom(ShutdownWorker);
            }
            input.ReadMessage(subBuilder);
            ShutdownWorker = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RegisterCommand : pb::IMessage<RegisterCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RegisterCommand> _parser = new pb::MessageParser<RegisterCommand>(() => new RegisterCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RegisterCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[8]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterCommand(RegisterCommand other) : this() {
      clientName_ = other.clientName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterCommand Clone() {
      return new RegisterCommand(this);
    }

    /// <summary>Field number for the "client_name" field.</summary>
    public const int ClientNameFieldNumber = 1;
    private string clientName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientName {
      get { return clientName_; }
      set {
        clientName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RegisterCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RegisterCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ClientName != other.ClientName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ClientName.Length != 0) hash ^= ClientName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ClientName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ClientName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ClientName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ClientName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ClientName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RegisterCommand other) {
      if (other == null) {
        return;
      }
      if (other.ClientName.Length != 0) {
        ClientName = other.ClientName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            ClientName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            ClientName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class UnregisterCommand : pb::IMessage<UnregisterCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UnregisterCommand> _parser = new pb::MessageParser<UnregisterCommand>(() => new UnregisterCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UnregisterCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[9]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnregisterCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnregisterCommand(UnregisterCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnregisterCommand Clone() {
      return new UnregisterCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UnregisterCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UnregisterCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UnregisterCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddItemCommand : pb::IMessage<AddItemCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddItemCommand> _parser = new pb::MessageParser<AddItemCommand>(() => new AddItemCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddItemCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[10]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemCommand(AddItemCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemDefinition_ = other.itemDefinition_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemCommand Clone() {
      return new AddItemCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_definition" field.</summary>
    public const int ItemDefinitionFieldNumber = 2;
    private string itemDefinition_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ItemDefinition {
      get { return itemDefinition_; }
      set {
        itemDefinition_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddItemCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddItemCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemDefinition != other.ItemDefinition) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemDefinition.Length != 0) hash ^= ItemDefinition.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemDefinition);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddItemCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemDefinition.Length != 0) {
        ItemDefinition = other.ItemDefinition;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddItem2Command : pb::IMessage<AddItem2Command>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddItem2Command> _parser = new pb::MessageParser<AddItem2Command>(() => new AddItem2Command());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddItem2Command> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[11]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Command() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Command(AddItem2Command other) : this() {
      serverHandle_ = other.serverHandle_;
      itemDefinition_ = other.itemDefinition_;
      itemContext_ = other.itemContext_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Command Clone() {
      return new AddItem2Command(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_definition" field.</summary>
    public const int ItemDefinitionFieldNumber = 2;
    private string itemDefinition_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ItemDefinition {
      get { return itemDefinition_; }
      set {
        itemDefinition_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "item_context" field.</summary>
    public const int ItemContextFieldNumber = 3;
    private string itemContext_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ItemContext {
      get { return itemContext_; }
      set {
        itemContext_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddItem2Command);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddItem2Command other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemDefinition != other.ItemDefinition) return false;
      if (ItemContext != other.ItemContext) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemDefinition.Length != 0) hash ^= ItemDefinition.GetHashCode();
      if (ItemContext.Length != 0) hash ^= ItemContext.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ItemContext);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ItemContext);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemContext);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddItem2Command other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemDefinition.Length != 0) {
        ItemDefinition = other.ItemDefinition;
      }
      if (other.ItemContext.Length != 0) {
        ItemContext = other.ItemContext;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
          case 26: {
            ItemContext = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
          case 26: {
            ItemContext = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RemoveItemCommand : pb::IMessage<RemoveItemCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RemoveItemCommand> _parser = new pb::MessageParser<RemoveItemCommand>(() => new RemoveItemCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RemoveItemCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[12]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemCommand(RemoveItemCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemCommand Clone() {
      return new RemoveItemCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RemoveItemCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RemoveItemCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RemoveItemCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AdviseCommand : pb::IMessage<AdviseCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AdviseCommand> _parser = new pb::MessageParser<AdviseCommand>(() => new AdviseCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AdviseCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[13]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseCommand(AdviseCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseCommand Clone() {
      return new AdviseCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AdviseCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AdviseCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AdviseCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class UnAdviseCommand : pb::IMessage<UnAdviseCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UnAdviseCommand> _parser = new pb::MessageParser<UnAdviseCommand>(() => new UnAdviseCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UnAdviseCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[14]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseCommand(UnAdviseCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseCommand Clone() {
      return new UnAdviseCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UnAdviseCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UnAdviseCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UnAdviseCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AdviseSupervisoryCommand : pb::IMessage<AdviseSupervisoryCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AdviseSupervisoryCommand> _parser = new pb::MessageParser<AdviseSupervisoryCommand>(() => new AdviseSupervisoryCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AdviseSupervisoryCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[15]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseSupervisoryCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseSupervisoryCommand(AdviseSupervisoryCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseSupervisoryCommand Clone() {
      return new AdviseSupervisoryCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AdviseSupervisoryCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AdviseSupervisoryCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AdviseSupervisoryCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddBufferedItemCommand : pb::IMessage<AddBufferedItemCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddBufferedItemCommand> _parser = new pb::MessageParser<AddBufferedItemCommand>(() => new AddBufferedItemCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddBufferedItemCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[16]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemCommand(AddBufferedItemCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemDefinition_ = other.itemDefinition_;
      itemContext_ = other.itemContext_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemCommand Clone() {
      return new AddBufferedItemCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_definition" field.</summary>
    public const int ItemDefinitionFieldNumber = 2;
    private string itemDefinition_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ItemDefinition {
      get { return itemDefinition_; }
      set {
        itemDefinition_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "item_context" field.</summary>
    public const int ItemContextFieldNumber = 3;
    private string itemContext_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ItemContext {
      get { return itemContext_; }
      set {
        itemContext_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddBufferedItemCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddBufferedItemCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemDefinition != other.ItemDefinition) return false;
      if (ItemContext != other.ItemContext) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemDefinition.Length != 0) hash ^= ItemDefinition.GetHashCode();
      if (ItemContext.Length != 0) hash ^= ItemContext.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ItemContext);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ItemContext);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemDefinition.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemDefinition);
      }
      if (ItemContext.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ItemContext);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddBufferedItemCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemDefinition.Length != 0) {
        ItemDefinition = other.ItemDefinition;
      }
      if (other.ItemContext.Length != 0) {
        ItemContext = other.ItemContext;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
          case 26: {
            ItemContext = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            ItemDefinition = input.ReadString();
            break;
          }
          case 26: {
            ItemContext = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SetBufferedUpdateIntervalCommand : pb::IMessage<SetBufferedUpdateIntervalCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SetBufferedUpdateIntervalCommand> _parser = new pb::MessageParser<SetBufferedUpdateIntervalCommand>(() => new SetBufferedUpdateIntervalCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SetBufferedUpdateIntervalCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[17]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetBufferedUpdateIntervalCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetBufferedUpdateIntervalCommand(SetBufferedUpdateIntervalCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      updateIntervalMilliseconds_ = other.updateIntervalMilliseconds_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SetBufferedUpdateIntervalCommand Clone() {
      return new SetBufferedUpdateIntervalCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "update_interval_milliseconds" field.</summary>
    public const int UpdateIntervalMillisecondsFieldNumber = 2;
    private int updateIntervalMilliseconds_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UpdateIntervalMilliseconds {
      get { return updateIntervalMilliseconds_; }
      set {
        updateIntervalMilliseconds_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SetBufferedUpdateIntervalCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SetBufferedUpdateIntervalCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (UpdateIntervalMilliseconds != other.UpdateIntervalMilliseconds) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (UpdateIntervalMilliseconds != 0) hash ^= UpdateIntervalMilliseconds.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (UpdateIntervalMilliseconds != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(UpdateIntervalMilliseconds);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (UpdateIntervalMilliseconds != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(UpdateIntervalMilliseconds);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (UpdateIntervalMilliseconds != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UpdateIntervalMilliseconds);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SetBufferedUpdateIntervalCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.UpdateIntervalMilliseconds != 0) {
        UpdateIntervalMilliseconds = other.UpdateIntervalMilliseconds;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            UpdateIntervalMilliseconds = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            UpdateIntervalMilliseconds = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SuspendCommand : pb::IMessage<SuspendCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SuspendCommand> _parser = new pb::MessageParser<SuspendCommand>(() => new SuspendCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SuspendCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[18]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendCommand(SuspendCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendCommand Clone() {
      return new SuspendCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SuspendCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SuspendCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SuspendCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ActivateCommand : pb::IMessage<ActivateCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ActivateCommand> _parser = new pb::MessageParser<ActivateCommand>(() => new ActivateCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ActivateCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[19]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateCommand(ActivateCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateCommand Clone() {
      return new ActivateCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ActivateCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ActivateCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ActivateCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// The unary reply's statuses field carries the correlated OnWriteComplete
  /// outcome when it arrives within the worker's bounded wait — see
  /// MxCommandReply.statuses.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteCommand : pb::IMessage<WriteCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteCommand> _parser = new pb::MessageParser<WriteCommand>(() => new WriteCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[20]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteCommand(WriteCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteCommand Clone() {
      return new WriteCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 4;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Value);
      }
      if (UserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Value);
      }
      if (UserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 26: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 32: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 26: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 32: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Same statuses correlation as WriteCommand.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Write2Command : pb::IMessage<Write2Command>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Write2Command> _parser = new pb::MessageParser<Write2Command>(() => new Write2Command());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Write2Command> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[21]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2Command() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2Command(Write2Command other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null;
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2Command Clone() {
      return new Write2Command(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_value" field.</summary>
    public const int TimestampValueFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue timestampValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue TimestampValue {
      get { return timestampValue_; }
      set {
        timestampValue_ = value;
      }
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 5;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Write2Command);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Write2Command other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (!object.Equals(TimestampValue, other.TimestampValue)) return false;
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (timestampValue_ != null) hash ^= TimestampValue.GetHashCode();
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(TimestampValue);
      }
      if (UserId != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(TimestampValue);
      }
      if (UserId != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (timestampValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue);
      }
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Write2Command other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.timestampValue_ != null) {
        if (timestampValue_ == null) {
          TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        TimestampValue.MergeFrom(other.TimestampValue);
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 26: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 34: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
          case 40: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 26: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 34: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
          case 40: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// The unary reply's statuses field carries the correlated OnWriteComplete
  /// outcome when it arrives within the worker's bounded wait — see
  /// MxCommandReply.statuses.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecuredCommand : pb::IMessage<WriteSecuredCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecuredCommand> _parser = new pb::MessageParser<WriteSecuredCommand>(() => new WriteSecuredCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecuredCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[22]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredCommand(WriteSecuredCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      currentUserId_ = other.currentUserId_;
      verifierUserId_ = other.verifierUserId_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredCommand Clone() {
      return new WriteSecuredCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "current_user_id" field.</summary>
    public const int CurrentUserIdFieldNumber = 3;
    private int currentUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CurrentUserId {
      get { return currentUserId_; }
      set {
        currentUserId_ = value;
      }
    }

    /// <summary>Field number for the "verifier_user_id" field.</summary>
    public const int VerifierUserIdFieldNumber = 4;
    private int verifierUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int VerifierUserId {
      get { return verifierUserId_; }
      set {
        verifierUserId_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 5;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    /// <summary>
    /// Credential-sensitive write value. Implementations must not log this field
    /// unless an explicit redacted value-logging path is enabled.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecuredCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecuredCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (CurrentUserId != other.CurrentUserId) return false;
      if (VerifierUserId != other.VerifierUserId) return false;
      if (!object.Equals(Value, other.Value)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode();
      if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (CurrentUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecuredCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.CurrentUserId != 0) {
        CurrentUserId = other.CurrentUserId;
      }
      if (other.VerifierUserId != 0) {
        VerifierUserId = other.VerifierUserId;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 32: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 32: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// The unary reply's statuses field carries the correlated OnWriteComplete
  /// outcome when it arrives within the worker's bounded wait — see
  /// MxCommandReply.statuses.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecured2Command : pb::IMessage<WriteSecured2Command>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecured2Command> _parser = new pb::MessageParser<WriteSecured2Command>(() => new WriteSecured2Command());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecured2Command> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[23]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2Command() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2Command(WriteSecured2Command other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      currentUserId_ = other.currentUserId_;
      verifierUserId_ = other.verifierUserId_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2Command Clone() {
      return new WriteSecured2Command(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "current_user_id" field.</summary>
    public const int CurrentUserIdFieldNumber = 3;
    private int currentUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CurrentUserId {
      get { return currentUserId_; }
      set {
        currentUserId_ = value;
      }
    }

    /// <summary>Field number for the "verifier_user_id" field.</summary>
    public const int VerifierUserIdFieldNumber = 4;
    private int verifierUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int VerifierUserId {
      get { return verifierUserId_; }
      set {
        verifierUserId_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 5;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    /// <summary>
    /// Credential-sensitive write value. Implementations must not log this field
    /// unless an explicit redacted value-logging path is enabled.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_value" field.</summary>
    public const int TimestampValueFieldNumber = 6;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue timestampValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue TimestampValue {
      get { return timestampValue_; }
      set {
        timestampValue_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecured2Command);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecured2Command other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (CurrentUserId != other.CurrentUserId) return false;
      if (VerifierUserId != other.VerifierUserId) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (!object.Equals(TimestampValue, other.TimestampValue)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode();
      if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (timestampValue_ != null) hash ^= TimestampValue.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(TimestampValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(TimestampValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (CurrentUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (timestampValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecured2Command other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.CurrentUserId != 0) {
        CurrentUserId = other.CurrentUserId;
      }
      if (other.VerifierUserId != 0) {
        VerifierUserId = other.VerifierUserId;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.timestampValue_ != null) {
        if (timestampValue_ == null) {
          TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        TimestampValue.MergeFrom(other.TimestampValue);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 32: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 50: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 32: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 50: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AuthenticateUserCommand : pb::IMessage<AuthenticateUserCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AuthenticateUserCommand> _parser = new pb::MessageParser<AuthenticateUserCommand>(() => new AuthenticateUserCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AuthenticateUserCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[24]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserCommand(AuthenticateUserCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      verifyUser_ = other.verifyUser_;
      verifyUserPassword_ = other.verifyUserPassword_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserCommand Clone() {
      return new AuthenticateUserCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "verify_user" field.</summary>
    public const int VerifyUserFieldNumber = 2;
    private string verifyUser_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VerifyUser {
      get { return verifyUser_; }
      set {
        verifyUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "verify_user_password" field.</summary>
    public const int VerifyUserPasswordFieldNumber = 3;
    private string verifyUserPassword_ = "";
    /// <summary>
    /// Raw MXAccess credential. Implementations must keep this field out of logs,
    /// metrics labels, command lines, and diagnostics.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VerifyUserPassword {
      get { return verifyUserPassword_; }
      set {
        verifyUserPassword_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AuthenticateUserCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AuthenticateUserCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (VerifyUser != other.VerifyUser) return false;
      if (VerifyUserPassword != other.VerifyUserPassword) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (VerifyUser.Length != 0) hash ^= VerifyUser.GetHashCode();
      if (VerifyUserPassword.Length != 0) hash ^= VerifyUserPassword.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (VerifyUser.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VerifyUser);
      }
      if (VerifyUserPassword.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(VerifyUserPassword);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (VerifyUser.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VerifyUser);
      }
      if (VerifyUserPassword.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(VerifyUserPassword);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (VerifyUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VerifyUser);
      }
      if (VerifyUserPassword.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VerifyUserPassword);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AuthenticateUserCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.VerifyUser.Length != 0) {
        VerifyUser = other.VerifyUser;
      }
      if (other.VerifyUserPassword.Length != 0) {
        VerifyUserPassword = other.VerifyUserPassword;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            VerifyUser = input.ReadString();
            break;
          }
          case 26: {
            VerifyUserPassword = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            VerifyUser = input.ReadString();
            break;
          }
          case 26: {
            VerifyUserPassword = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ArchestrAUserToIdCommand : pb::IMessage<ArchestrAUserToIdCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ArchestrAUserToIdCommand> _parser = new pb::MessageParser<ArchestrAUserToIdCommand>(() => new ArchestrAUserToIdCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ArchestrAUserToIdCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[25]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdCommand(ArchestrAUserToIdCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      userIdGuid_ = other.userIdGuid_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdCommand Clone() {
      return new ArchestrAUserToIdCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "user_id_guid" field.</summary>
    public const int UserIdGuidFieldNumber = 2;
    private string userIdGuid_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string UserIdGuid {
      get { return userIdGuid_; }
      set {
        userIdGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ArchestrAUserToIdCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ArchestrAUserToIdCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (UserIdGuid != other.UserIdGuid) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (UserIdGuid.Length != 0) hash ^= UserIdGuid.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (UserIdGuid.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(UserIdGuid);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (UserIdGuid.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(UserIdGuid);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (UserIdGuid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(UserIdGuid);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ArchestrAUserToIdCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.UserIdGuid.Length != 0) {
        UserIdGuid = other.UserIdGuid;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            UserIdGuid = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            UserIdGuid = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddItemBulkCommand : pb::IMessage<AddItemBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddItemBulkCommand> _parser = new pb::MessageParser<AddItemBulkCommand>(() => new AddItemBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddItemBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[26]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemBulkCommand(AddItemBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      tagAddresses_ = other.tagAddresses_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemBulkCommand Clone() {
      return new AddItemBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "tag_addresses" field.</summary>
    public const int TagAddressesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_tagAddresses_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> tagAddresses_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> TagAddresses {
      get { return tagAddresses_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddItemBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddItemBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!tagAddresses_.Equals(other.tagAddresses_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= tagAddresses_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(output, _repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(ref output, _repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += tagAddresses_.CalculateSize(_repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddItemBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      tagAddresses_.Add(other.tagAddresses_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(input, _repeated_tagAddresses_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(ref input, _repeated_tagAddresses_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AdviseItemBulkCommand : pb::IMessage<AdviseItemBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AdviseItemBulkCommand> _parser = new pb::MessageParser<AdviseItemBulkCommand>(() => new AdviseItemBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AdviseItemBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[27]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseItemBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseItemBulkCommand(AdviseItemBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandles_ = other.itemHandles_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AdviseItemBulkCommand Clone() {
      return new AdviseItemBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handles" field.</summary>
    public const int ItemHandlesFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_itemHandles_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> itemHandles_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ItemHandles {
      get { return itemHandles_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AdviseItemBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AdviseItemBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!itemHandles_.Equals(other.itemHandles_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= itemHandles_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(ref output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += itemHandles_.CalculateSize(_repeated_itemHandles_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AdviseItemBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      itemHandles_.Add(other.itemHandles_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(ref input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RemoveItemBulkCommand : pb::IMessage<RemoveItemBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RemoveItemBulkCommand> _parser = new pb::MessageParser<RemoveItemBulkCommand>(() => new RemoveItemBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RemoveItemBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[28]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemBulkCommand(RemoveItemBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandles_ = other.itemHandles_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RemoveItemBulkCommand Clone() {
      return new RemoveItemBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handles" field.</summary>
    public const int ItemHandlesFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_itemHandles_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> itemHandles_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ItemHandles {
      get { return itemHandles_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RemoveItemBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RemoveItemBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!itemHandles_.Equals(other.itemHandles_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= itemHandles_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(ref output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += itemHandles_.CalculateSize(_repeated_itemHandles_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RemoveItemBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      itemHandles_.Add(other.itemHandles_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(ref input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class UnAdviseItemBulkCommand : pb::IMessage<UnAdviseItemBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UnAdviseItemBulkCommand> _parser = new pb::MessageParser<UnAdviseItemBulkCommand>(() => new UnAdviseItemBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UnAdviseItemBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[29]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseItemBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseItemBulkCommand(UnAdviseItemBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandles_ = other.itemHandles_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnAdviseItemBulkCommand Clone() {
      return new UnAdviseItemBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handles" field.</summary>
    public const int ItemHandlesFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_itemHandles_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> itemHandles_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ItemHandles {
      get { return itemHandles_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UnAdviseItemBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UnAdviseItemBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!itemHandles_.Equals(other.itemHandles_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= itemHandles_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(ref output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += itemHandles_.CalculateSize(_repeated_itemHandles_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UnAdviseItemBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      itemHandles_.Add(other.itemHandles_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(ref input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SubscribeBulkCommand : pb::IMessage<SubscribeBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SubscribeBulkCommand> _parser = new pb::MessageParser<SubscribeBulkCommand>(() => new SubscribeBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SubscribeBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[30]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeBulkCommand(SubscribeBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      tagAddresses_ = other.tagAddresses_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeBulkCommand Clone() {
      return new SubscribeBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "tag_addresses" field.</summary>
    public const int TagAddressesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_tagAddresses_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> tagAddresses_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> TagAddresses {
      get { return tagAddresses_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SubscribeBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SubscribeBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!tagAddresses_.Equals(other.tagAddresses_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= tagAddresses_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(output, _repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(ref output, _repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += tagAddresses_.CalculateSize(_repeated_tagAddresses_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SubscribeBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      tagAddresses_.Add(other.tagAddresses_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(input, _repeated_tagAddresses_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(ref input, _repeated_tagAddresses_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Subscribe the worker's alarm consumer to an AVEVA alarm provider.
  /// Subscription expression follows the canonical
  /// `\\&lt;machine>\Galaxy!&lt;area>` format (literal "Galaxy" provider). The
  /// worker spins up a wnwrapConsumer-backed subscription on its STA on
  /// first call; subsequent calls are an error (use UnsubscribeAlarms then
  /// SubscribeAlarms to reconfigure).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SubscribeAlarmsCommand : pb::IMessage<SubscribeAlarmsCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SubscribeAlarmsCommand> _parser = new pb::MessageParser<SubscribeAlarmsCommand>(() => new SubscribeAlarmsCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SubscribeAlarmsCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[31]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeAlarmsCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeAlarmsCommand(SubscribeAlarmsCommand other) : this() {
      subscriptionExpression_ = other.subscriptionExpression_;
      forcedMode_ = other.forcedMode_;
      watchList_ = other.watchList_.Clone();
      failover_ = other.failover_ != null ? other.failover_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeAlarmsCommand Clone() {
      return new SubscribeAlarmsCommand(this);
    }

    /// <summary>Field number for the "subscription_expression" field.</summary>
    public const int SubscriptionExpressionFieldNumber = 1;
    private string subscriptionExpression_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SubscriptionExpression {
      get { return subscriptionExpression_; }
      set {
        subscriptionExpression_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "forced_mode" field.</summary>
    public const int ForcedModeFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode forcedMode_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified;
    /// <summary>
    /// UNSPECIFIED = auto-failover/failback. ALARMMGR/SUBTAG force one provider.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode ForcedMode {
      get { return forcedMode_; }
      set {
        forcedMode_ = value;
      }
    }

    /// <summary>Field number for the "watch_list" field.</summary>
    public const int WatchListFieldNumber = 3;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget> _repeated_watchList_codec
        = pb::FieldCodec.ForMessage(26, global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget> watchList_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget>();
    /// <summary>
    /// Subtag watch-list resolved by the gateway (GR SQL + config). Empty in pure
    /// alarmmgr mode; in subtag mode it bounds what the consumer can observe.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSubtagTarget> WatchList {
      get { return watchList_; }
    }

    /// <summary>Field number for the "failover" field.</summary>
    public const int FailoverFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig failover_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig Failover {
      get { return failover_; }
      set {
        failover_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SubscribeAlarmsCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SubscribeAlarmsCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SubscriptionExpression != other.SubscriptionExpression) return false;
      if (ForcedMode != other.ForcedMode) return false;
      if(!watchList_.Equals(other.watchList_)) return false;
      if (!object.Equals(Failover, other.Failover)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SubscriptionExpression.Length != 0) hash ^= SubscriptionExpression.GetHashCode();
      if (ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= ForcedMode.GetHashCode();
      hash ^= watchList_.GetHashCode();
      if (failover_ != null) hash ^= Failover.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SubscriptionExpression.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SubscriptionExpression);
      }
      if (ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) ForcedMode);
      }
      watchList_.WriteTo(output, _repeated_watchList_codec);
      if (failover_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Failover);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SubscriptionExpression.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SubscriptionExpression);
      }
      if (ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) ForcedMode);
      }
      watchList_.WriteTo(ref output, _repeated_watchList_codec);
      if (failover_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Failover);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SubscriptionExpression.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SubscriptionExpression);
      }
      if (ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ForcedMode);
      }
      size += watchList_.CalculateSize(_repeated_watchList_codec);
      if (failover_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Failover);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SubscribeAlarmsCommand other) {
      if (other == null) {
        return;
      }
      if (other.SubscriptionExpression.Length != 0) {
        SubscriptionExpression = other.SubscriptionExpression;
      }
      if (other.ForcedMode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        ForcedMode = other.ForcedMode;
      }
      watchList_.Add(other.watchList_);
      if (other.failover_ != null) {
        if (failover_ == null) {
          Failover = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig();
        }
        Failover.MergeFrom(other.Failover);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SubscriptionExpression = input.ReadString();
            break;
          }
          case 16: {
            ForcedMode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 26: {
            watchList_.AddEntriesFrom(input, _repeated_watchList_codec);
            break;
          }
          case 34: {
            if (failover_ == null) {
              Failover = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig();
            }
            input.ReadMessage(Failover);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SubscriptionExpression = input.ReadString();
            break;
          }
          case 16: {
            ForcedMode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 26: {
            watchList_.AddEntriesFrom(ref input, _repeated_watchList_codec);
            break;
          }
          case 34: {
            if (failover_ == null) {
              Failover = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmFailoverConfig();
            }
            input.ReadMessage(Failover);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Tear down the worker's alarm consumer. No-op if no subscription is
  /// currently active.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class UnsubscribeAlarmsCommand : pb::IMessage<UnsubscribeAlarmsCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UnsubscribeAlarmsCommand> _parser = new pb::MessageParser<UnsubscribeAlarmsCommand>(() => new UnsubscribeAlarmsCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UnsubscribeAlarmsCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[32]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeAlarmsCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeAlarmsCommand(UnsubscribeAlarmsCommand other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeAlarmsCommand Clone() {
      return new UnsubscribeAlarmsCommand(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UnsubscribeAlarmsCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UnsubscribeAlarmsCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UnsubscribeAlarmsCommand other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  /// <summary>
  /// One alarm attribute the subtag fallback consumer advises. Addresses are full
  /// MXAccess item references the worker passes straight to AddItem.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AlarmSubtagTarget : pb::IMessage<AlarmSubtagTarget>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AlarmSubtagTarget> _parser = new pb::MessageParser<AlarmSubtagTarget>(() => new AlarmSubtagTarget());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AlarmSubtagTarget> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[33]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSubtagTarget() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSubtagTarget(AlarmSubtagTarget other) : this() {
      alarmFullReference_ = other.alarmFullReference_;
      sourceObjectReference_ = other.sourceObjectReference_;
      activeSubtag_ = other.activeSubtag_;
      ackedSubtag_ = other.ackedSubtag_;
      ackCommentSubtag_ = other.ackCommentSubtag_;
      prioritySubtag_ = other.prioritySubtag_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSubtagTarget Clone() {
      return new AlarmSubtagTarget(this);
    }

    /// <summary>Field number for the "alarm_full_reference" field.</summary>
    public const int AlarmFullReferenceFieldNumber = 1;
    private string alarmFullReference_ = "";
    /// <summary>
    /// e.g. "Galaxy!Area.Tank01.Level.HiHi"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFullReference {
      get { return alarmFullReference_; }
      set {
        alarmFullReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_object_reference" field.</summary>
    public const int SourceObjectReferenceFieldNumber = 2;
    private string sourceObjectReference_ = "";
    /// <summary>
    /// e.g. "Tank01"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceObjectReference {
      get { return sourceObjectReference_; }
      set {
        sourceObjectReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "active_subtag" field.</summary>
    public const int ActiveSubtagFieldNumber = 3;
    private string activeSubtag_ = "";
    /// <summary>
    /// item address of the in-alarm boolean
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ActiveSubtag {
      get { return activeSubtag_; }
      set {
        activeSubtag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "acked_subtag" field.</summary>
    public const int AckedSubtagFieldNumber = 4;
    private string ackedSubtag_ = "";
    /// <summary>
    /// item address of the acknowledged boolean
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AckedSubtag {
      get { return ackedSubtag_; }
      set {
        ackedSubtag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "ack_comment_subtag" field.</summary>
    public const int AckCommentSubtagFieldNumber = 5;
    private string ackCommentSubtag_ = "";
    /// <summary>
    /// writable ack-comment attribute (ack write target)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AckCommentSubtag {
      get { return ackCommentSubtag_; }
      set {
        ackCommentSubtag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "priority_subtag" field.</summary>
    public const int PrioritySubtagFieldNumber = 6;
    private string prioritySubtag_ = "";
    /// <summary>
    /// optional severity source; empty if absent
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string PrioritySubtag {
      get { return prioritySubtag_; }
      set {
        prioritySubtag_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AlarmSubtagTarget);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmSubtagTarget other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmFullReference != other.AlarmFullReference) return false;
      if (SourceObjectReference != other.SourceObjectReference) return false;
      if (ActiveSubtag != other.ActiveSubtag) return false;
      if (AckedSubtag != other.AckedSubtag) return false;
      if (AckCommentSubtag != other.AckCommentSubtag) return false;
      if (PrioritySubtag != other.PrioritySubtag) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmFullReference.Length != 0) hash ^= AlarmFullReference.GetHashCode();
      if (SourceObjectReference.Length != 0) hash ^= SourceObjectReference.GetHashCode();
      if (ActiveSubtag.Length != 0) hash ^= ActiveSubtag.GetHashCode();
      if (AckedSubtag.Length != 0) hash ^= AckedSubtag.GetHashCode();
      if (AckCommentSubtag.Length != 0) hash ^= AckCommentSubtag.GetHashCode();
      if (PrioritySubtag.Length != 0) hash ^= PrioritySubtag.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (ActiveSubtag.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ActiveSubtag);
      }
      if (AckedSubtag.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(AckedSubtag);
      }
      if (AckCommentSubtag.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(AckCommentSubtag);
      }
      if (PrioritySubtag.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(PrioritySubtag);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (ActiveSubtag.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(ActiveSubtag);
      }
      if (AckedSubtag.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(AckedSubtag);
      }
      if (AckCommentSubtag.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(AckCommentSubtag);
      }
      if (PrioritySubtag.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(PrioritySubtag);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmFullReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceObjectReference);
      }
      if (ActiveSubtag.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ActiveSubtag);
      }
      if (AckedSubtag.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AckedSubtag);
      }
      if (AckCommentSubtag.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AckCommentSubtag);
      }
      if (PrioritySubtag.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PrioritySubtag);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmSubtagTarget other) {
      if (other == null) {
        return;
      }
      if (other.AlarmFullReference.Length != 0) {
        AlarmFullReference = other.AlarmFullReference;
      }
      if (other.SourceObjectReference.Length != 0) {
        SourceObjectReference = other.SourceObjectReference;
      }
      if (other.ActiveSubtag.Length != 0) {
        ActiveSubtag = other.ActiveSubtag;
      }
      if (other.AckedSubtag.Length != 0) {
        AckedSubtag = other.AckedSubtag;
      }
      if (other.AckCommentSubtag.Length != 0) {
        AckCommentSubtag = other.AckCommentSubtag;
      }
      if (other.PrioritySubtag.Length != 0) {
        PrioritySubtag = other.PrioritySubtag;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            ActiveSubtag = input.ReadString();
            break;
          }
          case 34: {
            AckedSubtag = input.ReadString();
            break;
          }
          case 42: {
            AckCommentSubtag = input.ReadString();
            break;
          }
          case 50: {
            PrioritySubtag = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            ActiveSubtag = input.ReadString();
            break;
          }
          case 34: {
            AckedSubtag = input.ReadString();
            break;
          }
          case 42: {
            AckCommentSubtag = input.ReadString();
            break;
          }
          case 50: {
            PrioritySubtag = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AlarmFailoverConfig : pb::IMessage<AlarmFailoverConfig>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AlarmFailoverConfig> _parser = new pb::MessageParser<AlarmFailoverConfig>(() => new AlarmFailoverConfig());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AlarmFailoverConfig> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[34]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFailoverConfig() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFailoverConfig(AlarmFailoverConfig other) : this() {
      consecutiveFailureThreshold_ = other.consecutiveFailureThreshold_;
      failbackProbeIntervalSeconds_ = other.failbackProbeIntervalSeconds_;
      failbackStableProbes_ = other.failbackStableProbes_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFailoverConfig Clone() {
      return new AlarmFailoverConfig(this);
    }

    /// <summary>Field number for the "consecutive_failure_threshold" field.</summary>
    public const int ConsecutiveFailureThresholdFieldNumber = 1;
    private int consecutiveFailureThreshold_;
    /// <summary>
    /// wnwrap COM failures before switching (>=1)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ConsecutiveFailureThreshold {
      get { return consecutiveFailureThreshold_; }
      set {
        consecutiveFailureThreshold_ = value;
      }
    }

    /// <summary>Field number for the "failback_probe_interval_seconds" field.</summary>
    public const int FailbackProbeIntervalSecondsFieldNumber = 2;
    private int failbackProbeIntervalSeconds_;
    /// <summary>
    /// probe cadence while degraded (>=1)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FailbackProbeIntervalSeconds {
      get { return failbackProbeIntervalSeconds_; }
      set {
        failbackProbeIntervalSeconds_ = value;
      }
    }

    /// <summary>Field number for the "failback_stable_probes" field.</summary>
    public const int FailbackStableProbesFieldNumber = 3;
    private int failbackStableProbes_;
    /// <summary>
    /// clean probes before switching back (>=1)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int FailbackStableProbes {
      get { return failbackStableProbes_; }
      set {
        failbackStableProbes_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AlarmFailoverConfig);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmFailoverConfig other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ConsecutiveFailureThreshold != other.ConsecutiveFailureThreshold) return false;
      if (FailbackProbeIntervalSeconds != other.FailbackProbeIntervalSeconds) return false;
      if (FailbackStableProbes != other.FailbackStableProbes) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ConsecutiveFailureThreshold != 0) hash ^= ConsecutiveFailureThreshold.GetHashCode();
      if (FailbackProbeIntervalSeconds != 0) hash ^= FailbackProbeIntervalSeconds.GetHashCode();
      if (FailbackStableProbes != 0) hash ^= FailbackStableProbes.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ConsecutiveFailureThreshold != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ConsecutiveFailureThreshold);
      }
      if (FailbackProbeIntervalSeconds != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(FailbackProbeIntervalSeconds);
      }
      if (FailbackStableProbes != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailbackStableProbes);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ConsecutiveFailureThreshold != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ConsecutiveFailureThreshold);
      }
      if (FailbackProbeIntervalSeconds != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(FailbackProbeIntervalSeconds);
      }
      if (FailbackStableProbes != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(FailbackStableProbes);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ConsecutiveFailureThreshold != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ConsecutiveFailureThreshold);
      }
      if (FailbackProbeIntervalSeconds != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailbackProbeIntervalSeconds);
      }
      if (FailbackStableProbes != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailbackStableProbes);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmFailoverConfig other) {
      if (other == null) {
        return;
      }
      if (other.ConsecutiveFailureThreshold != 0) {
        ConsecutiveFailureThreshold = other.ConsecutiveFailureThreshold;
      }
      if (other.FailbackProbeIntervalSeconds != 0) {
        FailbackProbeIntervalSeconds = other.FailbackProbeIntervalSeconds;
      }
      if (other.FailbackStableProbes != 0) {
        FailbackStableProbes = other.FailbackStableProbes;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ConsecutiveFailureThreshold = input.ReadInt32();
            break;
          }
          case 16: {
            FailbackProbeIntervalSeconds = input.ReadInt32();
            break;
          }
          case 24: {
            FailbackStableProbes = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ConsecutiveFailureThreshold = input.ReadInt32();
            break;
          }
          case 16: {
            FailbackProbeIntervalSeconds = input.ReadInt32();
            break;
          }
          case 24: {
            FailbackStableProbes = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Acknowledge a single alarm by its GUID. Operator identity fields are
  /// recorded atomically with the ack transition in the alarm-history log.
  /// The reply's hresult / native_status surfaces AVEVA's
  /// AlarmAckByGUID return code.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AcknowledgeAlarmCommand : pb::IMessage<AcknowledgeAlarmCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AcknowledgeAlarmCommand> _parser = new pb::MessageParser<AcknowledgeAlarmCommand>(() => new AcknowledgeAlarmCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AcknowledgeAlarmCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[35]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmCommand(AcknowledgeAlarmCommand other) : this() {
      alarmGuid_ = other.alarmGuid_;
      comment_ = other.comment_;
      operatorUser_ = other.operatorUser_;
      operatorNode_ = other.operatorNode_;
      operatorDomain_ = other.operatorDomain_;
      operatorFullName_ = other.operatorFullName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmCommand Clone() {
      return new AcknowledgeAlarmCommand(this);
    }

    /// <summary>Field number for the "alarm_guid" field.</summary>
    public const int AlarmGuidFieldNumber = 1;
    private string alarmGuid_ = "";
    /// <summary>
    /// Canonical 8-4-4-4-12 GUID string (e.g. "BCC47053-9542-4D65-BDAA-BCDEA6A32A73").
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmGuid {
      get { return alarmGuid_; }
      set {
        alarmGuid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "comment" field.</summary>
    public const int CommentFieldNumber = 2;
    private string comment_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Comment {
      get { return comment_; }
      set {
        comment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 3;
    private string operatorUser_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_node" field.</summary>
    public const int OperatorNodeFieldNumber = 4;
    private string operatorNode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorNode {
      get { return operatorNode_; }
      set {
        operatorNode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_domain" field.</summary>
    public const int OperatorDomainFieldNumber = 5;
    private string operatorDomain_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorDomain {
      get { return operatorDomain_; }
      set {
        operatorDomain_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_full_name" field.</summary>
    public const int OperatorFullNameFieldNumber = 6;
    private string operatorFullName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorFullName {
      get { return operatorFullName_; }
      set {
        operatorFullName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AcknowledgeAlarmCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AcknowledgeAlarmCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmGuid != other.AlarmGuid) return false;
      if (Comment != other.Comment) return false;
      if (OperatorUser != other.OperatorUser) return false;
      if (OperatorNode != other.OperatorNode) return false;
      if (OperatorDomain != other.OperatorDomain) return false;
      if (OperatorFullName != other.OperatorFullName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmGuid.Length != 0) hash ^= AlarmGuid.GetHashCode();
      if (Comment.Length != 0) hash ^= Comment.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (OperatorNode.Length != 0) hash ^= OperatorNode.GetHashCode();
      if (OperatorDomain.Length != 0) hash ^= OperatorDomain.GetHashCode();
      if (OperatorFullName.Length != 0) hash ^= OperatorFullName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmGuid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmGuid);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(OperatorFullName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmGuid.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmGuid);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(OperatorFullName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmGuid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmGuid);
      }
      if (Comment.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Comment);
      }
      if (OperatorUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorFullName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AcknowledgeAlarmCommand other) {
      if (other == null) {
        return;
      }
      if (other.AlarmGuid.Length != 0) {
        AlarmGuid = other.AlarmGuid;
      }
      if (other.Comment.Length != 0) {
        Comment = other.Comment;
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      if (other.OperatorNode.Length != 0) {
        OperatorNode = other.OperatorNode;
      }
      if (other.OperatorDomain.Length != 0) {
        OperatorDomain = other.OperatorDomain;
      }
      if (other.OperatorFullName.Length != 0) {
        OperatorFullName = other.OperatorFullName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmGuid = input.ReadString();
            break;
          }
          case 18: {
            Comment = input.ReadString();
            break;
          }
          case 26: {
            OperatorUser = input.ReadString();
            break;
          }
          case 34: {
            OperatorNode = input.ReadString();
            break;
          }
          case 42: {
            OperatorDomain = input.ReadString();
            break;
          }
          case 50: {
            OperatorFullName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmGuid = input.ReadString();
            break;
          }
          case 18: {
            Comment = input.ReadString();
            break;
          }
          case 26: {
            OperatorUser = input.ReadString();
            break;
          }
          case 34: {
            OperatorNode = input.ReadString();
            break;
          }
          case 42: {
            OperatorDomain = input.ReadString();
            break;
          }
          case 50: {
            OperatorFullName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Snapshot the currently-active alarm set. Optional filter prefix scopes
  /// the snapshot to alarms whose alarm_full_reference starts with the
  /// supplied string (matches QueryActiveAlarmsRequest.alarm_filter_prefix).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class QueryActiveAlarmsCommand : pb::IMessage<QueryActiveAlarmsCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<QueryActiveAlarmsCommand> _parser = new pb::MessageParser<QueryActiveAlarmsCommand>(() => new QueryActiveAlarmsCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<QueryActiveAlarmsCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[36]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsCommand(QueryActiveAlarmsCommand other) : this() {
      alarmFilterPrefix_ = other.alarmFilterPrefix_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsCommand Clone() {
      return new QueryActiveAlarmsCommand(this);
    }

    /// <summary>Field number for the "alarm_filter_prefix" field.</summary>
    public const int AlarmFilterPrefixFieldNumber = 1;
    private string alarmFilterPrefix_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFilterPrefix {
      get { return alarmFilterPrefix_; }
      set {
        alarmFilterPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as QueryActiveAlarmsCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(QueryActiveAlarmsCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmFilterPrefix != other.AlarmFilterPrefix) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmFilterPrefix.Length != 0) hash ^= AlarmFilterPrefix.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmFilterPrefix.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(QueryActiveAlarmsCommand other) {
      if (other == null) {
        return;
      }
      if (other.AlarmFilterPrefix.Length != 0) {
        AlarmFilterPrefix = other.AlarmFilterPrefix;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Acknowledge a single alarm by its (name, provider, group) tuple. Used
  /// when the public RPC's AlarmFullReference (Provider!Group.Tag) cannot
  /// be resolved to a GUID directly. The worker invokes
  /// wwAlarmConsumerClass.AlarmAckByName which reaches the same alarm
  /// history path as AlarmAckByGUID.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AcknowledgeAlarmByNameCommand : pb::IMessage<AcknowledgeAlarmByNameCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AcknowledgeAlarmByNameCommand> _parser = new pb::MessageParser<AcknowledgeAlarmByNameCommand>(() => new AcknowledgeAlarmByNameCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AcknowledgeAlarmByNameCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[37]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmByNameCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmByNameCommand(AcknowledgeAlarmByNameCommand other) : this() {
      alarmName_ = other.alarmName_;
      providerName_ = other.providerName_;
      groupName_ = other.groupName_;
      comment_ = other.comment_;
      operatorUser_ = other.operatorUser_;
      operatorNode_ = other.operatorNode_;
      operatorDomain_ = other.operatorDomain_;
      operatorFullName_ = other.operatorFullName_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmByNameCommand Clone() {
      return new AcknowledgeAlarmByNameCommand(this);
    }

    /// <summary>Field number for the "alarm_name" field.</summary>
    public const int AlarmNameFieldNumber = 1;
    private string alarmName_ = "";
    /// <summary>
    /// Tag/alarm name (e.g. "TestMachine_001.TestAlarm001"). Tag itself
    /// may contain dots; the gateway-side parser splits on the first dot
    /// after the '!' separator.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmName {
      get { return alarmName_; }
      set {
        alarmName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "provider_name" field.</summary>
    public const int ProviderNameFieldNumber = 2;
    private string providerName_ = "";
    /// <summary>
    /// AVEVA alarm-provider name (literal "Galaxy" for ArchestrA Galaxies).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ProviderName {
      get { return providerName_; }
      set {
        providerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "group_name" field.</summary>
    public const int GroupNameFieldNumber = 3;
    private string groupName_ = "";
    /// <summary>
    /// Area/group name (e.g. "TestArea").
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string GroupName {
      get { return groupName_; }
      set {
        groupName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "comment" field.</summary>
    public const int CommentFieldNumber = 4;
    private string comment_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Comment {
      get { return comment_; }
      set {
        comment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 5;
    private string operatorUser_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_node" field.</summary>
    public const int OperatorNodeFieldNumber = 6;
    private string operatorNode_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorNode {
      get { return operatorNode_; }
      set {
        operatorNode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_domain" field.</summary>
    public const int OperatorDomainFieldNumber = 7;
    private string operatorDomain_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorDomain {
      get { return operatorDomain_; }
      set {
        operatorDomain_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_full_name" field.</summary>
    public const int OperatorFullNameFieldNumber = 8;
    private string operatorFullName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorFullName {
      get { return operatorFullName_; }
      set {
        operatorFullName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AcknowledgeAlarmByNameCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AcknowledgeAlarmByNameCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmName != other.AlarmName) return false;
      if (ProviderName != other.ProviderName) return false;
      if (GroupName != other.GroupName) return false;
      if (Comment != other.Comment) return false;
      if (OperatorUser != other.OperatorUser) return false;
      if (OperatorNode != other.OperatorNode) return false;
      if (OperatorDomain != other.OperatorDomain) return false;
      if (OperatorFullName != other.OperatorFullName) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmName.Length != 0) hash ^= AlarmName.GetHashCode();
      if (ProviderName.Length != 0) hash ^= ProviderName.GetHashCode();
      if (GroupName.Length != 0) hash ^= GroupName.GetHashCode();
      if (Comment.Length != 0) hash ^= Comment.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (OperatorNode.Length != 0) hash ^= OperatorNode.GetHashCode();
      if (OperatorDomain.Length != 0) hash ^= OperatorDomain.GetHashCode();
      if (OperatorFullName.Length != 0) hash ^= OperatorFullName.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmName);
      }
      if (ProviderName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ProviderName);
      }
      if (GroupName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(GroupName);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(OperatorFullName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmName.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmName);
      }
      if (ProviderName.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ProviderName);
      }
      if (GroupName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(GroupName);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(OperatorFullName);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmName);
      }
      if (ProviderName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ProviderName);
      }
      if (GroupName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GroupName);
      }
      if (Comment.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Comment);
      }
      if (OperatorUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (OperatorNode.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorNode);
      }
      if (OperatorDomain.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorDomain);
      }
      if (OperatorFullName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorFullName);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AcknowledgeAlarmByNameCommand other) {
      if (other == null) {
        return;
      }
      if (other.AlarmName.Length != 0) {
        AlarmName = other.AlarmName;
      }
      if (other.ProviderName.Length != 0) {
        ProviderName = other.ProviderName;
      }
      if (other.GroupName.Length != 0) {
        GroupName = other.GroupName;
      }
      if (other.Comment.Length != 0) {
        Comment = other.Comment;
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      if (other.OperatorNode.Length != 0) {
        OperatorNode = other.OperatorNode;
      }
      if (other.OperatorDomain.Length != 0) {
        OperatorDomain = other.OperatorDomain;
      }
      if (other.OperatorFullName.Length != 0) {
        OperatorFullName = other.OperatorFullName;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmName = input.ReadString();
            break;
          }
          case 18: {
            ProviderName = input.ReadString();
            break;
          }
          case 26: {
            GroupName = input.ReadString();
            break;
          }
          case 34: {
            Comment = input.ReadString();
            break;
          }
          case 42: {
            OperatorUser = input.ReadString();
            break;
          }
          case 50: {
            OperatorNode = input.ReadString();
            break;
          }
          case 58: {
            OperatorDomain = input.ReadString();
            break;
          }
          case 66: {
            OperatorFullName = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmName = input.ReadString();
            break;
          }
          case 18: {
            ProviderName = input.ReadString();
            break;
          }
          case 26: {
            GroupName = input.ReadString();
            break;
          }
          case 34: {
            Comment = input.ReadString();
            break;
          }
          case 42: {
            OperatorUser = input.ReadString();
            break;
          }
          case 50: {
            OperatorNode = input.ReadString();
            break;
          }
          case 58: {
            OperatorDomain = input.ReadString();
            break;
          }
          case 66: {
            OperatorFullName = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class UnsubscribeBulkCommand : pb::IMessage<UnsubscribeBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<UnsubscribeBulkCommand> _parser = new pb::MessageParser<UnsubscribeBulkCommand>(() => new UnsubscribeBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<UnsubscribeBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[38]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeBulkCommand(UnsubscribeBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      itemHandles_ = other.itemHandles_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public UnsubscribeBulkCommand Clone() {
      return new UnsubscribeBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handles" field.</summary>
    public const int ItemHandlesFieldNumber = 2;
    private static readonly pb::FieldCodec<int> _repeated_itemHandles_codec
        = pb::FieldCodec.ForInt32(18);
    private readonly pbc::RepeatedField<int> itemHandles_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> ItemHandles {
      get { return itemHandles_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as UnsubscribeBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(UnsubscribeBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!itemHandles_.Equals(other.itemHandles_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= itemHandles_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      itemHandles_.WriteTo(ref output, _repeated_itemHandles_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += itemHandles_.CalculateSize(_repeated_itemHandles_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(UnsubscribeBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      itemHandles_.Add(other.itemHandles_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18:
          case 16: {
            itemHandles_.AddEntriesFrom(ref input, _repeated_itemHandles_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Bulk Write — sequential MXAccess Write per entry, on the worker's STA.
  /// MXAccess has no native bulk write; each entry round-trips through the same
  /// single-item Write path the gateway uses today. Per-item failures appear as
  /// BulkWriteResult entries with `was_successful = false` and never throw.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteBulkCommand : pb::IMessage<WriteBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteBulkCommand> _parser = new pb::MessageParser<WriteBulkCommand>(() => new WriteBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[39]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkCommand(WriteBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      entries_ = other.entries_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkCommand Clone() {
      return new WriteBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "entries" field.</summary>
    public const int EntriesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry> _repeated_entries_codec
        = pb::FieldCodec.ForMessage(18, global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry> entries_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteBulkEntry> Entries {
      get { return entries_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!entries_.Equals(other.entries_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= entries_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(ref output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += entries_.CalculateSize(_repeated_entries_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      entries_.Add(other.entries_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(input, _repeated_entries_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(ref input, _repeated_entries_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteBulkEntry : pb::IMessage<WriteBulkEntry>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteBulkEntry> _parser = new pb::MessageParser<WriteBulkEntry>(() => new WriteBulkEntry());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteBulkEntry> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[40]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkEntry() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkEntry(WriteBulkEntry other) : this() {
      itemHandle_ = other.itemHandle_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteBulkEntry Clone() {
      return new WriteBulkEntry(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 3;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteBulkEntry);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteBulkEntry other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (UserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (UserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteBulkEntry other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 24: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 24: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Bulk Write2 — sequential MXAccess Write2 (timestamped) per entry.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Write2BulkCommand : pb::IMessage<Write2BulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Write2BulkCommand> _parser = new pb::MessageParser<Write2BulkCommand>(() => new Write2BulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Write2BulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[41]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkCommand(Write2BulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      entries_ = other.entries_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkCommand Clone() {
      return new Write2BulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "entries" field.</summary>
    public const int EntriesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry> _repeated_entries_codec
        = pb::FieldCodec.ForMessage(18, global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry> entries_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.Write2BulkEntry> Entries {
      get { return entries_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Write2BulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Write2BulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!entries_.Equals(other.entries_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= entries_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(ref output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += entries_.CalculateSize(_repeated_entries_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Write2BulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      entries_.Add(other.entries_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(input, _repeated_entries_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(ref input, _repeated_entries_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Write2BulkEntry : pb::IMessage<Write2BulkEntry>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Write2BulkEntry> _parser = new pb::MessageParser<Write2BulkEntry>(() => new Write2BulkEntry());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Write2BulkEntry> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[42]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkEntry() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkEntry(Write2BulkEntry other) : this() {
      itemHandle_ = other.itemHandle_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null;
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Write2BulkEntry Clone() {
      return new Write2BulkEntry(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_value" field.</summary>
    public const int TimestampValueFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue timestampValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue TimestampValue {
      get { return timestampValue_; }
      set {
        timestampValue_ = value;
      }
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 4;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Write2BulkEntry);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Write2BulkEntry other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (!object.Equals(TimestampValue, other.TimestampValue)) return false;
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (timestampValue_ != null) hash ^= TimestampValue.GetHashCode();
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TimestampValue);
      }
      if (UserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TimestampValue);
      }
      if (UserId != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (timestampValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue);
      }
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Write2BulkEntry other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.timestampValue_ != null) {
        if (timestampValue_ == null) {
          TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        TimestampValue.MergeFrom(other.TimestampValue);
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 26: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
          case 32: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 26: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
          case 32: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Bulk WriteSecured — sequential MXAccess WriteSecured per entry.
  /// Credential-sensitive values (`value`) MUST be kept out of logs, metrics
  /// labels, command lines, and diagnostics — same redaction rules as the
  /// single-item WriteSecured contract.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecuredBulkCommand : pb::IMessage<WriteSecuredBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecuredBulkCommand> _parser = new pb::MessageParser<WriteSecuredBulkCommand>(() => new WriteSecuredBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecuredBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[43]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkCommand(WriteSecuredBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      entries_ = other.entries_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkCommand Clone() {
      return new WriteSecuredBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "entries" field.</summary>
    public const int EntriesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry> _repeated_entries_codec
        = pb::FieldCodec.ForMessage(18, global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry> entries_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecuredBulkEntry> Entries {
      get { return entries_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecuredBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecuredBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!entries_.Equals(other.entries_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= entries_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(ref output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += entries_.CalculateSize(_repeated_entries_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecuredBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      entries_.Add(other.entries_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(input, _repeated_entries_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(ref input, _repeated_entries_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecuredBulkEntry : pb::IMessage<WriteSecuredBulkEntry>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecuredBulkEntry> _parser = new pb::MessageParser<WriteSecuredBulkEntry>(() => new WriteSecuredBulkEntry());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecuredBulkEntry> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[44]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkEntry() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkEntry(WriteSecuredBulkEntry other) : this() {
      itemHandle_ = other.itemHandle_;
      currentUserId_ = other.currentUserId_;
      verifierUserId_ = other.verifierUserId_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecuredBulkEntry Clone() {
      return new WriteSecuredBulkEntry(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "current_user_id" field.</summary>
    public const int CurrentUserIdFieldNumber = 2;
    private int currentUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CurrentUserId {
      get { return currentUserId_; }
      set {
        currentUserId_ = value;
      }
    }

    /// <summary>Field number for the "verifier_user_id" field.</summary>
    public const int VerifierUserIdFieldNumber = 3;
    private int verifierUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int VerifierUserId {
      get { return verifierUserId_; }
      set {
        verifierUserId_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    /// <summary>
    /// Credential-sensitive write value. Implementations must not log this field
    /// unless an explicit redacted value-logging path is enabled.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecuredBulkEntry);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecuredBulkEntry other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      if (CurrentUserId != other.CurrentUserId) return false;
      if (VerifierUserId != other.VerifierUserId) return false;
      if (!object.Equals(Value, other.Value)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode();
      if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (CurrentUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecuredBulkEntry other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.CurrentUserId != 0) {
        CurrentUserId = other.CurrentUserId;
      }
      if (other.VerifierUserId != 0) {
        VerifierUserId = other.VerifierUserId;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 16: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 24: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 34: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 16: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 24: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 34: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Bulk WriteSecured2 — sequential MXAccess WriteSecured2 (timestamped) per
  /// entry. Same redaction rules apply.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecured2BulkCommand : pb::IMessage<WriteSecured2BulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecured2BulkCommand> _parser = new pb::MessageParser<WriteSecured2BulkCommand>(() => new WriteSecured2BulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecured2BulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[45]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkCommand(WriteSecured2BulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      entries_ = other.entries_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkCommand Clone() {
      return new WriteSecured2BulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "entries" field.</summary>
    public const int EntriesFieldNumber = 2;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry> _repeated_entries_codec
        = pb::FieldCodec.ForMessage(18, global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry> entries_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.WriteSecured2BulkEntry> Entries {
      get { return entries_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecured2BulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecured2BulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!entries_.Equals(other.entries_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= entries_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      entries_.WriteTo(ref output, _repeated_entries_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += entries_.CalculateSize(_repeated_entries_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecured2BulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      entries_.Add(other.entries_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(input, _repeated_entries_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            entries_.AddEntriesFrom(ref input, _repeated_entries_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WriteSecured2BulkEntry : pb::IMessage<WriteSecured2BulkEntry>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WriteSecured2BulkEntry> _parser = new pb::MessageParser<WriteSecured2BulkEntry>(() => new WriteSecured2BulkEntry());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WriteSecured2BulkEntry> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[46]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkEntry() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkEntry(WriteSecured2BulkEntry other) : this() {
      itemHandle_ = other.itemHandle_;
      currentUserId_ = other.currentUserId_;
      verifierUserId_ = other.verifierUserId_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      timestampValue_ = other.timestampValue_ != null ? other.timestampValue_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WriteSecured2BulkEntry Clone() {
      return new WriteSecured2BulkEntry(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "current_user_id" field.</summary>
    public const int CurrentUserIdFieldNumber = 2;
    private int currentUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CurrentUserId {
      get { return currentUserId_; }
      set {
        currentUserId_ = value;
      }
    }

    /// <summary>Field number for the "verifier_user_id" field.</summary>
    public const int VerifierUserIdFieldNumber = 3;
    private int verifierUserId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int VerifierUserId {
      get { return verifierUserId_; }
      set {
        verifierUserId_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    /// <summary>
    /// Credential-sensitive write value. Implementations must not log this field
    /// unless an explicit redacted value-logging path is enabled.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_value" field.</summary>
    public const int TimestampValueFieldNumber = 5;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue timestampValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue TimestampValue {
      get { return timestampValue_; }
      set {
        timestampValue_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WriteSecured2BulkEntry);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WriteSecured2BulkEntry other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      if (CurrentUserId != other.CurrentUserId) return false;
      if (VerifierUserId != other.VerifierUserId) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (!object.Equals(TimestampValue, other.TimestampValue)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (CurrentUserId != 0) hash ^= CurrentUserId.GetHashCode();
      if (VerifierUserId != 0) hash ^= VerifierUserId.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (timestampValue_ != null) hash ^= TimestampValue.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(TimestampValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (CurrentUserId != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(VerifierUserId);
      }
      if (value_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Value);
      }
      if (timestampValue_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(TimestampValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (CurrentUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(CurrentUserId);
      }
      if (VerifierUserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VerifierUserId);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (timestampValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WriteSecured2BulkEntry other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.CurrentUserId != 0) {
        CurrentUserId = other.CurrentUserId;
      }
      if (other.VerifierUserId != 0) {
        VerifierUserId = other.VerifierUserId;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.timestampValue_ != null) {
        if (timestampValue_ == null) {
          TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        TimestampValue.MergeFrom(other.TimestampValue);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 16: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 24: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 34: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 42: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 16: {
            CurrentUserId = input.ReadInt32();
            break;
          }
          case 24: {
            VerifierUserId = input.ReadInt32();
            break;
          }
          case 34: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 42: {
            if (timestampValue_ == null) {
              TimestampValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(TimestampValue);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Bulk Read — snapshot the current value for each requested tag. MXAccess COM
  /// has no synchronous Read; the worker implements ReadBulk as:
  ///
  ///   - If the tag is already in the session's item registry AND that item is
  ///     currently advised AND the worker has a cached OnDataChange for it, the
  ///     reply returns the cached value WITHOUT modifying the existing
  ///     subscription (was_cached = true).
  ///   - Otherwise the worker takes the snapshot lifecycle itself: AddItem +
  ///     Advise, wait up to `timeout_ms` for the first OnDataChange, then
  ///     UnAdvise + RemoveItem before returning. The session is left exactly
  ///     as it was before the call (was_cached = false).
  ///
  /// `timeout_ms == 0` uses the gateway-configured default (1000 ms).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ReadBulkCommand : pb::IMessage<ReadBulkCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ReadBulkCommand> _parser = new pb::MessageParser<ReadBulkCommand>(() => new ReadBulkCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ReadBulkCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[47]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReadBulkCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReadBulkCommand(ReadBulkCommand other) : this() {
      serverHandle_ = other.serverHandle_;
      tagAddresses_ = other.tagAddresses_.Clone();
      timeoutMs_ = other.timeoutMs_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReadBulkCommand Clone() {
      return new ReadBulkCommand(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "tag_addresses" field.</summary>
    public const int TagAddressesFieldNumber = 2;
    private static readonly pb::FieldCodec<string> _repeated_tagAddresses_codec
        = pb::FieldCodec.ForString(18);
    private readonly pbc::RepeatedField<string> tagAddresses_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> TagAddresses {
      get { return tagAddresses_; }
    }

    /// <summary>Field number for the "timeout_ms" field.</summary>
    public const int TimeoutMsFieldNumber = 3;
    private uint timeoutMs_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint TimeoutMs {
      get { return timeoutMs_; }
      set {
        timeoutMs_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ReadBulkCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ReadBulkCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if(!tagAddresses_.Equals(other.tagAddresses_)) return false;
      if (TimeoutMs != other.TimeoutMs) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      hash ^= tagAddresses_.GetHashCode();
      if (TimeoutMs != 0) hash ^= TimeoutMs.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(output, _repeated_tagAddresses_codec);
      if (TimeoutMs != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(TimeoutMs);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      tagAddresses_.WriteTo(ref output, _repeated_tagAddresses_codec);
      if (TimeoutMs != 0) {
        output.WriteRawTag(24);
        output.WriteUInt32(TimeoutMs);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      size += tagAddresses_.CalculateSize(_repeated_tagAddresses_codec);
      if (TimeoutMs != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(TimeoutMs);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ReadBulkCommand other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      tagAddresses_.Add(other.tagAddresses_);
      if (other.TimeoutMs != 0) {
        TimeoutMs = other.TimeoutMs;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(input, _repeated_tagAddresses_codec);
            break;
          }
          case 24: {
            TimeoutMs = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            tagAddresses_.AddEntriesFrom(ref input, _repeated_tagAddresses_codec);
            break;
          }
          case 24: {
            TimeoutMs = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class PingCommand : pb::IMessage<PingCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<PingCommand> _parser = new pb::MessageParser<PingCommand>(() => new PingCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<PingCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[48]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PingCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PingCommand(PingCommand other) : this() {
      message_ = other.message_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PingCommand Clone() {
      return new PingCommand(this);
    }

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 1;
    private string message_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as PingCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(PingCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Message != other.Message) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Message.Length != 0) hash ^= Message.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Message.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Message);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Message.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Message);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Message.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(PingCommand other) {
      if (other == null) {
        return;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Message = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            Message = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class GetSessionStateCommand : pb::IMessage<GetSessionStateCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetSessionStateCommand> _parser = new pb::MessageParser<GetSessionStateCommand>(() => new GetSessionStateCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetSessionStateCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[49]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetSessionStateCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetSessionStateCommand(GetSessionStateCommand other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetSessionStateCommand Clone() {
      return new GetSessionStateCommand(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetSessionStateCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetSessionStateCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetSessionStateCommand other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class GetWorkerInfoCommand : pb::IMessage<GetWorkerInfoCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<GetWorkerInfoCommand> _parser = new pb::MessageParser<GetWorkerInfoCommand>(() => new GetWorkerInfoCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<GetWorkerInfoCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[50]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetWorkerInfoCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetWorkerInfoCommand(GetWorkerInfoCommand other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public GetWorkerInfoCommand Clone() {
      return new GetWorkerInfoCommand(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as GetWorkerInfoCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(GetWorkerInfoCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(GetWorkerInfoCommand other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class DrainEventsCommand : pb::IMessage<DrainEventsCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DrainEventsCommand> _parser = new pb::MessageParser<DrainEventsCommand>(() => new DrainEventsCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DrainEventsCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[51]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsCommand(DrainEventsCommand other) : this() {
      maxEvents_ = other.maxEvents_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsCommand Clone() {
      return new DrainEventsCommand(this);
    }

    /// <summary>Field number for the "max_events" field.</summary>
    public const int MaxEventsFieldNumber = 1;
    private uint maxEvents_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint MaxEvents {
      get { return maxEvents_; }
      set {
        maxEvents_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DrainEventsCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DrainEventsCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (MaxEvents != other.MaxEvents) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (MaxEvents != 0) hash ^= MaxEvents.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (MaxEvents != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(MaxEvents);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (MaxEvents != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(MaxEvents);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (MaxEvents != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(MaxEvents);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DrainEventsCommand other) {
      if (other == null) {
        return;
      }
      if (other.MaxEvents != 0) {
        MaxEvents = other.MaxEvents;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            MaxEvents = input.ReadUInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            MaxEvents = input.ReadUInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ShutdownWorkerCommand : pb::IMessage<ShutdownWorkerCommand>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ShutdownWorkerCommand> _parser = new pb::MessageParser<ShutdownWorkerCommand>(() => new ShutdownWorkerCommand());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ShutdownWorkerCommand> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[52]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ShutdownWorkerCommand() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ShutdownWorkerCommand(ShutdownWorkerCommand other) : this() {
      gracePeriod_ = other.gracePeriod_ != null ? other.gracePeriod_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ShutdownWorkerCommand Clone() {
      return new ShutdownWorkerCommand(this);
    }

    /// <summary>Field number for the "grace_period" field.</summary>
    public const int GracePeriodFieldNumber = 1;
    private global::Google.Protobuf.WellKnownTypes.Duration gracePeriod_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Duration GracePeriod {
      get { return gracePeriod_; }
      set {
        gracePeriod_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ShutdownWorkerCommand);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ShutdownWorkerCommand other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(GracePeriod, other.GracePeriod)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (gracePeriod_ != null) hash ^= GracePeriod.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (gracePeriod_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(GracePeriod);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (gracePeriod_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(GracePeriod);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (gracePeriod_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GracePeriod);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ShutdownWorkerCommand other) {
      if (other == null) {
        return;
      }
      if (other.gracePeriod_ != null) {
        if (gracePeriod_ == null) {
          GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
        }
        GracePeriod.MergeFrom(other.GracePeriod);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (gracePeriod_ == null) {
              GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(GracePeriod);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (gracePeriod_ == null) {
              GracePeriod = new global::Google.Protobuf.WellKnownTypes.Duration();
            }
            input.ReadMessage(GracePeriod);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxCommandReply : pb::IMessage<MxCommandReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxCommandReply> _parser = new pb::MessageParser<MxCommandReply>(() => new MxCommandReply());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxCommandReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[53]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandReply(MxCommandReply other) : this() {
      _hasBits0 = other._hasBits0;
      sessionId_ = other.sessionId_;
      correlationId_ = other.correlationId_;
      kind_ = other.kind_;
      protocolStatus_ = other.protocolStatus_ != null ? other.protocolStatus_.Clone() : null;
      hresult_ = other.hresult_;
      returnValue_ = other.returnValue_ != null ? other.returnValue_.Clone() : null;
      statuses_ = other.statuses_.Clone();
      diagnosticMessage_ = other.diagnosticMessage_;
      switch (other.PayloadCase) {
        case PayloadOneofCase.Register:
          Register = other.Register.Clone();
          break;
        case PayloadOneofCase.AddItem:
          AddItem = other.AddItem.Clone();
          break;
        case PayloadOneofCase.AddItem2:
          AddItem2 = other.AddItem2.Clone();
          break;
        case PayloadOneofCase.AddBufferedItem:
          AddBufferedItem = other.AddBufferedItem.Clone();
          break;
        case PayloadOneofCase.Suspend:
          Suspend = other.Suspend.Clone();
          break;
        case PayloadOneofCase.Activate:
          Activate = other.Activate.Clone();
          break;
        case PayloadOneofCase.AuthenticateUser:
          AuthenticateUser = other.AuthenticateUser.Clone();
          break;
        case PayloadOneofCase.ArchestraUserToId:
          ArchestraUserToId = other.ArchestraUserToId.Clone();
          break;
        case PayloadOneofCase.AddItemBulk:
          AddItemBulk = other.AddItemBulk.Clone();
          break;
        case PayloadOneofCase.AdviseItemBulk:
          AdviseItemBulk = other.AdviseItemBulk.Clone();
          break;
        case PayloadOneofCase.RemoveItemBulk:
          RemoveItemBulk = other.RemoveItemBulk.Clone();
          break;
        case PayloadOneofCase.UnAdviseItemBulk:
          UnAdviseItemBulk = other.UnAdviseItemBulk.Clone();
          break;
        case PayloadOneofCase.SubscribeBulk:
          SubscribeBulk = other.SubscribeBulk.Clone();
          break;
        case PayloadOneofCase.UnsubscribeBulk:
          UnsubscribeBulk = other.UnsubscribeBulk.Clone();
          break;
        case PayloadOneofCase.AcknowledgeAlarm:
          AcknowledgeAlarm = other.AcknowledgeAlarm.Clone();
          break;
        case PayloadOneofCase.QueryActiveAlarms:
          QueryActiveAlarms = other.QueryActiveAlarms.Clone();
          break;
        case PayloadOneofCase.WriteBulk:
          WriteBulk = other.WriteBulk.Clone();
          break;
        case PayloadOneofCase.Write2Bulk:
          Write2Bulk = other.Write2Bulk.Clone();
          break;
        case PayloadOneofCase.WriteSecuredBulk:
          WriteSecuredBulk = other.WriteSecuredBulk.Clone();
          break;
        case PayloadOneofCase.WriteSecured2Bulk:
          WriteSecured2Bulk = other.WriteSecured2Bulk.Clone();
          break;
        case PayloadOneofCase.ReadBulk:
          ReadBulk = other.ReadBulk.Clone();
          break;
        case PayloadOneofCase.SessionState:
          SessionState = other.SessionState.Clone();
          break;
        case PayloadOneofCase.WorkerInfo:
          WorkerInfo = other.WorkerInfo.Clone();
          break;
        case PayloadOneofCase.DrainEvents:
          DrainEvents = other.DrainEvents.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxCommandReply Clone() {
      return new MxCommandReply(this);
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 1;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 2;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "kind" field.</summary>
    public const int KindFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind kind_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind Kind {
      get { return kind_; }
      set {
        kind_ = value;
      }
    }

    /// <summary>Field number for the "protocol_status" field.</summary>
    public const int ProtocolStatusFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus protocolStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus ProtocolStatus {
      get { return protocolStatus_; }
      set {
        protocolStatus_ = value;
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 5;
    private readonly static int HresultDefaultValue = 0;

    private int hresult_;
    /// <summary>
    /// HRESULT captured from MXAccess or a COM exception. This remains separate
    /// from gateway protocol status so MXAccess parity details are not hidden by
    /// transport failures.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } }
      set {
        _hasBits0 |= 1;
        hresult_ = value;
      }
    }
    /// <summary>Gets whether the "hresult" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHresult {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "hresult" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHresult() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "return_value" field.</summary>
    public const int ReturnValueFieldNumber = 6;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue returnValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue ReturnValue {
      get { return returnValue_; }
      set {
        returnValue_ = value;
      }
    }

    /// <summary>Field number for the "statuses" field.</summary>
    public const int StatusesFieldNumber = 7;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> _repeated_statuses_codec
        = pb::FieldCodec.ForMessage(58, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> statuses_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy>();
    /// <summary>
    /// Correlated per-item outcome rows. For WRITE / WRITE2 / WRITE_SECURED /
    /// WRITE_SECURED2 replies the worker holds the reply for a bounded window
    /// (default 1.5 s, MXGATEWAY_WORKER_WRITE_COMPLETION_WAIT_MS) waiting for
    /// the matching MXAccess OnWriteComplete callback and copies its status rows
    /// here, so statuses[0] carries the real MXAccess commit outcome (success OR
    /// failure) while protocol_status/hresult still describe command acceptance
    /// only. Empty statuses on a write reply means the completion did not arrive
    /// within the window — the write is unconfirmed, not failed. Correlation is
    /// best-effort per (server_handle, item_handle): MXAccess's callback carries
    /// no transaction id, so concurrent writes to the same item within the
    /// window can swap rows. The OnWriteComplete event still flows on the event
    /// stream unchanged. Bulk write kinds and all non-write kinds leave this
    /// field as before.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> Statuses {
      get { return statuses_; }
    }

    /// <summary>Field number for the "diagnostic_message" field.</summary>
    public const int DiagnosticMessageFieldNumber = 8;
    private string diagnosticMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DiagnosticMessage {
      get { return diagnosticMessage_; }
      set {
        diagnosticMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "register" field.</summary>
    public const int RegisterFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply Register {
      get { return payloadCase_ == PayloadOneofCase.Register ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Register;
      }
    }

    /// <summary>Field number for the "add_item" field.</summary>
    public const int AddItemFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply AddItem {
      get { return payloadCase_ == PayloadOneofCase.AddItem ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItem;
      }
    }

    /// <summary>Field number for the "add_item2" field.</summary>
    public const int AddItem2FieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply AddItem2 {
      get { return payloadCase_ == PayloadOneofCase.AddItem2 ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItem2;
      }
    }

    /// <summary>Field number for the "add_buffered_item" field.</summary>
    public const int AddBufferedItemFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply AddBufferedItem {
      get { return payloadCase_ == PayloadOneofCase.AddBufferedItem ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddBufferedItem;
      }
    }

    /// <summary>Field number for the "suspend" field.</summary>
    public const int SuspendFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply Suspend {
      get { return payloadCase_ == PayloadOneofCase.Suspend ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Suspend;
      }
    }

    /// <summary>Field number for the "activate" field.</summary>
    public const int ActivateFieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply Activate {
      get { return payloadCase_ == PayloadOneofCase.Activate ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Activate;
      }
    }

    /// <summary>Field number for the "authenticate_user" field.</summary>
    public const int AuthenticateUserFieldNumber = 26;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply AuthenticateUser {
      get { return payloadCase_ == PayloadOneofCase.AuthenticateUser ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AuthenticateUser;
      }
    }

    /// <summary>Field number for the "archestra_user_to_id" field.</summary>
    public const int ArchestraUserToIdFieldNumber = 27;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply ArchestraUserToId {
      get { return payloadCase_ == PayloadOneofCase.ArchestraUserToId ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ArchestraUserToId;
      }
    }

    /// <summary>Field number for the "add_item_bulk" field.</summary>
    public const int AddItemBulkFieldNumber = 28;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply AddItemBulk {
      get { return payloadCase_ == PayloadOneofCase.AddItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AddItemBulk;
      }
    }

    /// <summary>Field number for the "advise_item_bulk" field.</summary>
    public const int AdviseItemBulkFieldNumber = 29;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply AdviseItemBulk {
      get { return payloadCase_ == PayloadOneofCase.AdviseItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AdviseItemBulk;
      }
    }

    /// <summary>Field number for the "remove_item_bulk" field.</summary>
    public const int RemoveItemBulkFieldNumber = 30;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply RemoveItemBulk {
      get { return payloadCase_ == PayloadOneofCase.RemoveItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.RemoveItemBulk;
      }
    }

    /// <summary>Field number for the "un_advise_item_bulk" field.</summary>
    public const int UnAdviseItemBulkFieldNumber = 31;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply UnAdviseItemBulk {
      get { return payloadCase_ == PayloadOneofCase.UnAdviseItemBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnAdviseItemBulk;
      }
    }

    /// <summary>Field number for the "subscribe_bulk" field.</summary>
    public const int SubscribeBulkFieldNumber = 32;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply SubscribeBulk {
      get { return payloadCase_ == PayloadOneofCase.SubscribeBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SubscribeBulk;
      }
    }

    /// <summary>Field number for the "unsubscribe_bulk" field.</summary>
    public const int UnsubscribeBulkFieldNumber = 33;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply UnsubscribeBulk {
      get { return payloadCase_ == PayloadOneofCase.UnsubscribeBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.UnsubscribeBulk;
      }
    }

    /// <summary>Field number for the "acknowledge_alarm" field.</summary>
    public const int AcknowledgeAlarmFieldNumber = 34;
    /// <summary>
    /// Reply payload for BOTH MX_COMMAND_KIND_ACKNOWLEDGE_ALARM (by GUID)
    /// and MX_COMMAND_KIND_ACKNOWLEDGE_ALARM_BY_NAME. There is intentionally
    /// no by-name-specific reply case: the by-name ack carries no outcome
    /// detail beyond the native ack return code, so the worker reuses this
    /// `acknowledge_alarm` payload for both command kinds (the worker's
    /// MxAccessCommandExecutor sets `acknowledge_alarm` for the by-name arm
    /// too). Consumers must dispatch on MxCommandReply.kind, not on the
    /// payload case, to tell the two acks apart. The top-level `hresult`
    /// mirrors AcknowledgeAlarmReplyPayload.native_status and is preferred.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload AcknowledgeAlarm {
      get { return payloadCase_ == PayloadOneofCase.AcknowledgeAlarm ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.AcknowledgeAlarm;
      }
    }

    /// <summary>Field number for the "query_active_alarms" field.</summary>
    public const int QueryActiveAlarmsFieldNumber = 35;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload QueryActiveAlarms {
      get { return payloadCase_ == PayloadOneofCase.QueryActiveAlarms ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.QueryActiveAlarms;
      }
    }

    /// <summary>Field number for the "write_bulk" field.</summary>
    public const int WriteBulkFieldNumber = 36;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply WriteBulk {
      get { return payloadCase_ == PayloadOneofCase.WriteBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteBulk;
      }
    }

    /// <summary>Field number for the "write2_bulk" field.</summary>
    public const int Write2BulkFieldNumber = 37;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply Write2Bulk {
      get { return payloadCase_ == PayloadOneofCase.Write2Bulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Write2Bulk;
      }
    }

    /// <summary>Field number for the "write_secured_bulk" field.</summary>
    public const int WriteSecuredBulkFieldNumber = 38;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply WriteSecuredBulk {
      get { return payloadCase_ == PayloadOneofCase.WriteSecuredBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecuredBulk;
      }
    }

    /// <summary>Field number for the "write_secured2_bulk" field.</summary>
    public const int WriteSecured2BulkFieldNumber = 39;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply WriteSecured2Bulk {
      get { return payloadCase_ == PayloadOneofCase.WriteSecured2Bulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WriteSecured2Bulk;
      }
    }

    /// <summary>Field number for the "read_bulk" field.</summary>
    public const int ReadBulkFieldNumber = 40;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply ReadBulk {
      get { return payloadCase_ == PayloadOneofCase.ReadBulk ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ReadBulk;
      }
    }

    /// <summary>Field number for the "session_state" field.</summary>
    public const int SessionStateFieldNumber = 100;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply SessionState {
      get { return payloadCase_ == PayloadOneofCase.SessionState ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SessionState;
      }
    }

    /// <summary>Field number for the "worker_info" field.</summary>
    public const int WorkerInfoFieldNumber = 101;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply WorkerInfo {
      get { return payloadCase_ == PayloadOneofCase.WorkerInfo ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.WorkerInfo;
      }
    }

    /// <summary>Field number for the "drain_events" field.</summary>
    public const int DrainEventsFieldNumber = 102;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply DrainEvents {
      get { return payloadCase_ == PayloadOneofCase.DrainEvents ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.DrainEvents;
      }
    }

    private object payload_;
    /// <summary>Enum of possible cases for the "payload" oneof.</summary>
    public enum PayloadOneofCase {
      None = 0,
      Register = 20,
      AddItem = 21,
      AddItem2 = 22,
      AddBufferedItem = 23,
      Suspend = 24,
      Activate = 25,
      AuthenticateUser = 26,
      ArchestraUserToId = 27,
      AddItemBulk = 28,
      AdviseItemBulk = 29,
      RemoveItemBulk = 30,
      UnAdviseItemBulk = 31,
      SubscribeBulk = 32,
      UnsubscribeBulk = 33,
      AcknowledgeAlarm = 34,
      QueryActiveAlarms = 35,
      WriteBulk = 36,
      Write2Bulk = 37,
      WriteSecuredBulk = 38,
      WriteSecured2Bulk = 39,
      ReadBulk = 40,
      SessionState = 100,
      WorkerInfo = 101,
      DrainEvents = 102,
    }
    private PayloadOneofCase payloadCase_ = PayloadOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PayloadOneofCase PayloadCase {
      get { return payloadCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPayload() {
      payloadCase_ = PayloadOneofCase.None;
      payload_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxCommandReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxCommandReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (CorrelationId != other.CorrelationId) return false;
      if (Kind != other.Kind) return false;
      if (!object.Equals(ProtocolStatus, other.ProtocolStatus)) return false;
      if (Hresult != other.Hresult) return false;
      if (!object.Equals(ReturnValue, other.ReturnValue)) return false;
      if(!statuses_.Equals(other.statuses_)) return false;
      if (DiagnosticMessage != other.DiagnosticMessage) return false;
      if (!object.Equals(Register, other.Register)) return false;
      if (!object.Equals(AddItem, other.AddItem)) return false;
      if (!object.Equals(AddItem2, other.AddItem2)) return false;
      if (!object.Equals(AddBufferedItem, other.AddBufferedItem)) return false;
      if (!object.Equals(Suspend, other.Suspend)) return false;
      if (!object.Equals(Activate, other.Activate)) return false;
      if (!object.Equals(AuthenticateUser, other.AuthenticateUser)) return false;
      if (!object.Equals(ArchestraUserToId, other.ArchestraUserToId)) return false;
      if (!object.Equals(AddItemBulk, other.AddItemBulk)) return false;
      if (!object.Equals(AdviseItemBulk, other.AdviseItemBulk)) return false;
      if (!object.Equals(RemoveItemBulk, other.RemoveItemBulk)) return false;
      if (!object.Equals(UnAdviseItemBulk, other.UnAdviseItemBulk)) return false;
      if (!object.Equals(SubscribeBulk, other.SubscribeBulk)) return false;
      if (!object.Equals(UnsubscribeBulk, other.UnsubscribeBulk)) return false;
      if (!object.Equals(AcknowledgeAlarm, other.AcknowledgeAlarm)) return false;
      if (!object.Equals(QueryActiveAlarms, other.QueryActiveAlarms)) return false;
      if (!object.Equals(WriteBulk, other.WriteBulk)) return false;
      if (!object.Equals(Write2Bulk, other.Write2Bulk)) return false;
      if (!object.Equals(WriteSecuredBulk, other.WriteSecuredBulk)) return false;
      if (!object.Equals(WriteSecured2Bulk, other.WriteSecured2Bulk)) return false;
      if (!object.Equals(ReadBulk, other.ReadBulk)) return false;
      if (!object.Equals(SessionState, other.SessionState)) return false;
      if (!object.Equals(WorkerInfo, other.WorkerInfo)) return false;
      if (!object.Equals(DrainEvents, other.DrainEvents)) return false;
      if (PayloadCase != other.PayloadCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) hash ^= Kind.GetHashCode();
      if (protocolStatus_ != null) hash ^= ProtocolStatus.GetHashCode();
      if (HasHresult) hash ^= Hresult.GetHashCode();
      if (returnValue_ != null) hash ^= ReturnValue.GetHashCode();
      hash ^= statuses_.GetHashCode();
      if (DiagnosticMessage.Length != 0) hash ^= DiagnosticMessage.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Register) hash ^= Register.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItem) hash ^= AddItem.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItem2) hash ^= AddItem2.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) hash ^= AddBufferedItem.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Suspend) hash ^= Suspend.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Activate) hash ^= Activate.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) hash ^= AuthenticateUser.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) hash ^= ArchestraUserToId.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) hash ^= AddItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) hash ^= AdviseItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) hash ^= RemoveItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) hash ^= UnAdviseItemBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) hash ^= SubscribeBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) hash ^= UnsubscribeBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) hash ^= AcknowledgeAlarm.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) hash ^= QueryActiveAlarms.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteBulk) hash ^= WriteBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) hash ^= Write2Bulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) hash ^= WriteSecuredBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) hash ^= WriteSecured2Bulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ReadBulk) hash ^= ReadBulk.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SessionState) hash ^= SessionState.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.WorkerInfo) hash ^= WorkerInfo.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.DrainEvents) hash ^= DrainEvents.GetHashCode();
      hash ^= (int) payloadCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CorrelationId);
      }
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Kind);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ProtocolStatus);
      }
      if (HasHresult) {
        output.WriteRawTag(40);
        output.WriteInt32(Hresult);
      }
      if (returnValue_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ReturnValue);
      }
      statuses_.WriteTo(output, _repeated_statuses_codec);
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(DiagnosticMessage);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Register);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        output.WriteRawTag(226, 1);
        output.WriteMessage(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        output.WriteRawTag(234, 1);
        output.WriteMessage(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        output.WriteRawTag(138, 2);
        output.WriteMessage(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) {
        output.WriteRawTag(146, 2);
        output.WriteMessage(AcknowledgeAlarm);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) {
        output.WriteRawTag(154, 2);
        output.WriteMessage(QueryActiveAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        output.WriteRawTag(162, 2);
        output.WriteMessage(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        output.WriteRawTag(170, 2);
        output.WriteMessage(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        output.WriteRawTag(178, 2);
        output.WriteMessage(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        output.WriteRawTag(186, 2);
        output.WriteMessage(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        output.WriteRawTag(194, 2);
        output.WriteMessage(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SessionState) {
        output.WriteRawTag(162, 6);
        output.WriteMessage(SessionState);
      }
      if (payloadCase_ == PayloadOneofCase.WorkerInfo) {
        output.WriteRawTag(170, 6);
        output.WriteMessage(WorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        output.WriteRawTag(178, 6);
        output.WriteMessage(DrainEvents);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CorrelationId);
      }
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Kind);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(ProtocolStatus);
      }
      if (HasHresult) {
        output.WriteRawTag(40);
        output.WriteInt32(Hresult);
      }
      if (returnValue_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(ReturnValue);
      }
      statuses_.WriteTo(ref output, _repeated_statuses_codec);
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(DiagnosticMessage);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(Register);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        output.WriteRawTag(210, 1);
        output.WriteMessage(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        output.WriteRawTag(218, 1);
        output.WriteMessage(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        output.WriteRawTag(226, 1);
        output.WriteMessage(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        output.WriteRawTag(234, 1);
        output.WriteMessage(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        output.WriteRawTag(242, 1);
        output.WriteMessage(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        output.WriteRawTag(250, 1);
        output.WriteMessage(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        output.WriteRawTag(130, 2);
        output.WriteMessage(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        output.WriteRawTag(138, 2);
        output.WriteMessage(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) {
        output.WriteRawTag(146, 2);
        output.WriteMessage(AcknowledgeAlarm);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) {
        output.WriteRawTag(154, 2);
        output.WriteMessage(QueryActiveAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        output.WriteRawTag(162, 2);
        output.WriteMessage(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        output.WriteRawTag(170, 2);
        output.WriteMessage(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        output.WriteRawTag(178, 2);
        output.WriteMessage(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        output.WriteRawTag(186, 2);
        output.WriteMessage(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        output.WriteRawTag(194, 2);
        output.WriteMessage(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SessionState) {
        output.WriteRawTag(162, 6);
        output.WriteMessage(SessionState);
      }
      if (payloadCase_ == PayloadOneofCase.WorkerInfo) {
        output.WriteRawTag(170, 6);
        output.WriteMessage(WorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        output.WriteRawTag(178, 6);
        output.WriteMessage(DrainEvents);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Kind);
      }
      if (protocolStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProtocolStatus);
      }
      if (HasHresult) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      if (returnValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ReturnValue);
      }
      size += statuses_.CalculateSize(_repeated_statuses_codec);
      if (DiagnosticMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DiagnosticMessage);
      }
      if (payloadCase_ == PayloadOneofCase.Register) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Register);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddItem);
      }
      if (payloadCase_ == PayloadOneofCase.AddItem2) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddItem2);
      }
      if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddBufferedItem);
      }
      if (payloadCase_ == PayloadOneofCase.Suspend) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Suspend);
      }
      if (payloadCase_ == PayloadOneofCase.Activate) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Activate);
      }
      if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AuthenticateUser);
      }
      if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ArchestraUserToId);
      }
      if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AddItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(RemoveItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnAdviseItemBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(UnsubscribeBulk);
      }
      if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(AcknowledgeAlarm);
      }
      if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(QueryActiveAlarms);
      }
      if (payloadCase_ == PayloadOneofCase.WriteBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteBulk);
      }
      if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(Write2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecuredBulk);
      }
      if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WriteSecured2Bulk);
      }
      if (payloadCase_ == PayloadOneofCase.ReadBulk) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ReadBulk);
      }
      if (payloadCase_ == PayloadOneofCase.SessionState) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SessionState);
      }
      if (payloadCase_ == PayloadOneofCase.WorkerInfo) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(WorkerInfo);
      }
      if (payloadCase_ == PayloadOneofCase.DrainEvents) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(DrainEvents);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxCommandReply other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      if (other.Kind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind.Unspecified) {
        Kind = other.Kind;
      }
      if (other.protocolStatus_ != null) {
        if (protocolStatus_ == null) {
          ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        ProtocolStatus.MergeFrom(other.ProtocolStatus);
      }
      if (other.HasHresult) {
        Hresult = other.Hresult;
      }
      if (other.returnValue_ != null) {
        if (returnValue_ == null) {
          ReturnValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        ReturnValue.MergeFrom(other.ReturnValue);
      }
      statuses_.Add(other.statuses_);
      if (other.DiagnosticMessage.Length != 0) {
        DiagnosticMessage = other.DiagnosticMessage;
      }
      switch (other.PayloadCase) {
        case PayloadOneofCase.Register:
          if (Register == null) {
            Register = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply();
          }
          Register.MergeFrom(other.Register);
          break;
        case PayloadOneofCase.AddItem:
          if (AddItem == null) {
            AddItem = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply();
          }
          AddItem.MergeFrom(other.AddItem);
          break;
        case PayloadOneofCase.AddItem2:
          if (AddItem2 == null) {
            AddItem2 = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply();
          }
          AddItem2.MergeFrom(other.AddItem2);
          break;
        case PayloadOneofCase.AddBufferedItem:
          if (AddBufferedItem == null) {
            AddBufferedItem = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply();
          }
          AddBufferedItem.MergeFrom(other.AddBufferedItem);
          break;
        case PayloadOneofCase.Suspend:
          if (Suspend == null) {
            Suspend = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply();
          }
          Suspend.MergeFrom(other.Suspend);
          break;
        case PayloadOneofCase.Activate:
          if (Activate == null) {
            Activate = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply();
          }
          Activate.MergeFrom(other.Activate);
          break;
        case PayloadOneofCase.AuthenticateUser:
          if (AuthenticateUser == null) {
            AuthenticateUser = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply();
          }
          AuthenticateUser.MergeFrom(other.AuthenticateUser);
          break;
        case PayloadOneofCase.ArchestraUserToId:
          if (ArchestraUserToId == null) {
            ArchestraUserToId = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply();
          }
          ArchestraUserToId.MergeFrom(other.ArchestraUserToId);
          break;
        case PayloadOneofCase.AddItemBulk:
          if (AddItemBulk == null) {
            AddItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          AddItemBulk.MergeFrom(other.AddItemBulk);
          break;
        case PayloadOneofCase.AdviseItemBulk:
          if (AdviseItemBulk == null) {
            AdviseItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          AdviseItemBulk.MergeFrom(other.AdviseItemBulk);
          break;
        case PayloadOneofCase.RemoveItemBulk:
          if (RemoveItemBulk == null) {
            RemoveItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          RemoveItemBulk.MergeFrom(other.RemoveItemBulk);
          break;
        case PayloadOneofCase.UnAdviseItemBulk:
          if (UnAdviseItemBulk == null) {
            UnAdviseItemBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          UnAdviseItemBulk.MergeFrom(other.UnAdviseItemBulk);
          break;
        case PayloadOneofCase.SubscribeBulk:
          if (SubscribeBulk == null) {
            SubscribeBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          SubscribeBulk.MergeFrom(other.SubscribeBulk);
          break;
        case PayloadOneofCase.UnsubscribeBulk:
          if (UnsubscribeBulk == null) {
            UnsubscribeBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
          }
          UnsubscribeBulk.MergeFrom(other.UnsubscribeBulk);
          break;
        case PayloadOneofCase.AcknowledgeAlarm:
          if (AcknowledgeAlarm == null) {
            AcknowledgeAlarm = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload();
          }
          AcknowledgeAlarm.MergeFrom(other.AcknowledgeAlarm);
          break;
        case PayloadOneofCase.QueryActiveAlarms:
          if (QueryActiveAlarms == null) {
            QueryActiveAlarms = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload();
          }
          QueryActiveAlarms.MergeFrom(other.QueryActiveAlarms);
          break;
        case PayloadOneofCase.WriteBulk:
          if (WriteBulk == null) {
            WriteBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
          }
          WriteBulk.MergeFrom(other.WriteBulk);
          break;
        case PayloadOneofCase.Write2Bulk:
          if (Write2Bulk == null) {
            Write2Bulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
          }
          Write2Bulk.MergeFrom(other.Write2Bulk);
          break;
        case PayloadOneofCase.WriteSecuredBulk:
          if (WriteSecuredBulk == null) {
            WriteSecuredBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
          }
          WriteSecuredBulk.MergeFrom(other.WriteSecuredBulk);
          break;
        case PayloadOneofCase.WriteSecured2Bulk:
          if (WriteSecured2Bulk == null) {
            WriteSecured2Bulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
          }
          WriteSecured2Bulk.MergeFrom(other.WriteSecured2Bulk);
          break;
        case PayloadOneofCase.ReadBulk:
          if (ReadBulk == null) {
            ReadBulk = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply();
          }
          ReadBulk.MergeFrom(other.ReadBulk);
          break;
        case PayloadOneofCase.SessionState:
          if (SessionState == null) {
            SessionState = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply();
          }
          SessionState.MergeFrom(other.SessionState);
          break;
        case PayloadOneofCase.WorkerInfo:
          if (WorkerInfo == null) {
            WorkerInfo = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply();
          }
          WorkerInfo.MergeFrom(other.WorkerInfo);
          break;
        case PayloadOneofCase.DrainEvents:
          if (DrainEvents == null) {
            DrainEvents = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply();
          }
          DrainEvents.MergeFrom(other.DrainEvents);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            CorrelationId = input.ReadString();
            break;
          }
          case 24: {
            Kind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind) input.ReadEnum();
            break;
          }
          case 34: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 40: {
            Hresult = input.ReadInt32();
            break;
          }
          case 50: {
            if (returnValue_ == null) {
              ReturnValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(ReturnValue);
            break;
          }
          case 58: {
            statuses_.AddEntriesFrom(input, _repeated_statuses_codec);
            break;
          }
          case 66: {
            DiagnosticMessage = input.ReadString();
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply();
            if (payloadCase_ == PayloadOneofCase.Register) {
              subBuilder.MergeFrom(Register);
            }
            input.ReadMessage(subBuilder);
            Register = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply();
            if (payloadCase_ == PayloadOneofCase.AddItem) {
              subBuilder.MergeFrom(AddItem);
            }
            input.ReadMessage(subBuilder);
            AddItem = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply();
            if (payloadCase_ == PayloadOneofCase.AddItem2) {
              subBuilder.MergeFrom(AddItem2);
            }
            input.ReadMessage(subBuilder);
            AddItem2 = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply();
            if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
              subBuilder.MergeFrom(AddBufferedItem);
            }
            input.ReadMessage(subBuilder);
            AddBufferedItem = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply();
            if (payloadCase_ == PayloadOneofCase.Suspend) {
              subBuilder.MergeFrom(Suspend);
            }
            input.ReadMessage(subBuilder);
            Suspend = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply();
            if (payloadCase_ == PayloadOneofCase.Activate) {
              subBuilder.MergeFrom(Activate);
            }
            input.ReadMessage(subBuilder);
            Activate = subBuilder;
            break;
          }
          case 210: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply();
            if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
              subBuilder.MergeFrom(AuthenticateUser);
            }
            input.ReadMessage(subBuilder);
            AuthenticateUser = subBuilder;
            break;
          }
          case 218: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply();
            if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
              subBuilder.MergeFrom(ArchestraUserToId);
            }
            input.ReadMessage(subBuilder);
            ArchestraUserToId = subBuilder;
            break;
          }
          case 226: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
              subBuilder.MergeFrom(AddItemBulk);
            }
            input.ReadMessage(subBuilder);
            AddItemBulk = subBuilder;
            break;
          }
          case 234: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
              subBuilder.MergeFrom(AdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            AdviseItemBulk = subBuilder;
            break;
          }
          case 242: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
              subBuilder.MergeFrom(RemoveItemBulk);
            }
            input.ReadMessage(subBuilder);
            RemoveItemBulk = subBuilder;
            break;
          }
          case 250: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
              subBuilder.MergeFrom(UnAdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            UnAdviseItemBulk = subBuilder;
            break;
          }
          case 258: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
              subBuilder.MergeFrom(SubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            SubscribeBulk = subBuilder;
            break;
          }
          case 266: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
              subBuilder.MergeFrom(UnsubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeBulk = subBuilder;
            break;
          }
          case 274: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) {
              subBuilder.MergeFrom(AcknowledgeAlarm);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarm = subBuilder;
            break;
          }
          case 282: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload();
            if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) {
              subBuilder.MergeFrom(QueryActiveAlarms);
            }
            input.ReadMessage(subBuilder);
            QueryActiveAlarms = subBuilder;
            break;
          }
          case 290: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteBulk) {
              subBuilder.MergeFrom(WriteBulk);
            }
            input.ReadMessage(subBuilder);
            WriteBulk = subBuilder;
            break;
          }
          case 298: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
              subBuilder.MergeFrom(Write2Bulk);
            }
            input.ReadMessage(subBuilder);
            Write2Bulk = subBuilder;
            break;
          }
          case 306: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
              subBuilder.MergeFrom(WriteSecuredBulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecuredBulk = subBuilder;
            break;
          }
          case 314: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
              subBuilder.MergeFrom(WriteSecured2Bulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2Bulk = subBuilder;
            break;
          }
          case 322: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply();
            if (payloadCase_ == PayloadOneofCase.ReadBulk) {
              subBuilder.MergeFrom(ReadBulk);
            }
            input.ReadMessage(subBuilder);
            ReadBulk = subBuilder;
            break;
          }
          case 802: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply();
            if (payloadCase_ == PayloadOneofCase.SessionState) {
              subBuilder.MergeFrom(SessionState);
            }
            input.ReadMessage(subBuilder);
            SessionState = subBuilder;
            break;
          }
          case 810: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply();
            if (payloadCase_ == PayloadOneofCase.WorkerInfo) {
              subBuilder.MergeFrom(WorkerInfo);
            }
            input.ReadMessage(subBuilder);
            WorkerInfo = subBuilder;
            break;
          }
          case 818: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply();
            if (payloadCase_ == PayloadOneofCase.DrainEvents) {
              subBuilder.MergeFrom(DrainEvents);
            }
            input.ReadMessage(subBuilder);
            DrainEvents = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            CorrelationId = input.ReadString();
            break;
          }
          case 24: {
            Kind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxCommandKind) input.ReadEnum();
            break;
          }
          case 34: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 40: {
            Hresult = input.ReadInt32();
            break;
          }
          case 50: {
            if (returnValue_ == null) {
              ReturnValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(ReturnValue);
            break;
          }
          case 58: {
            statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec);
            break;
          }
          case 66: {
            DiagnosticMessage = input.ReadString();
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RegisterReply();
            if (payloadCase_ == PayloadOneofCase.Register) {
              subBuilder.MergeFrom(Register);
            }
            input.ReadMessage(subBuilder);
            Register = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItemReply();
            if (payloadCase_ == PayloadOneofCase.AddItem) {
              subBuilder.MergeFrom(AddItem);
            }
            input.ReadMessage(subBuilder);
            AddItem = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddItem2Reply();
            if (payloadCase_ == PayloadOneofCase.AddItem2) {
              subBuilder.MergeFrom(AddItem2);
            }
            input.ReadMessage(subBuilder);
            AddItem2 = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AddBufferedItemReply();
            if (payloadCase_ == PayloadOneofCase.AddBufferedItem) {
              subBuilder.MergeFrom(AddBufferedItem);
            }
            input.ReadMessage(subBuilder);
            AddBufferedItem = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SuspendReply();
            if (payloadCase_ == PayloadOneofCase.Suspend) {
              subBuilder.MergeFrom(Suspend);
            }
            input.ReadMessage(subBuilder);
            Suspend = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActivateReply();
            if (payloadCase_ == PayloadOneofCase.Activate) {
              subBuilder.MergeFrom(Activate);
            }
            input.ReadMessage(subBuilder);
            Activate = subBuilder;
            break;
          }
          case 210: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AuthenticateUserReply();
            if (payloadCase_ == PayloadOneofCase.AuthenticateUser) {
              subBuilder.MergeFrom(AuthenticateUser);
            }
            input.ReadMessage(subBuilder);
            AuthenticateUser = subBuilder;
            break;
          }
          case 218: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ArchestrAUserToIdReply();
            if (payloadCase_ == PayloadOneofCase.ArchestraUserToId) {
              subBuilder.MergeFrom(ArchestraUserToId);
            }
            input.ReadMessage(subBuilder);
            ArchestraUserToId = subBuilder;
            break;
          }
          case 226: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.AddItemBulk) {
              subBuilder.MergeFrom(AddItemBulk);
            }
            input.ReadMessage(subBuilder);
            AddItemBulk = subBuilder;
            break;
          }
          case 234: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.AdviseItemBulk) {
              subBuilder.MergeFrom(AdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            AdviseItemBulk = subBuilder;
            break;
          }
          case 242: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.RemoveItemBulk) {
              subBuilder.MergeFrom(RemoveItemBulk);
            }
            input.ReadMessage(subBuilder);
            RemoveItemBulk = subBuilder;
            break;
          }
          case 250: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.UnAdviseItemBulk) {
              subBuilder.MergeFrom(UnAdviseItemBulk);
            }
            input.ReadMessage(subBuilder);
            UnAdviseItemBulk = subBuilder;
            break;
          }
          case 258: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.SubscribeBulk) {
              subBuilder.MergeFrom(SubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            SubscribeBulk = subBuilder;
            break;
          }
          case 266: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkSubscribeReply();
            if (payloadCase_ == PayloadOneofCase.UnsubscribeBulk) {
              subBuilder.MergeFrom(UnsubscribeBulk);
            }
            input.ReadMessage(subBuilder);
            UnsubscribeBulk = subBuilder;
            break;
          }
          case 274: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AcknowledgeAlarmReplyPayload();
            if (payloadCase_ == PayloadOneofCase.AcknowledgeAlarm) {
              subBuilder.MergeFrom(AcknowledgeAlarm);
            }
            input.ReadMessage(subBuilder);
            AcknowledgeAlarm = subBuilder;
            break;
          }
          case 282: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.QueryActiveAlarmsReplyPayload();
            if (payloadCase_ == PayloadOneofCase.QueryActiveAlarms) {
              subBuilder.MergeFrom(QueryActiveAlarms);
            }
            input.ReadMessage(subBuilder);
            QueryActiveAlarms = subBuilder;
            break;
          }
          case 290: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteBulk) {
              subBuilder.MergeFrom(WriteBulk);
            }
            input.ReadMessage(subBuilder);
            WriteBulk = subBuilder;
            break;
          }
          case 298: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.Write2Bulk) {
              subBuilder.MergeFrom(Write2Bulk);
            }
            input.ReadMessage(subBuilder);
            Write2Bulk = subBuilder;
            break;
          }
          case 306: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteSecuredBulk) {
              subBuilder.MergeFrom(WriteSecuredBulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecuredBulk = subBuilder;
            break;
          }
          case 314: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteReply();
            if (payloadCase_ == PayloadOneofCase.WriteSecured2Bulk) {
              subBuilder.MergeFrom(WriteSecured2Bulk);
            }
            input.ReadMessage(subBuilder);
            WriteSecured2Bulk = subBuilder;
            break;
          }
          case 322: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadReply();
            if (payloadCase_ == PayloadOneofCase.ReadBulk) {
              subBuilder.MergeFrom(ReadBulk);
            }
            input.ReadMessage(subBuilder);
            ReadBulk = subBuilder;
            break;
          }
          case 802: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionStateReply();
            if (payloadCase_ == PayloadOneofCase.SessionState) {
              subBuilder.MergeFrom(SessionState);
            }
            input.ReadMessage(subBuilder);
            SessionState = subBuilder;
            break;
          }
          case 810: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.WorkerInfoReply();
            if (payloadCase_ == PayloadOneofCase.WorkerInfo) {
              subBuilder.MergeFrom(WorkerInfo);
            }
            input.ReadMessage(subBuilder);
            WorkerInfo = subBuilder;
            break;
          }
          case 818: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DrainEventsReply();
            if (payloadCase_ == PayloadOneofCase.DrainEvents) {
              subBuilder.MergeFrom(DrainEvents);
            }
            input.ReadMessage(subBuilder);
            DrainEvents = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RegisterReply : pb::IMessage<RegisterReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RegisterReply> _parser = new pb::MessageParser<RegisterReply>(() => new RegisterReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RegisterReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[54]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterReply(RegisterReply other) : this() {
      serverHandle_ = other.serverHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RegisterReply Clone() {
      return new RegisterReply(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RegisterReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RegisterReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RegisterReply other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddItemReply : pb::IMessage<AddItemReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddItemReply> _parser = new pb::MessageParser<AddItemReply>(() => new AddItemReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddItemReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[55]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemReply(AddItemReply other) : this() {
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItemReply Clone() {
      return new AddItemReply(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddItemReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddItemReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddItemReply other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddItem2Reply : pb::IMessage<AddItem2Reply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddItem2Reply> _parser = new pb::MessageParser<AddItem2Reply>(() => new AddItem2Reply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddItem2Reply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[56]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Reply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Reply(AddItem2Reply other) : this() {
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddItem2Reply Clone() {
      return new AddItem2Reply(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddItem2Reply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddItem2Reply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddItem2Reply other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AddBufferedItemReply : pb::IMessage<AddBufferedItemReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AddBufferedItemReply> _parser = new pb::MessageParser<AddBufferedItemReply>(() => new AddBufferedItemReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AddBufferedItemReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[57]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemReply(AddBufferedItemReply other) : this() {
      itemHandle_ = other.itemHandle_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AddBufferedItemReply Clone() {
      return new AddBufferedItemReply(this);
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 1;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AddBufferedItemReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AddBufferedItemReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ItemHandle != other.ItemHandle) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ItemHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ItemHandle);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AddBufferedItemReply other) {
      if (other == null) {
        return;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ItemHandle = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SuspendReply : pb::IMessage<SuspendReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SuspendReply> _parser = new pb::MessageParser<SuspendReply>(() => new SuspendReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SuspendReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[58]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendReply(SuspendReply other) : this() {
      status_ = other.status_ != null ? other.status_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SuspendReply Clone() {
      return new SuspendReply(this);
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy status_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SuspendReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SuspendReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Status, other.Status)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (status_ != null) hash ^= Status.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (status_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Status);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SuspendReply other) {
      if (other == null) {
        return;
      }
      if (other.status_ != null) {
        if (status_ == null) {
          Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
        }
        Status.MergeFrom(other.Status);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ActivateReply : pb::IMessage<ActivateReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ActivateReply> _parser = new pb::MessageParser<ActivateReply>(() => new ActivateReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ActivateReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[59]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateReply(ActivateReply other) : this() {
      status_ = other.status_ != null ? other.status_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActivateReply Clone() {
      return new ActivateReply(this);
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy status_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ActivateReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ActivateReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Status, other.Status)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (status_ != null) hash ^= Status.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (status_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Status);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (status_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Status);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ActivateReply other) {
      if (other == null) {
        return;
      }
      if (other.status_ != null) {
        if (status_ == null) {
          Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
        }
        Status.MergeFrom(other.Status);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AuthenticateUserReply : pb::IMessage<AuthenticateUserReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AuthenticateUserReply> _parser = new pb::MessageParser<AuthenticateUserReply>(() => new AuthenticateUserReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AuthenticateUserReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[60]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserReply(AuthenticateUserReply other) : this() {
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AuthenticateUserReply Clone() {
      return new AuthenticateUserReply(this);
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 1;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AuthenticateUserReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AuthenticateUserReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (UserId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (UserId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AuthenticateUserReply other) {
      if (other == null) {
        return;
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ArchestrAUserToIdReply : pb::IMessage<ArchestrAUserToIdReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ArchestrAUserToIdReply> _parser = new pb::MessageParser<ArchestrAUserToIdReply>(() => new ArchestrAUserToIdReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ArchestrAUserToIdReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[61]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdReply(ArchestrAUserToIdReply other) : this() {
      userId_ = other.userId_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ArchestrAUserToIdReply Clone() {
      return new ArchestrAUserToIdReply(this);
    }

    /// <summary>Field number for the "user_id" field.</summary>
    public const int UserIdFieldNumber = 1;
    private int userId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int UserId {
      get { return userId_; }
      set {
        userId_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ArchestrAUserToIdReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ArchestrAUserToIdReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (UserId != other.UserId) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (UserId != 0) hash ^= UserId.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (UserId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (UserId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(UserId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (UserId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(UserId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ArchestrAUserToIdReply other) {
      if (other == null) {
        return;
      }
      if (other.UserId != 0) {
        UserId = other.UserId;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            UserId = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SubscribeResult : pb::IMessage<SubscribeResult>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SubscribeResult> _parser = new pb::MessageParser<SubscribeResult>(() => new SubscribeResult());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SubscribeResult> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[62]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeResult() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeResult(SubscribeResult other) : this() {
      serverHandle_ = other.serverHandle_;
      tagAddress_ = other.tagAddress_;
      itemHandle_ = other.itemHandle_;
      wasSuccessful_ = other.wasSuccessful_;
      errorMessage_ = other.errorMessage_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SubscribeResult Clone() {
      return new SubscribeResult(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "tag_address" field.</summary>
    public const int TagAddressFieldNumber = 2;
    private string tagAddress_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TagAddress {
      get { return tagAddress_; }
      set {
        tagAddress_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 3;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "was_successful" field.</summary>
    public const int WasSuccessfulFieldNumber = 4;
    private bool wasSuccessful_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool WasSuccessful {
      get { return wasSuccessful_; }
      set {
        wasSuccessful_ = value;
      }
    }

    /// <summary>Field number for the "error_message" field.</summary>
    public const int ErrorMessageFieldNumber = 5;
    private string errorMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ErrorMessage {
      get { return errorMessage_; }
      set {
        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SubscribeResult);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SubscribeResult other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (TagAddress != other.TagAddress) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (WasSuccessful != other.WasSuccessful) return false;
      if (ErrorMessage != other.ErrorMessage) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (TagAddress.Length != 0) hash ^= TagAddress.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (WasSuccessful != false) hash ^= WasSuccessful.GetHashCode();
      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TagAddress);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(32);
        output.WriteBool(WasSuccessful);
      }
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TagAddress);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(32);
        output.WriteBool(WasSuccessful);
      }
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TagAddress);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (WasSuccessful != false) {
        size += 1 + 1;
      }
      if (ErrorMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SubscribeResult other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.TagAddress.Length != 0) {
        TagAddress = other.TagAddress;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.WasSuccessful != false) {
        WasSuccessful = other.WasSuccessful;
      }
      if (other.ErrorMessage.Length != 0) {
        ErrorMessage = other.ErrorMessage;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            TagAddress = input.ReadString();
            break;
          }
          case 24: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 32: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 42: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            TagAddress = input.ReadString();
            break;
          }
          case 24: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 32: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 42: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BulkSubscribeReply : pb::IMessage<BulkSubscribeReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BulkSubscribeReply> _parser = new pb::MessageParser<BulkSubscribeReply>(() => new BulkSubscribeReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BulkSubscribeReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[63]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkSubscribeReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkSubscribeReply(BulkSubscribeReply other) : this() {
      results_ = other.results_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkSubscribeReply Clone() {
      return new BulkSubscribeReply(this);
    }

    /// <summary>Field number for the "results" field.</summary>
    public const int ResultsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult> _repeated_results_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult> results_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.SubscribeResult> Results {
      get { return results_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BulkSubscribeReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BulkSubscribeReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!results_.Equals(other.results_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= results_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      results_.WriteTo(output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      results_.WriteTo(ref output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += results_.CalculateSize(_repeated_results_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BulkSubscribeReply other) {
      if (other == null) {
        return;
      }
      results_.Add(other.results_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            results_.AddEntriesFrom(input, _repeated_results_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            results_.AddEntriesFrom(ref input, _repeated_results_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Per-item result for the four bulk write families. `item_handle` mirrors the
  /// request entry's item_handle so callers can correlate inputs to outputs even
  /// when the gateway's per-entry `IConstraintEnforcer.CheckWriteHandleAsync`
  /// filter (see `MxAccessGatewayService.ReplaceWriteBulkEntries` and
  /// `docs/Authorization.md`) dropped some entries before reaching the worker.
  /// Per-item failures populate `error_message` + `hresult` and never raise —
  /// callers iterate and inspect each entry.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BulkWriteResult : pb::IMessage<BulkWriteResult>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BulkWriteResult> _parser = new pb::MessageParser<BulkWriteResult>(() => new BulkWriteResult());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BulkWriteResult> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[64]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteResult() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteResult(BulkWriteResult other) : this() {
      _hasBits0 = other._hasBits0;
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      wasSuccessful_ = other.wasSuccessful_;
      hresult_ = other.hresult_;
      statuses_ = other.statuses_.Clone();
      errorMessage_ = other.errorMessage_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteResult Clone() {
      return new BulkWriteResult(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 2;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "was_successful" field.</summary>
    public const int WasSuccessfulFieldNumber = 3;
    private bool wasSuccessful_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool WasSuccessful {
      get { return wasSuccessful_; }
      set {
        wasSuccessful_ = value;
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 4;
    private readonly static int HresultDefaultValue = 0;

    private int hresult_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } }
      set {
        _hasBits0 |= 1;
        hresult_ = value;
      }
    }
    /// <summary>Gets whether the "hresult" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHresult {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "hresult" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHresult() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "statuses" field.</summary>
    public const int StatusesFieldNumber = 5;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> _repeated_statuses_codec
        = pb::FieldCodec.ForMessage(42, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> statuses_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> Statuses {
      get { return statuses_; }
    }

    /// <summary>Field number for the "error_message" field.</summary>
    public const int ErrorMessageFieldNumber = 6;
    private string errorMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ErrorMessage {
      get { return errorMessage_; }
      set {
        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BulkWriteResult);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BulkWriteResult other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (WasSuccessful != other.WasSuccessful) return false;
      if (Hresult != other.Hresult) return false;
      if(!statuses_.Equals(other.statuses_)) return false;
      if (ErrorMessage != other.ErrorMessage) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (WasSuccessful != false) hash ^= WasSuccessful.GetHashCode();
      if (HasHresult) hash ^= Hresult.GetHashCode();
      hash ^= statuses_.GetHashCode();
      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(24);
        output.WriteBool(WasSuccessful);
      }
      if (HasHresult) {
        output.WriteRawTag(32);
        output.WriteInt32(Hresult);
      }
      statuses_.WriteTo(output, _repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(16);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(24);
        output.WriteBool(WasSuccessful);
      }
      if (HasHresult) {
        output.WriteRawTag(32);
        output.WriteInt32(Hresult);
      }
      statuses_.WriteTo(ref output, _repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (WasSuccessful != false) {
        size += 1 + 1;
      }
      if (HasHresult) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      size += statuses_.CalculateSize(_repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BulkWriteResult other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.WasSuccessful != false) {
        WasSuccessful = other.WasSuccessful;
      }
      if (other.HasHresult) {
        Hresult = other.Hresult;
      }
      statuses_.Add(other.statuses_);
      if (other.ErrorMessage.Length != 0) {
        ErrorMessage = other.ErrorMessage;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 32: {
            Hresult = input.ReadInt32();
            break;
          }
          case 42: {
            statuses_.AddEntriesFrom(input, _repeated_statuses_codec);
            break;
          }
          case 50: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 16: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 24: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 32: {
            Hresult = input.ReadInt32();
            break;
          }
          case 42: {
            statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec);
            break;
          }
          case 50: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BulkWriteReply : pb::IMessage<BulkWriteReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BulkWriteReply> _parser = new pb::MessageParser<BulkWriteReply>(() => new BulkWriteReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BulkWriteReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[65]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteReply(BulkWriteReply other) : this() {
      results_ = other.results_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkWriteReply Clone() {
      return new BulkWriteReply(this);
    }

    /// <summary>Field number for the "results" field.</summary>
    public const int ResultsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult> _repeated_results_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult> results_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkWriteResult> Results {
      get { return results_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BulkWriteReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BulkWriteReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!results_.Equals(other.results_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= results_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      results_.WriteTo(output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      results_.WriteTo(ref output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += results_.CalculateSize(_repeated_results_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BulkWriteReply other) {
      if (other == null) {
        return;
      }
      results_.Add(other.results_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            results_.AddEntriesFrom(input, _repeated_results_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            results_.AddEntriesFrom(ref input, _repeated_results_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Per-tag result for ReadBulk. `was_cached` is true when the value came from
  /// an existing live subscription's last OnDataChange (the worker did not touch
  /// the subscription); false when the worker took the AddItem + Advise + wait +
  /// UnAdvise + RemoveItem snapshot lifecycle itself.
  ///
  /// On `was_successful = true`, `value`, `quality`, `source_timestamp`, and
  /// `statuses` carry the read data (from the cached subscription or the snapshot
  /// lifecycle, depending on `was_cached`) and `error_message` is empty. On
  /// `was_successful = false`, only `server_handle`, `tag_address`, `item_handle`
  /// (when allocated), `was_cached`, and `error_message` are populated; `value`,
  /// `quality`, `source_timestamp`, and `statuses` are left at their proto3
  /// defaults (null / 0 / null / empty) and must not be read as data — they are
  /// wire-indistinguishable from "value is null with quality bad" data and serve
  /// only as absent markers. ReadBulk has no `hresult` field by design (its
  /// outcomes are timeout / cache / lifecycle states, not MXAccess COM return
  /// codes — see `docs/DesignDecisions.md` "Bulk Command Family"). Per-tag
  /// failures populate `error_message` and never raise — callers iterate and
  /// inspect each entry.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BulkReadResult : pb::IMessage<BulkReadResult>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BulkReadResult> _parser = new pb::MessageParser<BulkReadResult>(() => new BulkReadResult());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BulkReadResult> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[66]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadResult() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadResult(BulkReadResult other) : this() {
      serverHandle_ = other.serverHandle_;
      tagAddress_ = other.tagAddress_;
      itemHandle_ = other.itemHandle_;
      wasSuccessful_ = other.wasSuccessful_;
      wasCached_ = other.wasCached_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      quality_ = other.quality_;
      sourceTimestamp_ = other.sourceTimestamp_ != null ? other.sourceTimestamp_.Clone() : null;
      statuses_ = other.statuses_.Clone();
      errorMessage_ = other.errorMessage_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadResult Clone() {
      return new BulkReadResult(this);
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 1;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "tag_address" field.</summary>
    public const int TagAddressFieldNumber = 2;
    private string tagAddress_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string TagAddress {
      get { return tagAddress_; }
      set {
        tagAddress_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 3;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "was_successful" field.</summary>
    public const int WasSuccessfulFieldNumber = 4;
    private bool wasSuccessful_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool WasSuccessful {
      get { return wasSuccessful_; }
      set {
        wasSuccessful_ = value;
      }
    }

    /// <summary>Field number for the "was_cached" field.</summary>
    public const int WasCachedFieldNumber = 5;
    private bool wasCached_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool WasCached {
      get { return wasCached_; }
      set {
        wasCached_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 6;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "quality" field.</summary>
    public const int QualityFieldNumber = 7;
    private int quality_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Quality {
      get { return quality_; }
      set {
        quality_ = value;
      }
    }

    /// <summary>Field number for the "source_timestamp" field.</summary>
    public const int SourceTimestampFieldNumber = 8;
    private global::Google.Protobuf.WellKnownTypes.Timestamp sourceTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp SourceTimestamp {
      get { return sourceTimestamp_; }
      set {
        sourceTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "statuses" field.</summary>
    public const int StatusesFieldNumber = 9;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> _repeated_statuses_codec
        = pb::FieldCodec.ForMessage(74, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> statuses_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> Statuses {
      get { return statuses_; }
    }

    /// <summary>Field number for the "error_message" field.</summary>
    public const int ErrorMessageFieldNumber = 10;
    private string errorMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ErrorMessage {
      get { return errorMessage_; }
      set {
        errorMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BulkReadResult);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BulkReadResult other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ServerHandle != other.ServerHandle) return false;
      if (TagAddress != other.TagAddress) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (WasSuccessful != other.WasSuccessful) return false;
      if (WasCached != other.WasCached) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (Quality != other.Quality) return false;
      if (!object.Equals(SourceTimestamp, other.SourceTimestamp)) return false;
      if(!statuses_.Equals(other.statuses_)) return false;
      if (ErrorMessage != other.ErrorMessage) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (TagAddress.Length != 0) hash ^= TagAddress.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (WasSuccessful != false) hash ^= WasSuccessful.GetHashCode();
      if (WasCached != false) hash ^= WasCached.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (Quality != 0) hash ^= Quality.GetHashCode();
      if (sourceTimestamp_ != null) hash ^= SourceTimestamp.GetHashCode();
      hash ^= statuses_.GetHashCode();
      if (ErrorMessage.Length != 0) hash ^= ErrorMessage.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TagAddress);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(32);
        output.WriteBool(WasSuccessful);
      }
      if (WasCached != false) {
        output.WriteRawTag(40);
        output.WriteBool(WasCached);
      }
      if (value_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Value);
      }
      if (Quality != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(Quality);
      }
      if (sourceTimestamp_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(SourceTimestamp);
      }
      statuses_.WriteTo(output, _repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ServerHandle != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(TagAddress);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ItemHandle);
      }
      if (WasSuccessful != false) {
        output.WriteRawTag(32);
        output.WriteBool(WasSuccessful);
      }
      if (WasCached != false) {
        output.WriteRawTag(40);
        output.WriteBool(WasCached);
      }
      if (value_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(Value);
      }
      if (Quality != 0) {
        output.WriteRawTag(56);
        output.WriteInt32(Quality);
      }
      if (sourceTimestamp_ != null) {
        output.WriteRawTag(66);
        output.WriteMessage(SourceTimestamp);
      }
      statuses_.WriteTo(ref output, _repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(ErrorMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (TagAddress.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TagAddress);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (WasSuccessful != false) {
        size += 1 + 1;
      }
      if (WasCached != false) {
        size += 1 + 1;
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (Quality != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Quality);
      }
      if (sourceTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceTimestamp);
      }
      size += statuses_.CalculateSize(_repeated_statuses_codec);
      if (ErrorMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ErrorMessage);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BulkReadResult other) {
      if (other == null) {
        return;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.TagAddress.Length != 0) {
        TagAddress = other.TagAddress;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.WasSuccessful != false) {
        WasSuccessful = other.WasSuccessful;
      }
      if (other.WasCached != false) {
        WasCached = other.WasCached;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.Quality != 0) {
        Quality = other.Quality;
      }
      if (other.sourceTimestamp_ != null) {
        if (sourceTimestamp_ == null) {
          SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        SourceTimestamp.MergeFrom(other.SourceTimestamp);
      }
      statuses_.Add(other.statuses_);
      if (other.ErrorMessage.Length != 0) {
        ErrorMessage = other.ErrorMessage;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            TagAddress = input.ReadString();
            break;
          }
          case 24: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 32: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 40: {
            WasCached = input.ReadBool();
            break;
          }
          case 50: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 56: {
            Quality = input.ReadInt32();
            break;
          }
          case 66: {
            if (sourceTimestamp_ == null) {
              SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SourceTimestamp);
            break;
          }
          case 74: {
            statuses_.AddEntriesFrom(input, _repeated_statuses_codec);
            break;
          }
          case 82: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 18: {
            TagAddress = input.ReadString();
            break;
          }
          case 24: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 32: {
            WasSuccessful = input.ReadBool();
            break;
          }
          case 40: {
            WasCached = input.ReadBool();
            break;
          }
          case 50: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 56: {
            Quality = input.ReadInt32();
            break;
          }
          case 66: {
            if (sourceTimestamp_ == null) {
              SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SourceTimestamp);
            break;
          }
          case 74: {
            statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec);
            break;
          }
          case 82: {
            ErrorMessage = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BulkReadReply : pb::IMessage<BulkReadReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BulkReadReply> _parser = new pb::MessageParser<BulkReadReply>(() => new BulkReadReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BulkReadReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[67]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadReply(BulkReadReply other) : this() {
      results_ = other.results_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BulkReadReply Clone() {
      return new BulkReadReply(this);
    }

    /// <summary>Field number for the "results" field.</summary>
    public const int ResultsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult> _repeated_results_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult> results_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.BulkReadResult> Results {
      get { return results_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BulkReadReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BulkReadReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!results_.Equals(other.results_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= results_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      results_.WriteTo(output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      results_.WriteTo(ref output, _repeated_results_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += results_.CalculateSize(_repeated_results_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BulkReadReply other) {
      if (other == null) {
        return;
      }
      results_.Add(other.results_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            results_.AddEntriesFrom(input, _repeated_results_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            results_.AddEntriesFrom(ref input, _repeated_results_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class SessionStateReply : pb::IMessage<SessionStateReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<SessionStateReply> _parser = new pb::MessageParser<SessionStateReply>(() => new SessionStateReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<SessionStateReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[68]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SessionStateReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SessionStateReply(SessionStateReply other) : this() {
      state_ = other.state_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public SessionStateReply Clone() {
      return new SessionStateReply(this);
    }

    /// <summary>Field number for the "state" field.</summary>
    public const int StateFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState state_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState State {
      get { return state_; }
      set {
        state_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as SessionStateReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(SessionStateReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (State != other.State) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) hash ^= State.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) State);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) State);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) State);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(SessionStateReply other) {
      if (other == null) {
        return;
      }
      if (other.State != global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState.Unspecified) {
        State = other.State;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            State = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            State = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.SessionState) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class WorkerInfoReply : pb::IMessage<WorkerInfoReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<WorkerInfoReply> _parser = new pb::MessageParser<WorkerInfoReply>(() => new WorkerInfoReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<WorkerInfoReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[69]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerInfoReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerInfoReply(WorkerInfoReply other) : this() {
      workerProcessId_ = other.workerProcessId_;
      workerVersion_ = other.workerVersion_;
      mxaccessProgid_ = other.mxaccessProgid_;
      mxaccessClsid_ = other.mxaccessClsid_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public WorkerInfoReply Clone() {
      return new WorkerInfoReply(this);
    }

    /// <summary>Field number for the "worker_process_id" field.</summary>
    public const int WorkerProcessIdFieldNumber = 1;
    private int workerProcessId_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int WorkerProcessId {
      get { return workerProcessId_; }
      set {
        workerProcessId_ = value;
      }
    }

    /// <summary>Field number for the "worker_version" field.</summary>
    public const int WorkerVersionFieldNumber = 2;
    private string workerVersion_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string WorkerVersion {
      get { return workerVersion_; }
      set {
        workerVersion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "mxaccess_progid" field.</summary>
    public const int MxaccessProgidFieldNumber = 3;
    private string mxaccessProgid_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MxaccessProgid {
      get { return mxaccessProgid_; }
      set {
        mxaccessProgid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "mxaccess_clsid" field.</summary>
    public const int MxaccessClsidFieldNumber = 4;
    private string mxaccessClsid_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string MxaccessClsid {
      get { return mxaccessClsid_; }
      set {
        mxaccessClsid_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as WorkerInfoReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(WorkerInfoReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (WorkerProcessId != other.WorkerProcessId) return false;
      if (WorkerVersion != other.WorkerVersion) return false;
      if (MxaccessProgid != other.MxaccessProgid) return false;
      if (MxaccessClsid != other.MxaccessClsid) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (WorkerProcessId != 0) hash ^= WorkerProcessId.GetHashCode();
      if (WorkerVersion.Length != 0) hash ^= WorkerVersion.GetHashCode();
      if (MxaccessProgid.Length != 0) hash ^= MxaccessProgid.GetHashCode();
      if (MxaccessClsid.Length != 0) hash ^= MxaccessClsid.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(WorkerVersion);
      }
      if (MxaccessProgid.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(MxaccessClsid);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (WorkerProcessId != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(WorkerVersion);
      }
      if (MxaccessProgid.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(MxaccessClsid);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (WorkerProcessId != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(WorkerProcessId);
      }
      if (WorkerVersion.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(WorkerVersion);
      }
      if (MxaccessProgid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MxaccessProgid);
      }
      if (MxaccessClsid.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MxaccessClsid);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(WorkerInfoReply other) {
      if (other == null) {
        return;
      }
      if (other.WorkerProcessId != 0) {
        WorkerProcessId = other.WorkerProcessId;
      }
      if (other.WorkerVersion.Length != 0) {
        WorkerVersion = other.WorkerVersion;
      }
      if (other.MxaccessProgid.Length != 0) {
        MxaccessProgid = other.MxaccessProgid;
      }
      if (other.MxaccessClsid.Length != 0) {
        MxaccessClsid = other.MxaccessClsid;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 18: {
            WorkerVersion = input.ReadString();
            break;
          }
          case 26: {
            MxaccessProgid = input.ReadString();
            break;
          }
          case 34: {
            MxaccessClsid = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            WorkerProcessId = input.ReadInt32();
            break;
          }
          case 18: {
            WorkerVersion = input.ReadString();
            break;
          }
          case 26: {
            MxaccessProgid = input.ReadString();
            break;
          }
          case 34: {
            MxaccessClsid = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class DrainEventsReply : pb::IMessage<DrainEventsReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DrainEventsReply> _parser = new pb::MessageParser<DrainEventsReply>(() => new DrainEventsReply());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DrainEventsReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[70]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsReply(DrainEventsReply other) : this() {
      events_ = other.events_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DrainEventsReply Clone() {
      return new DrainEventsReply(this);
    }

    /// <summary>Field number for the "events" field.</summary>
    public const int EventsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent> _repeated_events_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent> events_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent>();
    /// <summary>
    /// The reply is bounded by both a server-side count cap and the negotiated
    /// worker-frame byte cap; a reply may therefore carry fewer events than
    /// `max_events` and fewer than are queued. Callers drain iteratively until an
    /// empty reply.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEvent> Events {
      get { return events_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DrainEventsReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DrainEventsReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!events_.Equals(other.events_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= events_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      events_.WriteTo(output, _repeated_events_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      events_.WriteTo(ref output, _repeated_events_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += events_.CalculateSize(_repeated_events_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DrainEventsReply other) {
      if (other == null) {
        return;
      }
      events_.Add(other.events_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            events_.AddEntriesFrom(input, _repeated_events_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            events_.AddEntriesFrom(ref input, _repeated_events_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Reply payload for AcknowledgeAlarmCommand AND
  /// AcknowledgeAlarmByNameCommand — both ack command kinds reuse this
  /// payload case (`MxCommandReply.acknowledge_alarm`); there is no
  /// dedicated by-name reply case. Surfaces AVEVA's native ack return
  /// code (AlarmAckByGUID for the GUID arm, AlarmAckByName for the
  /// by-name arm); 0 means success. The MxCommandReply's hresult field
  /// carries the same value and is preferred for protocol consumers —
  /// this payload exists so the gateway-side WorkerAlarmRpcDispatcher
  /// can echo native_status into AcknowledgeAlarmReply.hresult without
  /// unpacking the outer envelope.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AcknowledgeAlarmReplyPayload : pb::IMessage<AcknowledgeAlarmReplyPayload>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AcknowledgeAlarmReplyPayload> _parser = new pb::MessageParser<AcknowledgeAlarmReplyPayload>(() => new AcknowledgeAlarmReplyPayload());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AcknowledgeAlarmReplyPayload> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[71]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReplyPayload() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReplyPayload(AcknowledgeAlarmReplyPayload other) : this() {
      nativeStatus_ = other.nativeStatus_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReplyPayload Clone() {
      return new AcknowledgeAlarmReplyPayload(this);
    }

    /// <summary>Field number for the "native_status" field.</summary>
    public const int NativeStatusFieldNumber = 1;
    private int nativeStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int NativeStatus {
      get { return nativeStatus_; }
      set {
        nativeStatus_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AcknowledgeAlarmReplyPayload);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AcknowledgeAlarmReplyPayload other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (NativeStatus != other.NativeStatus) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (NativeStatus != 0) hash ^= NativeStatus.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (NativeStatus != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(NativeStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (NativeStatus != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(NativeStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (NativeStatus != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(NativeStatus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AcknowledgeAlarmReplyPayload other) {
      if (other == null) {
        return;
      }
      if (other.NativeStatus != 0) {
        NativeStatus = other.NativeStatus;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            NativeStatus = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            NativeStatus = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Reply payload for QueryActiveAlarmsCommand. The worker walks
  /// IMxAccessAlarmConsumer.SnapshotActiveAlarms and packs each record as
  /// an ActiveAlarmSnapshot proto for the gateway-side ConditionRefresh
  /// stream.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class QueryActiveAlarmsReplyPayload : pb::IMessage<QueryActiveAlarmsReplyPayload>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<QueryActiveAlarmsReplyPayload> _parser = new pb::MessageParser<QueryActiveAlarmsReplyPayload>(() => new QueryActiveAlarmsReplyPayload());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<QueryActiveAlarmsReplyPayload> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[72]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsReplyPayload() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsReplyPayload(QueryActiveAlarmsReplyPayload other) : this() {
      snapshots_ = other.snapshots_.Clone();
      snapshotTruncated_ = other.snapshotTruncated_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public QueryActiveAlarmsReplyPayload Clone() {
      return new QueryActiveAlarmsReplyPayload(this);
    }

    /// <summary>Field number for the "snapshots" field.</summary>
    public const int SnapshotsFieldNumber = 1;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot> _repeated_snapshots_codec
        = pb::FieldCodec.ForMessage(10, global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot> snapshots_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot> Snapshots {
      get { return snapshots_; }
    }

    /// <summary>Field number for the "snapshot_truncated" field.</summary>
    public const int SnapshotTruncatedFieldNumber = 2;
    private bool snapshotTruncated_;
    /// <summary>
    /// True when the provider fetch backing this reply came back holding the
    /// per-fetch cap (MxGateway:Alarms:MaxAlarmsPerFetch). The reply may then omit
    /// active alarms, and the worker suspends its absence-implies-Clear inference
    /// for that poll — so a reference missing from `snapshots` is not evidence the
    /// alarm cleared. Carried on the payload as well as per-record because a
    /// truncated fetch that filters down to zero records still has to say so.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool SnapshotTruncated {
      get { return snapshotTruncated_; }
      set {
        snapshotTruncated_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as QueryActiveAlarmsReplyPayload);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(QueryActiveAlarmsReplyPayload other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!snapshots_.Equals(other.snapshots_)) return false;
      if (SnapshotTruncated != other.SnapshotTruncated) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= snapshots_.GetHashCode();
      if (SnapshotTruncated != false) hash ^= SnapshotTruncated.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      snapshots_.WriteTo(output, _repeated_snapshots_codec);
      if (SnapshotTruncated != false) {
        output.WriteRawTag(16);
        output.WriteBool(SnapshotTruncated);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      snapshots_.WriteTo(ref output, _repeated_snapshots_codec);
      if (SnapshotTruncated != false) {
        output.WriteRawTag(16);
        output.WriteBool(SnapshotTruncated);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += snapshots_.CalculateSize(_repeated_snapshots_codec);
      if (SnapshotTruncated != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(QueryActiveAlarmsReplyPayload other) {
      if (other == null) {
        return;
      }
      snapshots_.Add(other.snapshots_);
      if (other.SnapshotTruncated != false) {
        SnapshotTruncated = other.SnapshotTruncated;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            snapshots_.AddEntriesFrom(input, _repeated_snapshots_codec);
            break;
          }
          case 16: {
            SnapshotTruncated = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            snapshots_.AddEntriesFrom(ref input, _repeated_snapshots_codec);
            break;
          }
          case 16: {
            SnapshotTruncated = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxEvent : pb::IMessage<MxEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxEvent> _parser = new pb::MessageParser<MxEvent>(() => new MxEvent());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[73]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxEvent(MxEvent other) : this() {
      _hasBits0 = other._hasBits0;
      family_ = other.family_;
      sessionId_ = other.sessionId_;
      serverHandle_ = other.serverHandle_;
      itemHandle_ = other.itemHandle_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      quality_ = other.quality_;
      sourceTimestamp_ = other.sourceTimestamp_ != null ? other.sourceTimestamp_.Clone() : null;
      statuses_ = other.statuses_.Clone();
      workerSequence_ = other.workerSequence_;
      workerTimestamp_ = other.workerTimestamp_ != null ? other.workerTimestamp_.Clone() : null;
      gatewayReceiveTimestamp_ = other.gatewayReceiveTimestamp_ != null ? other.gatewayReceiveTimestamp_.Clone() : null;
      hresult_ = other.hresult_;
      rawStatus_ = other.rawStatus_;
      replayGap_ = other.replayGap_ != null ? other.replayGap_.Clone() : null;
      switch (other.BodyCase) {
        case BodyOneofCase.OnDataChange:
          OnDataChange = other.OnDataChange.Clone();
          break;
        case BodyOneofCase.OnWriteComplete:
          OnWriteComplete = other.OnWriteComplete.Clone();
          break;
        case BodyOneofCase.OperationComplete:
          OperationComplete = other.OperationComplete.Clone();
          break;
        case BodyOneofCase.OnBufferedDataChange:
          OnBufferedDataChange = other.OnBufferedDataChange.Clone();
          break;
        case BodyOneofCase.OnAlarmTransition:
          OnAlarmTransition = other.OnAlarmTransition.Clone();
          break;
        case BodyOneofCase.OnAlarmProviderModeChanged:
          OnAlarmProviderModeChanged = other.OnAlarmProviderModeChanged.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxEvent Clone() {
      return new MxEvent(this);
    }

    /// <summary>Field number for the "family" field.</summary>
    public const int FamilyFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily family_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily Family {
      get { return family_; }
      set {
        family_ = value;
      }
    }

    /// <summary>Field number for the "session_id" field.</summary>
    public const int SessionIdFieldNumber = 2;
    private string sessionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SessionId {
      get { return sessionId_; }
      set {
        sessionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "server_handle" field.</summary>
    public const int ServerHandleFieldNumber = 3;
    private int serverHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ServerHandle {
      get { return serverHandle_; }
      set {
        serverHandle_ = value;
      }
    }

    /// <summary>Field number for the "item_handle" field.</summary>
    public const int ItemHandleFieldNumber = 4;
    private int itemHandle_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int ItemHandle {
      get { return itemHandle_; }
      set {
        itemHandle_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 5;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    /// <summary>Field number for the "quality" field.</summary>
    public const int QualityFieldNumber = 6;
    private int quality_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Quality {
      get { return quality_; }
      set {
        quality_ = value;
      }
    }

    /// <summary>Field number for the "source_timestamp" field.</summary>
    public const int SourceTimestampFieldNumber = 7;
    private global::Google.Protobuf.WellKnownTypes.Timestamp sourceTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp SourceTimestamp {
      get { return sourceTimestamp_; }
      set {
        sourceTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "statuses" field.</summary>
    public const int StatusesFieldNumber = 8;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> _repeated_statuses_codec
        = pb::FieldCodec.ForMessage(66, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> statuses_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy> Statuses {
      get { return statuses_; }
    }

    /// <summary>Field number for the "worker_sequence" field.</summary>
    public const int WorkerSequenceFieldNumber = 9;
    private ulong workerSequence_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong WorkerSequence {
      get { return workerSequence_; }
      set {
        workerSequence_ = value;
      }
    }

    /// <summary>Field number for the "worker_timestamp" field.</summary>
    public const int WorkerTimestampFieldNumber = 10;
    private global::Google.Protobuf.WellKnownTypes.Timestamp workerTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp WorkerTimestamp {
      get { return workerTimestamp_; }
      set {
        workerTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "gateway_receive_timestamp" field.</summary>
    public const int GatewayReceiveTimestampFieldNumber = 11;
    private global::Google.Protobuf.WellKnownTypes.Timestamp gatewayReceiveTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp GatewayReceiveTimestamp {
      get { return gatewayReceiveTimestamp_; }
      set {
        gatewayReceiveTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 12;
    private readonly static int HresultDefaultValue = 0;

    private int hresult_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } }
      set {
        _hasBits0 |= 1;
        hresult_ = value;
      }
    }
    /// <summary>Gets whether the "hresult" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHresult {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "hresult" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHresult() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "raw_status" field.</summary>
    public const int RawStatusFieldNumber = 13;
    private string rawStatus_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RawStatus {
      get { return rawStatus_; }
      set {
        rawStatus_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "replay_gap" field.</summary>
    public const int ReplayGapFieldNumber = 14;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap replayGap_;
    /// <summary>
    /// Gateway-synthesized reconnect-replay gap signal. Set ONLY on the single
    /// sentinel MxEvent the gateway emits at the head of a StreamEvents stream
    /// that was resumed via StreamEventsRequest.after_worker_sequence when the
    /// requested sequence is older than the oldest event still retained in the
    /// session replay ring (i.e. events were evicted and cannot be replayed).
    /// On that sentinel, `family` is UNSPECIFIED, the `body` oneof is unset, and
    /// no per-item fields (server_handle/item_handle/value/...) are populated;
    /// clients MUST treat a present `replay_gap` as "you missed events — discard
    /// local state and re-snapshot" and read `requested_after_sequence` /
    /// `oldest_available_sequence` from it. Unset on every normal MXAccess event.
    /// This field is ONLY ever set on events returned from the StreamEvents server
    /// stream; it is ALWAYS unset on events in DrainEventsReply (the diagnostic
    /// drain path never emits the sentinel).
    /// Additive (proto3): existing clients that ignore this field continue to
    /// deserialize the stream unchanged.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap ReplayGap {
      get { return replayGap_; }
      set {
        replayGap_ = value;
      }
    }

    /// <summary>Field number for the "on_data_change" field.</summary>
    public const int OnDataChangeFieldNumber = 20;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent OnDataChange {
      get { return bodyCase_ == BodyOneofCase.OnDataChange ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OnDataChange;
      }
    }

    /// <summary>Field number for the "on_write_complete" field.</summary>
    public const int OnWriteCompleteFieldNumber = 21;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent OnWriteComplete {
      get { return bodyCase_ == BodyOneofCase.OnWriteComplete ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OnWriteComplete;
      }
    }

    /// <summary>Field number for the "operation_complete" field.</summary>
    public const int OperationCompleteFieldNumber = 22;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent OperationComplete {
      get { return bodyCase_ == BodyOneofCase.OperationComplete ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OperationComplete;
      }
    }

    /// <summary>Field number for the "on_buffered_data_change" field.</summary>
    public const int OnBufferedDataChangeFieldNumber = 23;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent OnBufferedDataChange {
      get { return bodyCase_ == BodyOneofCase.OnBufferedDataChange ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OnBufferedDataChange;
      }
    }

    /// <summary>Field number for the "on_alarm_transition" field.</summary>
    public const int OnAlarmTransitionFieldNumber = 24;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent OnAlarmTransition {
      get { return bodyCase_ == BodyOneofCase.OnAlarmTransition ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OnAlarmTransition;
      }
    }

    /// <summary>Field number for the "on_alarm_provider_mode_changed" field.</summary>
    public const int OnAlarmProviderModeChangedFieldNumber = 25;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent OnAlarmProviderModeChanged {
      get { return bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent) body_ : null; }
      set {
        body_ = value;
        bodyCase_ = value == null ? BodyOneofCase.None : BodyOneofCase.OnAlarmProviderModeChanged;
      }
    }

    private object body_;
    /// <summary>Enum of possible cases for the "body" oneof.</summary>
    public enum BodyOneofCase {
      None = 0,
      OnDataChange = 20,
      OnWriteComplete = 21,
      OperationComplete = 22,
      OnBufferedDataChange = 23,
      OnAlarmTransition = 24,
      OnAlarmProviderModeChanged = 25,
    }
    private BodyOneofCase bodyCase_ = BodyOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BodyOneofCase BodyCase {
      get { return bodyCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBody() {
      bodyCase_ = BodyOneofCase.None;
      body_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Family != other.Family) return false;
      if (SessionId != other.SessionId) return false;
      if (ServerHandle != other.ServerHandle) return false;
      if (ItemHandle != other.ItemHandle) return false;
      if (!object.Equals(Value, other.Value)) return false;
      if (Quality != other.Quality) return false;
      if (!object.Equals(SourceTimestamp, other.SourceTimestamp)) return false;
      if(!statuses_.Equals(other.statuses_)) return false;
      if (WorkerSequence != other.WorkerSequence) return false;
      if (!object.Equals(WorkerTimestamp, other.WorkerTimestamp)) return false;
      if (!object.Equals(GatewayReceiveTimestamp, other.GatewayReceiveTimestamp)) return false;
      if (Hresult != other.Hresult) return false;
      if (RawStatus != other.RawStatus) return false;
      if (!object.Equals(ReplayGap, other.ReplayGap)) return false;
      if (!object.Equals(OnDataChange, other.OnDataChange)) return false;
      if (!object.Equals(OnWriteComplete, other.OnWriteComplete)) return false;
      if (!object.Equals(OperationComplete, other.OperationComplete)) return false;
      if (!object.Equals(OnBufferedDataChange, other.OnBufferedDataChange)) return false;
      if (!object.Equals(OnAlarmTransition, other.OnAlarmTransition)) return false;
      if (!object.Equals(OnAlarmProviderModeChanged, other.OnAlarmProviderModeChanged)) return false;
      if (BodyCase != other.BodyCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Family != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified) hash ^= Family.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (ServerHandle != 0) hash ^= ServerHandle.GetHashCode();
      if (ItemHandle != 0) hash ^= ItemHandle.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (Quality != 0) hash ^= Quality.GetHashCode();
      if (sourceTimestamp_ != null) hash ^= SourceTimestamp.GetHashCode();
      hash ^= statuses_.GetHashCode();
      if (WorkerSequence != 0UL) hash ^= WorkerSequence.GetHashCode();
      if (workerTimestamp_ != null) hash ^= WorkerTimestamp.GetHashCode();
      if (gatewayReceiveTimestamp_ != null) hash ^= GatewayReceiveTimestamp.GetHashCode();
      if (HasHresult) hash ^= Hresult.GetHashCode();
      if (RawStatus.Length != 0) hash ^= RawStatus.GetHashCode();
      if (replayGap_ != null) hash ^= ReplayGap.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OnDataChange) hash ^= OnDataChange.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OnWriteComplete) hash ^= OnWriteComplete.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OperationComplete) hash ^= OperationComplete.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) hash ^= OnBufferedDataChange.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OnAlarmTransition) hash ^= OnAlarmTransition.GetHashCode();
      if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) hash ^= OnAlarmProviderModeChanged.GetHashCode();
      hash ^= (int) bodyCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Family != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Family);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SessionId);
      }
      if (ServerHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (Quality != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Quality);
      }
      if (sourceTimestamp_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(SourceTimestamp);
      }
      statuses_.WriteTo(output, _repeated_statuses_codec);
      if (WorkerSequence != 0UL) {
        output.WriteRawTag(72);
        output.WriteUInt64(WorkerSequence);
      }
      if (workerTimestamp_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(WorkerTimestamp);
      }
      if (gatewayReceiveTimestamp_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(GatewayReceiveTimestamp);
      }
      if (HasHresult) {
        output.WriteRawTag(96);
        output.WriteInt32(Hresult);
      }
      if (RawStatus.Length != 0) {
        output.WriteRawTag(106);
        output.WriteString(RawStatus);
      }
      if (replayGap_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(ReplayGap);
      }
      if (bodyCase_ == BodyOneofCase.OnDataChange) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(OnDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnWriteComplete) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(OnWriteComplete);
      }
      if (bodyCase_ == BodyOneofCase.OperationComplete) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(OperationComplete);
      }
      if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(OnBufferedDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmTransition) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(OnAlarmTransition);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(OnAlarmProviderModeChanged);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Family != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Family);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SessionId);
      }
      if (ServerHandle != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ServerHandle);
      }
      if (ItemHandle != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(ItemHandle);
      }
      if (value_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Value);
      }
      if (Quality != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(Quality);
      }
      if (sourceTimestamp_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(SourceTimestamp);
      }
      statuses_.WriteTo(ref output, _repeated_statuses_codec);
      if (WorkerSequence != 0UL) {
        output.WriteRawTag(72);
        output.WriteUInt64(WorkerSequence);
      }
      if (workerTimestamp_ != null) {
        output.WriteRawTag(82);
        output.WriteMessage(WorkerTimestamp);
      }
      if (gatewayReceiveTimestamp_ != null) {
        output.WriteRawTag(90);
        output.WriteMessage(GatewayReceiveTimestamp);
      }
      if (HasHresult) {
        output.WriteRawTag(96);
        output.WriteInt32(Hresult);
      }
      if (RawStatus.Length != 0) {
        output.WriteRawTag(106);
        output.WriteString(RawStatus);
      }
      if (replayGap_ != null) {
        output.WriteRawTag(114);
        output.WriteMessage(ReplayGap);
      }
      if (bodyCase_ == BodyOneofCase.OnDataChange) {
        output.WriteRawTag(162, 1);
        output.WriteMessage(OnDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnWriteComplete) {
        output.WriteRawTag(170, 1);
        output.WriteMessage(OnWriteComplete);
      }
      if (bodyCase_ == BodyOneofCase.OperationComplete) {
        output.WriteRawTag(178, 1);
        output.WriteMessage(OperationComplete);
      }
      if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) {
        output.WriteRawTag(186, 1);
        output.WriteMessage(OnBufferedDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmTransition) {
        output.WriteRawTag(194, 1);
        output.WriteMessage(OnAlarmTransition);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) {
        output.WriteRawTag(202, 1);
        output.WriteMessage(OnAlarmProviderModeChanged);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Family != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Family);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (ServerHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ServerHandle);
      }
      if (ItemHandle != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ItemHandle);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (Quality != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Quality);
      }
      if (sourceTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SourceTimestamp);
      }
      size += statuses_.CalculateSize(_repeated_statuses_codec);
      if (WorkerSequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(WorkerSequence);
      }
      if (workerTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(WorkerTimestamp);
      }
      if (gatewayReceiveTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GatewayReceiveTimestamp);
      }
      if (HasHresult) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      if (RawStatus.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RawStatus);
      }
      if (replayGap_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ReplayGap);
      }
      if (bodyCase_ == BodyOneofCase.OnDataChange) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnWriteComplete) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnWriteComplete);
      }
      if (bodyCase_ == BodyOneofCase.OperationComplete) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OperationComplete);
      }
      if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnBufferedDataChange);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmTransition) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnAlarmTransition);
      }
      if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(OnAlarmProviderModeChanged);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxEvent other) {
      if (other == null) {
        return;
      }
      if (other.Family != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily.Unspecified) {
        Family = other.Family;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.ServerHandle != 0) {
        ServerHandle = other.ServerHandle;
      }
      if (other.ItemHandle != 0) {
        ItemHandle = other.ItemHandle;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      if (other.Quality != 0) {
        Quality = other.Quality;
      }
      if (other.sourceTimestamp_ != null) {
        if (sourceTimestamp_ == null) {
          SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        SourceTimestamp.MergeFrom(other.SourceTimestamp);
      }
      statuses_.Add(other.statuses_);
      if (other.WorkerSequence != 0UL) {
        WorkerSequence = other.WorkerSequence;
      }
      if (other.workerTimestamp_ != null) {
        if (workerTimestamp_ == null) {
          WorkerTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        WorkerTimestamp.MergeFrom(other.WorkerTimestamp);
      }
      if (other.gatewayReceiveTimestamp_ != null) {
        if (gatewayReceiveTimestamp_ == null) {
          GatewayReceiveTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        GatewayReceiveTimestamp.MergeFrom(other.GatewayReceiveTimestamp);
      }
      if (other.HasHresult) {
        Hresult = other.Hresult;
      }
      if (other.RawStatus.Length != 0) {
        RawStatus = other.RawStatus;
      }
      if (other.replayGap_ != null) {
        if (replayGap_ == null) {
          ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
        }
        ReplayGap.MergeFrom(other.ReplayGap);
      }
      switch (other.BodyCase) {
        case BodyOneofCase.OnDataChange:
          if (OnDataChange == null) {
            OnDataChange = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent();
          }
          OnDataChange.MergeFrom(other.OnDataChange);
          break;
        case BodyOneofCase.OnWriteComplete:
          if (OnWriteComplete == null) {
            OnWriteComplete = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent();
          }
          OnWriteComplete.MergeFrom(other.OnWriteComplete);
          break;
        case BodyOneofCase.OperationComplete:
          if (OperationComplete == null) {
            OperationComplete = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent();
          }
          OperationComplete.MergeFrom(other.OperationComplete);
          break;
        case BodyOneofCase.OnBufferedDataChange:
          if (OnBufferedDataChange == null) {
            OnBufferedDataChange = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent();
          }
          OnBufferedDataChange.MergeFrom(other.OnBufferedDataChange);
          break;
        case BodyOneofCase.OnAlarmTransition:
          if (OnAlarmTransition == null) {
            OnAlarmTransition = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
          }
          OnAlarmTransition.MergeFrom(other.OnAlarmTransition);
          break;
        case BodyOneofCase.OnAlarmProviderModeChanged:
          if (OnAlarmProviderModeChanged == null) {
            OnAlarmProviderModeChanged = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent();
          }
          OnAlarmProviderModeChanged.MergeFrom(other.OnAlarmProviderModeChanged);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Family = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily) input.ReadEnum();
            break;
          }
          case 18: {
            SessionId = input.ReadString();
            break;
          }
          case 24: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 32: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 48: {
            Quality = input.ReadInt32();
            break;
          }
          case 58: {
            if (sourceTimestamp_ == null) {
              SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SourceTimestamp);
            break;
          }
          case 66: {
            statuses_.AddEntriesFrom(input, _repeated_statuses_codec);
            break;
          }
          case 72: {
            WorkerSequence = input.ReadUInt64();
            break;
          }
          case 82: {
            if (workerTimestamp_ == null) {
              WorkerTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(WorkerTimestamp);
            break;
          }
          case 90: {
            if (gatewayReceiveTimestamp_ == null) {
              GatewayReceiveTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(GatewayReceiveTimestamp);
            break;
          }
          case 96: {
            Hresult = input.ReadInt32();
            break;
          }
          case 106: {
            RawStatus = input.ReadString();
            break;
          }
          case 114: {
            if (replayGap_ == null) {
              ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
            }
            input.ReadMessage(ReplayGap);
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent();
            if (bodyCase_ == BodyOneofCase.OnDataChange) {
              subBuilder.MergeFrom(OnDataChange);
            }
            input.ReadMessage(subBuilder);
            OnDataChange = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent();
            if (bodyCase_ == BodyOneofCase.OnWriteComplete) {
              subBuilder.MergeFrom(OnWriteComplete);
            }
            input.ReadMessage(subBuilder);
            OnWriteComplete = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent();
            if (bodyCase_ == BodyOneofCase.OperationComplete) {
              subBuilder.MergeFrom(OperationComplete);
            }
            input.ReadMessage(subBuilder);
            OperationComplete = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent();
            if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) {
              subBuilder.MergeFrom(OnBufferedDataChange);
            }
            input.ReadMessage(subBuilder);
            OnBufferedDataChange = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
            if (bodyCase_ == BodyOneofCase.OnAlarmTransition) {
              subBuilder.MergeFrom(OnAlarmTransition);
            }
            input.ReadMessage(subBuilder);
            OnAlarmTransition = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent();
            if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) {
              subBuilder.MergeFrom(OnAlarmProviderModeChanged);
            }
            input.ReadMessage(subBuilder);
            OnAlarmProviderModeChanged = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Family = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxEventFamily) input.ReadEnum();
            break;
          }
          case 18: {
            SessionId = input.ReadString();
            break;
          }
          case 24: {
            ServerHandle = input.ReadInt32();
            break;
          }
          case 32: {
            ItemHandle = input.ReadInt32();
            break;
          }
          case 42: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
          case 48: {
            Quality = input.ReadInt32();
            break;
          }
          case 58: {
            if (sourceTimestamp_ == null) {
              SourceTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(SourceTimestamp);
            break;
          }
          case 66: {
            statuses_.AddEntriesFrom(ref input, _repeated_statuses_codec);
            break;
          }
          case 72: {
            WorkerSequence = input.ReadUInt64();
            break;
          }
          case 82: {
            if (workerTimestamp_ == null) {
              WorkerTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(WorkerTimestamp);
            break;
          }
          case 90: {
            if (gatewayReceiveTimestamp_ == null) {
              GatewayReceiveTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(GatewayReceiveTimestamp);
            break;
          }
          case 96: {
            Hresult = input.ReadInt32();
            break;
          }
          case 106: {
            RawStatus = input.ReadString();
            break;
          }
          case 114: {
            if (replayGap_ == null) {
              ReplayGap = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ReplayGap();
            }
            input.ReadMessage(ReplayGap);
            break;
          }
          case 162: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnDataChangeEvent();
            if (bodyCase_ == BodyOneofCase.OnDataChange) {
              subBuilder.MergeFrom(OnDataChange);
            }
            input.ReadMessage(subBuilder);
            OnDataChange = subBuilder;
            break;
          }
          case 170: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnWriteCompleteEvent();
            if (bodyCase_ == BodyOneofCase.OnWriteComplete) {
              subBuilder.MergeFrom(OnWriteComplete);
            }
            input.ReadMessage(subBuilder);
            OnWriteComplete = subBuilder;
            break;
          }
          case 178: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OperationCompleteEvent();
            if (bodyCase_ == BodyOneofCase.OperationComplete) {
              subBuilder.MergeFrom(OperationComplete);
            }
            input.ReadMessage(subBuilder);
            OperationComplete = subBuilder;
            break;
          }
          case 186: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnBufferedDataChangeEvent();
            if (bodyCase_ == BodyOneofCase.OnBufferedDataChange) {
              subBuilder.MergeFrom(OnBufferedDataChange);
            }
            input.ReadMessage(subBuilder);
            OnBufferedDataChange = subBuilder;
            break;
          }
          case 194: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
            if (bodyCase_ == BodyOneofCase.OnAlarmTransition) {
              subBuilder.MergeFrom(OnAlarmTransition);
            }
            input.ReadMessage(subBuilder);
            OnAlarmTransition = subBuilder;
            break;
          }
          case 202: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmProviderModeChangedEvent();
            if (bodyCase_ == BodyOneofCase.OnAlarmProviderModeChanged) {
              subBuilder.MergeFrom(OnAlarmProviderModeChanged);
            }
            input.ReadMessage(subBuilder);
            OnAlarmProviderModeChanged = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Reconnect-replay gap signal carried by a sentinel MxEvent (MxEvent.replay_gap)
  /// when a client resumes StreamEvents via after_worker_sequence but the requested
  /// sequence predates the oldest event still held in the session replay ring.
  /// The events in the open interval (requested_after_sequence, oldest_available_sequence)
  /// were evicted from the ring and cannot be replayed, so the client must
  /// re-snapshot rather than assume a contiguous event history.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ReplayGap : pb::IMessage<ReplayGap>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ReplayGap> _parser = new pb::MessageParser<ReplayGap>(() => new ReplayGap());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ReplayGap> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[74]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReplayGap() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReplayGap(ReplayGap other) : this() {
      requestedAfterSequence_ = other.requestedAfterSequence_;
      oldestAvailableSequence_ = other.oldestAvailableSequence_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ReplayGap Clone() {
      return new ReplayGap(this);
    }

    /// <summary>Field number for the "requested_after_sequence" field.</summary>
    public const int RequestedAfterSequenceFieldNumber = 1;
    private ulong requestedAfterSequence_;
    /// <summary>
    /// The worker_sequence the client asked to resume after
    /// (StreamEventsRequest.after_worker_sequence).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong RequestedAfterSequence {
      get { return requestedAfterSequence_; }
      set {
        requestedAfterSequence_ = value;
      }
    }

    /// <summary>Field number for the "oldest_available_sequence" field.</summary>
    public const int OldestAvailableSequenceFieldNumber = 2;
    private ulong oldestAvailableSequence_;
    /// <summary>
    /// The oldest worker_sequence still retained in the replay ring and available
    /// for replay. Events with worker_sequence in the open interval
    /// (requested_after_sequence, oldest_available_sequence) were evicted and are
    /// unrecoverable. oldest_available_sequence itself IS still retained: a client
    /// that wishes to resume without incurring another gap MUST set
    /// after_worker_sequence = oldest_available_sequence - 1 in the next
    /// StreamEventsRequest, which will cause the server to replay starting at
    /// oldest_available_sequence (the first retained event).
    /// When nothing is retained (the replay ring is empty), this is the next sequence
    /// that can be delivered — `highest observed + 1` — and the `oldest - 1` resume
    /// formula remains valid: it resolves to the highest sequence already seen, so the
    /// follow-up resume replays nothing, reports no gap, and every newer live event
    /// passes. The interval evicted is unchanged.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ulong OldestAvailableSequence {
      get { return oldestAvailableSequence_; }
      set {
        oldestAvailableSequence_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ReplayGap);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ReplayGap other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (RequestedAfterSequence != other.RequestedAfterSequence) return false;
      if (OldestAvailableSequence != other.OldestAvailableSequence) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (RequestedAfterSequence != 0UL) hash ^= RequestedAfterSequence.GetHashCode();
      if (OldestAvailableSequence != 0UL) hash ^= OldestAvailableSequence.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (RequestedAfterSequence != 0UL) {
        output.WriteRawTag(8);
        output.WriteUInt64(RequestedAfterSequence);
      }
      if (OldestAvailableSequence != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(OldestAvailableSequence);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (RequestedAfterSequence != 0UL) {
        output.WriteRawTag(8);
        output.WriteUInt64(RequestedAfterSequence);
      }
      if (OldestAvailableSequence != 0UL) {
        output.WriteRawTag(16);
        output.WriteUInt64(OldestAvailableSequence);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (RequestedAfterSequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(RequestedAfterSequence);
      }
      if (OldestAvailableSequence != 0UL) {
        size += 1 + pb::CodedOutputStream.ComputeUInt64Size(OldestAvailableSequence);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ReplayGap other) {
      if (other == null) {
        return;
      }
      if (other.RequestedAfterSequence != 0UL) {
        RequestedAfterSequence = other.RequestedAfterSequence;
      }
      if (other.OldestAvailableSequence != 0UL) {
        OldestAvailableSequence = other.OldestAvailableSequence;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            RequestedAfterSequence = input.ReadUInt64();
            break;
          }
          case 16: {
            OldestAvailableSequence = input.ReadUInt64();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            RequestedAfterSequence = input.ReadUInt64();
            break;
          }
          case 16: {
            OldestAvailableSequence = input.ReadUInt64();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OnDataChangeEvent : pb::IMessage<OnDataChangeEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OnDataChangeEvent> _parser = new pb::MessageParser<OnDataChangeEvent>(() => new OnDataChangeEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OnDataChangeEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[75]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnDataChangeEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnDataChangeEvent(OnDataChangeEvent other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnDataChangeEvent Clone() {
      return new OnDataChangeEvent(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OnDataChangeEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OnDataChangeEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OnDataChangeEvent other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OnWriteCompleteEvent : pb::IMessage<OnWriteCompleteEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OnWriteCompleteEvent> _parser = new pb::MessageParser<OnWriteCompleteEvent>(() => new OnWriteCompleteEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OnWriteCompleteEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[76]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnWriteCompleteEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnWriteCompleteEvent(OnWriteCompleteEvent other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnWriteCompleteEvent Clone() {
      return new OnWriteCompleteEvent(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OnWriteCompleteEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OnWriteCompleteEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OnWriteCompleteEvent other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OperationCompleteEvent : pb::IMessage<OperationCompleteEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OperationCompleteEvent> _parser = new pb::MessageParser<OperationCompleteEvent>(() => new OperationCompleteEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OperationCompleteEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[77]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OperationCompleteEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OperationCompleteEvent(OperationCompleteEvent other) : this() {
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OperationCompleteEvent Clone() {
      return new OperationCompleteEvent(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OperationCompleteEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OperationCompleteEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OperationCompleteEvent other) {
      if (other == null) {
        return;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OnBufferedDataChangeEvent : pb::IMessage<OnBufferedDataChangeEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OnBufferedDataChangeEvent> _parser = new pb::MessageParser<OnBufferedDataChangeEvent>(() => new OnBufferedDataChangeEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OnBufferedDataChangeEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[78]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnBufferedDataChangeEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnBufferedDataChangeEvent(OnBufferedDataChangeEvent other) : this() {
      dataType_ = other.dataType_;
      qualityValues_ = other.qualityValues_ != null ? other.qualityValues_.Clone() : null;
      timestampValues_ = other.timestampValues_ != null ? other.timestampValues_.Clone() : null;
      rawDataType_ = other.rawDataType_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnBufferedDataChangeEvent Clone() {
      return new OnBufferedDataChangeEvent(this);
    }

    /// <summary>Field number for the "data_type" field.</summary>
    public const int DataTypeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType dataType_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType DataType {
      get { return dataType_; }
      set {
        dataType_ = value;
      }
    }

    /// <summary>Field number for the "quality_values" field.</summary>
    public const int QualityValuesFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray qualityValues_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray QualityValues {
      get { return qualityValues_; }
      set {
        qualityValues_ = value;
      }
    }

    /// <summary>Field number for the "timestamp_values" field.</summary>
    public const int TimestampValuesFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray timestampValues_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray TimestampValues {
      get { return timestampValues_; }
      set {
        timestampValues_ = value;
      }
    }

    /// <summary>Field number for the "raw_data_type" field.</summary>
    public const int RawDataTypeFieldNumber = 4;
    private int rawDataType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RawDataType {
      get { return rawDataType_; }
      set {
        rawDataType_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OnBufferedDataChangeEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OnBufferedDataChangeEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (DataType != other.DataType) return false;
      if (!object.Equals(QualityValues, other.QualityValues)) return false;
      if (!object.Equals(TimestampValues, other.TimestampValues)) return false;
      if (RawDataType != other.RawDataType) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) hash ^= DataType.GetHashCode();
      if (qualityValues_ != null) hash ^= QualityValues.GetHashCode();
      if (timestampValues_ != null) hash ^= TimestampValues.GetHashCode();
      if (RawDataType != 0) hash ^= RawDataType.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DataType);
      }
      if (qualityValues_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(QualityValues);
      }
      if (timestampValues_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TimestampValues);
      }
      if (RawDataType != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RawDataType);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DataType);
      }
      if (qualityValues_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(QualityValues);
      }
      if (timestampValues_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(TimestampValues);
      }
      if (RawDataType != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(RawDataType);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataType);
      }
      if (qualityValues_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(QualityValues);
      }
      if (timestampValues_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TimestampValues);
      }
      if (RawDataType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RawDataType);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OnBufferedDataChangeEvent other) {
      if (other == null) {
        return;
      }
      if (other.DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        DataType = other.DataType;
      }
      if (other.qualityValues_ != null) {
        if (qualityValues_ == null) {
          QualityValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
        }
        QualityValues.MergeFrom(other.QualityValues);
      }
      if (other.timestampValues_ != null) {
        if (timestampValues_ == null) {
          TimestampValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
        }
        TimestampValues.MergeFrom(other.TimestampValues);
      }
      if (other.RawDataType != 0) {
        RawDataType = other.RawDataType;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            DataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            if (qualityValues_ == null) {
              QualityValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            }
            input.ReadMessage(QualityValues);
            break;
          }
          case 26: {
            if (timestampValues_ == null) {
              TimestampValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            }
            input.ReadMessage(TimestampValues);
            break;
          }
          case 32: {
            RawDataType = input.ReadInt32();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            DataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            if (qualityValues_ == null) {
              QualityValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            }
            input.ReadMessage(QualityValues);
            break;
          }
          case 26: {
            if (timestampValues_ == null) {
              TimestampValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            }
            input.ReadMessage(TimestampValues);
            break;
          }
          case 32: {
            RawDataType = input.ReadInt32();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Carries a single MXAccess alarm transition (raise / acknowledge / clear /
  /// re-trigger) in native MXAccess terms. The Part 9 state machine + ACL +
  /// multi-source aggregation lives in lmxopcua's AlarmConditionService; the
  /// gateway is UA-agnostic and forwards the raw payload.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OnAlarmTransitionEvent : pb::IMessage<OnAlarmTransitionEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OnAlarmTransitionEvent> _parser = new pb::MessageParser<OnAlarmTransitionEvent>(() => new OnAlarmTransitionEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OnAlarmTransitionEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[79]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmTransitionEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmTransitionEvent(OnAlarmTransitionEvent other) : this() {
      alarmFullReference_ = other.alarmFullReference_;
      sourceObjectReference_ = other.sourceObjectReference_;
      alarmTypeName_ = other.alarmTypeName_;
      transitionKind_ = other.transitionKind_;
      severity_ = other.severity_;
      originalRaiseTimestamp_ = other.originalRaiseTimestamp_ != null ? other.originalRaiseTimestamp_.Clone() : null;
      transitionTimestamp_ = other.transitionTimestamp_ != null ? other.transitionTimestamp_.Clone() : null;
      operatorUser_ = other.operatorUser_;
      operatorComment_ = other.operatorComment_;
      category_ = other.category_;
      description_ = other.description_;
      currentValue_ = other.currentValue_ != null ? other.currentValue_.Clone() : null;
      limitValue_ = other.limitValue_ != null ? other.limitValue_.Clone() : null;
      degraded_ = other.degraded_;
      sourceProvider_ = other.sourceProvider_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmTransitionEvent Clone() {
      return new OnAlarmTransitionEvent(this);
    }

    /// <summary>Field number for the "alarm_full_reference" field.</summary>
    public const int AlarmFullReferenceFieldNumber = 1;
    private string alarmFullReference_ = "";
    /// <summary>
    /// Fully-qualified alarm reference (e.g. "Tank01.Level.HiHi"). Stable across
    /// transitions of the same condition; used by the lmxopcua side to correlate
    /// raise/ack/clear into a single Part 9 condition.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFullReference {
      get { return alarmFullReference_; }
      set {
        alarmFullReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_object_reference" field.</summary>
    public const int SourceObjectReferenceFieldNumber = 2;
    private string sourceObjectReference_ = "";
    /// <summary>
    /// Galaxy-side source object reference (e.g. "Tank01"). Empty for alarms
    /// that do not bind to a Galaxy object.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceObjectReference {
      get { return sourceObjectReference_; }
      set {
        sourceObjectReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_type_name" field.</summary>
    public const int AlarmTypeNameFieldNumber = 3;
    private string alarmTypeName_ = "";
    /// <summary>
    /// MxAccess alarm-type qualifier (e.g. "AnalogLimitAlarm.HiHi", "DiscAlarm").
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmTypeName {
      get { return alarmTypeName_; }
      set {
        alarmTypeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "transition_kind" field.</summary>
    public const int TransitionKindFieldNumber = 4;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind transitionKind_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified;
    /// <summary>
    /// What kind of state change this event represents.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind TransitionKind {
      get { return transitionKind_; }
      set {
        transitionKind_ = value;
      }
    }

    /// <summary>Field number for the "severity" field.</summary>
    public const int SeverityFieldNumber = 5;
    private int severity_;
    /// <summary>
    /// Raw MXAccess severity value. Mapping to OPC UA 0-1000 happens server-side
    /// in lmxopcua via MxAccessSeverityMapper; the gateway preserves the native
    /// MXAccess scale.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Severity {
      get { return severity_; }
      set {
        severity_ = value;
      }
    }

    /// <summary>Field number for the "original_raise_timestamp" field.</summary>
    public const int OriginalRaiseTimestampFieldNumber = 6;
    private global::Google.Protobuf.WellKnownTypes.Timestamp originalRaiseTimestamp_;
    /// <summary>
    /// When the alarm originally entered the active state. Preserved across
    /// acknowledge transitions so the Part 9 condition keeps the original raise
    /// time. Unset on retrigger from a previously-cleared condition.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp OriginalRaiseTimestamp {
      get { return originalRaiseTimestamp_; }
      set {
        originalRaiseTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "transition_timestamp" field.</summary>
    public const int TransitionTimestampFieldNumber = 7;
    private global::Google.Protobuf.WellKnownTypes.Timestamp transitionTimestamp_;
    /// <summary>
    /// When this specific transition occurred (raise time on Raise, ack time on
    /// Acknowledge, clear time on Clear).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp TransitionTimestamp {
      get { return transitionTimestamp_; }
      set {
        transitionTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 8;
    private string operatorUser_ = "";
    /// <summary>
    /// Operator principal recorded by MXAccess on Acknowledge transitions.
    /// Empty on raise / clear.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_comment" field.</summary>
    public const int OperatorCommentFieldNumber = 9;
    private string operatorComment_ = "";
    /// <summary>
    /// Operator-supplied comment recorded by MXAccess on Acknowledge transitions.
    /// Empty on raise / clear or when no comment was supplied.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorComment {
      get { return operatorComment_; }
      set {
        operatorComment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "category" field.</summary>
    public const int CategoryFieldNumber = 10;
    private string category_ = "";
    /// <summary>
    /// MxAccess alarm category (taxonomy bucket configured in the Galaxy
    /// template, e.g. "Process", "Safety", "Diagnostics").
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Category {
      get { return category_; }
      set {
        category_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 11;
    private string description_ = "";
    /// <summary>
    /// Human-readable alarm description from the MxAccess alarm definition.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "current_value" field.</summary>
    public const int CurrentValueFieldNumber = 12;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue currentValue_;
    /// <summary>
    /// Current alarm value (the value of the source attribute at the moment of
    /// transition). Optional; populated when MxAccess surfaces it.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue CurrentValue {
      get { return currentValue_; }
      set {
        currentValue_ = value;
      }
    }

    /// <summary>Field number for the "limit_value" field.</summary>
    public const int LimitValueFieldNumber = 13;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue limitValue_;
    /// <summary>
    /// Limit/threshold value that triggered the transition for limit alarms.
    /// Optional; populated for AnalogLimitAlarm-family transitions.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue LimitValue {
      get { return limitValue_; }
      set {
        limitValue_ = value;
      }
    }

    /// <summary>Field number for the "degraded" field.</summary>
    public const int DegradedFieldNumber = 14;
    private bool degraded_;
    /// <summary>
    /// True when this transition came from the subtag-monitoring fallback rather
    /// than the native alarmmgr provider — synthesized from data changes, reduced
    /// fidelity (synthetic GUID, no native raise time).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Degraded {
      get { return degraded_; }
      set {
        degraded_ = value;
      }
    }

    /// <summary>Field number for the "source_provider" field.</summary>
    public const int SourceProviderFieldNumber = 15;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode sourceProvider_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified;
    /// <summary>
    /// Which provider produced this transition.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode SourceProvider {
      get { return sourceProvider_; }
      set {
        sourceProvider_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OnAlarmTransitionEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OnAlarmTransitionEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmFullReference != other.AlarmFullReference) return false;
      if (SourceObjectReference != other.SourceObjectReference) return false;
      if (AlarmTypeName != other.AlarmTypeName) return false;
      if (TransitionKind != other.TransitionKind) return false;
      if (Severity != other.Severity) return false;
      if (!object.Equals(OriginalRaiseTimestamp, other.OriginalRaiseTimestamp)) return false;
      if (!object.Equals(TransitionTimestamp, other.TransitionTimestamp)) return false;
      if (OperatorUser != other.OperatorUser) return false;
      if (OperatorComment != other.OperatorComment) return false;
      if (Category != other.Category) return false;
      if (Description != other.Description) return false;
      if (!object.Equals(CurrentValue, other.CurrentValue)) return false;
      if (!object.Equals(LimitValue, other.LimitValue)) return false;
      if (Degraded != other.Degraded) return false;
      if (SourceProvider != other.SourceProvider) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmFullReference.Length != 0) hash ^= AlarmFullReference.GetHashCode();
      if (SourceObjectReference.Length != 0) hash ^= SourceObjectReference.GetHashCode();
      if (AlarmTypeName.Length != 0) hash ^= AlarmTypeName.GetHashCode();
      if (TransitionKind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified) hash ^= TransitionKind.GetHashCode();
      if (Severity != 0) hash ^= Severity.GetHashCode();
      if (originalRaiseTimestamp_ != null) hash ^= OriginalRaiseTimestamp.GetHashCode();
      if (transitionTimestamp_ != null) hash ^= TransitionTimestamp.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (OperatorComment.Length != 0) hash ^= OperatorComment.GetHashCode();
      if (Category.Length != 0) hash ^= Category.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (currentValue_ != null) hash ^= CurrentValue.GetHashCode();
      if (limitValue_ != null) hash ^= LimitValue.GetHashCode();
      if (Degraded != false) hash ^= Degraded.GetHashCode();
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= SourceProvider.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmTypeName);
      }
      if (TransitionKind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified) {
        output.WriteRawTag(32);
        output.WriteEnum((int) TransitionKind);
      }
      if (Severity != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(OriginalRaiseTimestamp);
      }
      if (transitionTimestamp_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(TransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(OperatorComment);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Category);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(Description);
      }
      if (currentValue_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(CurrentValue);
      }
      if (limitValue_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(LimitValue);
      }
      if (Degraded != false) {
        output.WriteRawTag(112);
        output.WriteBool(Degraded);
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(120);
        output.WriteEnum((int) SourceProvider);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmTypeName);
      }
      if (TransitionKind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified) {
        output.WriteRawTag(32);
        output.WriteEnum((int) TransitionKind);
      }
      if (Severity != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        output.WriteRawTag(50);
        output.WriteMessage(OriginalRaiseTimestamp);
      }
      if (transitionTimestamp_ != null) {
        output.WriteRawTag(58);
        output.WriteMessage(TransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(74);
        output.WriteString(OperatorComment);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(Category);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(Description);
      }
      if (currentValue_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(CurrentValue);
      }
      if (limitValue_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(LimitValue);
      }
      if (Degraded != false) {
        output.WriteRawTag(112);
        output.WriteBool(Degraded);
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(120);
        output.WriteEnum((int) SourceProvider);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmFullReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmTypeName);
      }
      if (TransitionKind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) TransitionKind);
      }
      if (Severity != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OriginalRaiseTimestamp);
      }
      if (transitionTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorComment);
      }
      if (Category.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Category);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (currentValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurrentValue);
      }
      if (limitValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LimitValue);
      }
      if (Degraded != false) {
        size += 1 + 1;
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SourceProvider);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OnAlarmTransitionEvent other) {
      if (other == null) {
        return;
      }
      if (other.AlarmFullReference.Length != 0) {
        AlarmFullReference = other.AlarmFullReference;
      }
      if (other.SourceObjectReference.Length != 0) {
        SourceObjectReference = other.SourceObjectReference;
      }
      if (other.AlarmTypeName.Length != 0) {
        AlarmTypeName = other.AlarmTypeName;
      }
      if (other.TransitionKind != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind.Unspecified) {
        TransitionKind = other.TransitionKind;
      }
      if (other.Severity != 0) {
        Severity = other.Severity;
      }
      if (other.originalRaiseTimestamp_ != null) {
        if (originalRaiseTimestamp_ == null) {
          OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        OriginalRaiseTimestamp.MergeFrom(other.OriginalRaiseTimestamp);
      }
      if (other.transitionTimestamp_ != null) {
        if (transitionTimestamp_ == null) {
          TransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        TransitionTimestamp.MergeFrom(other.TransitionTimestamp);
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      if (other.OperatorComment.Length != 0) {
        OperatorComment = other.OperatorComment;
      }
      if (other.Category.Length != 0) {
        Category = other.Category;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.currentValue_ != null) {
        if (currentValue_ == null) {
          CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        CurrentValue.MergeFrom(other.CurrentValue);
      }
      if (other.limitValue_ != null) {
        if (limitValue_ == null) {
          LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        LimitValue.MergeFrom(other.LimitValue);
      }
      if (other.Degraded != false) {
        Degraded = other.Degraded;
      }
      if (other.SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        SourceProvider = other.SourceProvider;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 32: {
            TransitionKind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind) input.ReadEnum();
            break;
          }
          case 40: {
            Severity = input.ReadInt32();
            break;
          }
          case 50: {
            if (originalRaiseTimestamp_ == null) {
              OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTimestamp);
            break;
          }
          case 58: {
            if (transitionTimestamp_ == null) {
              TransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TransitionTimestamp);
            break;
          }
          case 66: {
            OperatorUser = input.ReadString();
            break;
          }
          case 74: {
            OperatorComment = input.ReadString();
            break;
          }
          case 82: {
            Category = input.ReadString();
            break;
          }
          case 90: {
            Description = input.ReadString();
            break;
          }
          case 98: {
            if (currentValue_ == null) {
              CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(CurrentValue);
            break;
          }
          case 106: {
            if (limitValue_ == null) {
              LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(LimitValue);
            break;
          }
          case 112: {
            Degraded = input.ReadBool();
            break;
          }
          case 120: {
            SourceProvider = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 32: {
            TransitionKind = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmTransitionKind) input.ReadEnum();
            break;
          }
          case 40: {
            Severity = input.ReadInt32();
            break;
          }
          case 50: {
            if (originalRaiseTimestamp_ == null) {
              OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTimestamp);
            break;
          }
          case 58: {
            if (transitionTimestamp_ == null) {
              TransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(TransitionTimestamp);
            break;
          }
          case 66: {
            OperatorUser = input.ReadString();
            break;
          }
          case 74: {
            OperatorComment = input.ReadString();
            break;
          }
          case 82: {
            Category = input.ReadString();
            break;
          }
          case 90: {
            Description = input.ReadString();
            break;
          }
          case 98: {
            if (currentValue_ == null) {
              CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(CurrentValue);
            break;
          }
          case 106: {
            if (limitValue_ == null) {
              LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(LimitValue);
            break;
          }
          case 112: {
            Degraded = input.ReadBool();
            break;
          }
          case 120: {
            SourceProvider = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class OnAlarmProviderModeChangedEvent : pb::IMessage<OnAlarmProviderModeChangedEvent>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<OnAlarmProviderModeChangedEvent> _parser = new pb::MessageParser<OnAlarmProviderModeChangedEvent>(() => new OnAlarmProviderModeChangedEvent());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<OnAlarmProviderModeChangedEvent> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[80]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmProviderModeChangedEvent() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmProviderModeChangedEvent(OnAlarmProviderModeChangedEvent other) : this() {
      mode_ = other.mode_;
      reason_ = other.reason_;
      hresult_ = other.hresult_;
      at_ = other.at_ != null ? other.at_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public OnAlarmProviderModeChangedEvent Clone() {
      return new OnAlarmProviderModeChangedEvent(this);
    }

    /// <summary>Field number for the "mode" field.</summary>
    public const int ModeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode mode_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode Mode {
      get { return mode_; }
      set {
        mode_ = value;
      }
    }

    /// <summary>Field number for the "reason" field.</summary>
    public const int ReasonFieldNumber = 2;
    private string reason_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Reason {
      get { return reason_; }
      set {
        reason_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 3;
    private int hresult_;
    /// <summary>
    /// COM HRESULT that triggered failover; 0 on failback
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { return hresult_; }
      set {
        hresult_ = value;
      }
    }

    /// <summary>Field number for the "at" field.</summary>
    public const int AtFieldNumber = 4;
    private global::Google.Protobuf.WellKnownTypes.Timestamp at_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp At {
      get { return at_; }
      set {
        at_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as OnAlarmProviderModeChangedEvent);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(OnAlarmProviderModeChangedEvent other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Mode != other.Mode) return false;
      if (Reason != other.Reason) return false;
      if (Hresult != other.Hresult) return false;
      if (!object.Equals(At, other.At)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= Mode.GetHashCode();
      if (Reason.Length != 0) hash ^= Reason.GetHashCode();
      if (Hresult != 0) hash ^= Hresult.GetHashCode();
      if (at_ != null) hash ^= At.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Mode);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Reason);
      }
      if (Hresult != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Hresult);
      }
      if (at_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(At);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Mode);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Reason);
      }
      if (Hresult != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(Hresult);
      }
      if (at_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(At);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Mode);
      }
      if (Reason.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Reason);
      }
      if (Hresult != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      if (at_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(At);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(OnAlarmProviderModeChangedEvent other) {
      if (other == null) {
        return;
      }
      if (other.Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        Mode = other.Mode;
      }
      if (other.Reason.Length != 0) {
        Reason = other.Reason;
      }
      if (other.Hresult != 0) {
        Hresult = other.Hresult;
      }
      if (other.at_ != null) {
        if (at_ == null) {
          At = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        At.MergeFrom(other.At);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Mode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 18: {
            Reason = input.ReadString();
            break;
          }
          case 24: {
            Hresult = input.ReadInt32();
            break;
          }
          case 34: {
            if (at_ == null) {
              At = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(At);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Mode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 18: {
            Reason = input.ReadString();
            break;
          }
          case 24: {
            Hresult = input.ReadInt32();
            break;
          }
          case 34: {
            if (at_ == null) {
              At = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(At);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Snapshot of a currently-active MXAccess alarm condition, returned from a
  /// QueryActiveAlarms ConditionRefresh stream.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ActiveAlarmSnapshot : pb::IMessage<ActiveAlarmSnapshot>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ActiveAlarmSnapshot> _parser = new pb::MessageParser<ActiveAlarmSnapshot>(() => new ActiveAlarmSnapshot());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ActiveAlarmSnapshot> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[81]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActiveAlarmSnapshot() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActiveAlarmSnapshot(ActiveAlarmSnapshot other) : this() {
      alarmFullReference_ = other.alarmFullReference_;
      sourceObjectReference_ = other.sourceObjectReference_;
      alarmTypeName_ = other.alarmTypeName_;
      severity_ = other.severity_;
      originalRaiseTimestamp_ = other.originalRaiseTimestamp_ != null ? other.originalRaiseTimestamp_.Clone() : null;
      currentState_ = other.currentState_;
      category_ = other.category_;
      description_ = other.description_;
      lastTransitionTimestamp_ = other.lastTransitionTimestamp_ != null ? other.lastTransitionTimestamp_.Clone() : null;
      operatorUser_ = other.operatorUser_;
      operatorComment_ = other.operatorComment_;
      currentValue_ = other.currentValue_ != null ? other.currentValue_.Clone() : null;
      limitValue_ = other.limitValue_ != null ? other.limitValue_.Clone() : null;
      degraded_ = other.degraded_;
      sourceProvider_ = other.sourceProvider_;
      fromTruncatedSnapshot_ = other.fromTruncatedSnapshot_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ActiveAlarmSnapshot Clone() {
      return new ActiveAlarmSnapshot(this);
    }

    /// <summary>Field number for the "alarm_full_reference" field.</summary>
    public const int AlarmFullReferenceFieldNumber = 1;
    private string alarmFullReference_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFullReference {
      get { return alarmFullReference_; }
      set {
        alarmFullReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "source_object_reference" field.</summary>
    public const int SourceObjectReferenceFieldNumber = 2;
    private string sourceObjectReference_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string SourceObjectReference {
      get { return sourceObjectReference_; }
      set {
        sourceObjectReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_type_name" field.</summary>
    public const int AlarmTypeNameFieldNumber = 3;
    private string alarmTypeName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmTypeName {
      get { return alarmTypeName_; }
      set {
        alarmTypeName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "severity" field.</summary>
    public const int SeverityFieldNumber = 4;
    private int severity_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Severity {
      get { return severity_; }
      set {
        severity_ = value;
      }
    }

    /// <summary>Field number for the "original_raise_timestamp" field.</summary>
    public const int OriginalRaiseTimestampFieldNumber = 5;
    private global::Google.Protobuf.WellKnownTypes.Timestamp originalRaiseTimestamp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp OriginalRaiseTimestamp {
      get { return originalRaiseTimestamp_; }
      set {
        originalRaiseTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "current_state" field.</summary>
    public const int CurrentStateFieldNumber = 6;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState currentState_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState CurrentState {
      get { return currentState_; }
      set {
        currentState_ = value;
      }
    }

    /// <summary>Field number for the "category" field.</summary>
    public const int CategoryFieldNumber = 7;
    private string category_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Category {
      get { return category_; }
      set {
        category_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "description" field.</summary>
    public const int DescriptionFieldNumber = 8;
    private string description_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Description {
      get { return description_; }
      set {
        description_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "last_transition_timestamp" field.</summary>
    public const int LastTransitionTimestampFieldNumber = 9;
    private global::Google.Protobuf.WellKnownTypes.Timestamp lastTransitionTimestamp_;
    /// <summary>
    /// When the most recent state transition occurred (last raise, last ack,
    /// last clear).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp LastTransitionTimestamp {
      get { return lastTransitionTimestamp_; }
      set {
        lastTransitionTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 10;
    private string operatorUser_ = "";
    /// <summary>
    /// Operator who acknowledged the alarm if the current state is ActiveAcked.
    /// Empty otherwise.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_comment" field.</summary>
    public const int OperatorCommentFieldNumber = 11;
    private string operatorComment_ = "";
    /// <summary>
    /// Operator comment recorded with the most recent acknowledge if the current
    /// state is ActiveAcked. Empty otherwise.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorComment {
      get { return operatorComment_; }
      set {
        operatorComment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "current_value" field.</summary>
    public const int CurrentValueFieldNumber = 12;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue currentValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue CurrentValue {
      get { return currentValue_; }
      set {
        currentValue_ = value;
      }
    }

    /// <summary>Field number for the "limit_value" field.</summary>
    public const int LimitValueFieldNumber = 13;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue limitValue_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue LimitValue {
      get { return limitValue_; }
      set {
        limitValue_ = value;
      }
    }

    /// <summary>Field number for the "degraded" field.</summary>
    public const int DegradedFieldNumber = 14;
    private bool degraded_;
    /// <summary>
    /// True when this snapshot came from the subtag-monitoring fallback rather
    /// than the native alarmmgr provider — synthesized from data changes, reduced
    /// fidelity (synthetic GUID, no native raise time). Mirrors
    /// OnAlarmTransitionEvent.degraded.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Degraded {
      get { return degraded_; }
      set {
        degraded_ = value;
      }
    }

    /// <summary>Field number for the "source_provider" field.</summary>
    public const int SourceProviderFieldNumber = 15;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode sourceProvider_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified;
    /// <summary>
    /// Which provider produced this snapshot. Mirrors
    /// OnAlarmTransitionEvent.source_provider; always ALARMMGR or SUBTAG on the
    /// wire (never UNSPECIFIED).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode SourceProvider {
      get { return sourceProvider_; }
      set {
        sourceProvider_ = value;
      }
    }

    /// <summary>Field number for the "from_truncated_snapshot" field.</summary>
    public const int FromTruncatedSnapshotFieldNumber = 16;
    private bool fromTruncatedSnapshot_;
    /// <summary>
    /// True when the provider fetch that produced this snapshot hit the per-fetch
    /// cap: the snapshot set may omit active alarms, and the worker suspended its
    /// absence-implies-Clear inference for that poll. Says nothing about THIS
    /// record's fidelity — the record is as accurate as any other; it flags that
    /// the set it belongs to is possibly incomplete. QueryActiveAlarms returns a
    /// bare `stream ActiveAlarmSnapshot` with no envelope message, so a per-record
    /// boolean is the only additive way to carry set-level degraded status on that
    /// RPC. Distinct from `degraded`, which is about the subtag fallback provider.
    /// Additive (proto3): clients that ignore it deserialize the stream unchanged.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool FromTruncatedSnapshot {
      get { return fromTruncatedSnapshot_; }
      set {
        fromTruncatedSnapshot_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ActiveAlarmSnapshot);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ActiveAlarmSnapshot other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AlarmFullReference != other.AlarmFullReference) return false;
      if (SourceObjectReference != other.SourceObjectReference) return false;
      if (AlarmTypeName != other.AlarmTypeName) return false;
      if (Severity != other.Severity) return false;
      if (!object.Equals(OriginalRaiseTimestamp, other.OriginalRaiseTimestamp)) return false;
      if (CurrentState != other.CurrentState) return false;
      if (Category != other.Category) return false;
      if (Description != other.Description) return false;
      if (!object.Equals(LastTransitionTimestamp, other.LastTransitionTimestamp)) return false;
      if (OperatorUser != other.OperatorUser) return false;
      if (OperatorComment != other.OperatorComment) return false;
      if (!object.Equals(CurrentValue, other.CurrentValue)) return false;
      if (!object.Equals(LimitValue, other.LimitValue)) return false;
      if (Degraded != other.Degraded) return false;
      if (SourceProvider != other.SourceProvider) return false;
      if (FromTruncatedSnapshot != other.FromTruncatedSnapshot) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (AlarmFullReference.Length != 0) hash ^= AlarmFullReference.GetHashCode();
      if (SourceObjectReference.Length != 0) hash ^= SourceObjectReference.GetHashCode();
      if (AlarmTypeName.Length != 0) hash ^= AlarmTypeName.GetHashCode();
      if (Severity != 0) hash ^= Severity.GetHashCode();
      if (originalRaiseTimestamp_ != null) hash ^= OriginalRaiseTimestamp.GetHashCode();
      if (CurrentState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified) hash ^= CurrentState.GetHashCode();
      if (Category.Length != 0) hash ^= Category.GetHashCode();
      if (Description.Length != 0) hash ^= Description.GetHashCode();
      if (lastTransitionTimestamp_ != null) hash ^= LastTransitionTimestamp.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (OperatorComment.Length != 0) hash ^= OperatorComment.GetHashCode();
      if (currentValue_ != null) hash ^= CurrentValue.GetHashCode();
      if (limitValue_ != null) hash ^= LimitValue.GetHashCode();
      if (Degraded != false) hash ^= Degraded.GetHashCode();
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= SourceProvider.GetHashCode();
      if (FromTruncatedSnapshot != false) hash ^= FromTruncatedSnapshot.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmTypeName);
      }
      if (Severity != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(OriginalRaiseTimestamp);
      }
      if (CurrentState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified) {
        output.WriteRawTag(48);
        output.WriteEnum((int) CurrentState);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Category);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Description);
      }
      if (lastTransitionTimestamp_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(LastTransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(OperatorComment);
      }
      if (currentValue_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(CurrentValue);
      }
      if (limitValue_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(LimitValue);
      }
      if (Degraded != false) {
        output.WriteRawTag(112);
        output.WriteBool(Degraded);
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(120);
        output.WriteEnum((int) SourceProvider);
      }
      if (FromTruncatedSnapshot != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(FromTruncatedSnapshot);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmTypeName);
      }
      if (Severity != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(OriginalRaiseTimestamp);
      }
      if (CurrentState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified) {
        output.WriteRawTag(48);
        output.WriteEnum((int) CurrentState);
      }
      if (Category.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Category);
      }
      if (Description.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(Description);
      }
      if (lastTransitionTimestamp_ != null) {
        output.WriteRawTag(74);
        output.WriteMessage(LastTransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(82);
        output.WriteString(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        output.WriteRawTag(90);
        output.WriteString(OperatorComment);
      }
      if (currentValue_ != null) {
        output.WriteRawTag(98);
        output.WriteMessage(CurrentValue);
      }
      if (limitValue_ != null) {
        output.WriteRawTag(106);
        output.WriteMessage(LimitValue);
      }
      if (Degraded != false) {
        output.WriteRawTag(112);
        output.WriteBool(Degraded);
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(120);
        output.WriteEnum((int) SourceProvider);
      }
      if (FromTruncatedSnapshot != false) {
        output.WriteRawTag(128, 1);
        output.WriteBool(FromTruncatedSnapshot);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (AlarmFullReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFullReference);
      }
      if (SourceObjectReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SourceObjectReference);
      }
      if (AlarmTypeName.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmTypeName);
      }
      if (Severity != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Severity);
      }
      if (originalRaiseTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(OriginalRaiseTimestamp);
      }
      if (CurrentState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) CurrentState);
      }
      if (Category.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Category);
      }
      if (Description.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Description);
      }
      if (lastTransitionTimestamp_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LastTransitionTimestamp);
      }
      if (OperatorUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (OperatorComment.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorComment);
      }
      if (currentValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(CurrentValue);
      }
      if (limitValue_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(LimitValue);
      }
      if (Degraded != false) {
        size += 1 + 1;
      }
      if (SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) SourceProvider);
      }
      if (FromTruncatedSnapshot != false) {
        size += 2 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ActiveAlarmSnapshot other) {
      if (other == null) {
        return;
      }
      if (other.AlarmFullReference.Length != 0) {
        AlarmFullReference = other.AlarmFullReference;
      }
      if (other.SourceObjectReference.Length != 0) {
        SourceObjectReference = other.SourceObjectReference;
      }
      if (other.AlarmTypeName.Length != 0) {
        AlarmTypeName = other.AlarmTypeName;
      }
      if (other.Severity != 0) {
        Severity = other.Severity;
      }
      if (other.originalRaiseTimestamp_ != null) {
        if (originalRaiseTimestamp_ == null) {
          OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        OriginalRaiseTimestamp.MergeFrom(other.OriginalRaiseTimestamp);
      }
      if (other.CurrentState != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState.Unspecified) {
        CurrentState = other.CurrentState;
      }
      if (other.Category.Length != 0) {
        Category = other.Category;
      }
      if (other.Description.Length != 0) {
        Description = other.Description;
      }
      if (other.lastTransitionTimestamp_ != null) {
        if (lastTransitionTimestamp_ == null) {
          LastTransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        LastTransitionTimestamp.MergeFrom(other.LastTransitionTimestamp);
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      if (other.OperatorComment.Length != 0) {
        OperatorComment = other.OperatorComment;
      }
      if (other.currentValue_ != null) {
        if (currentValue_ == null) {
          CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        CurrentValue.MergeFrom(other.CurrentValue);
      }
      if (other.limitValue_ != null) {
        if (limitValue_ == null) {
          LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        LimitValue.MergeFrom(other.LimitValue);
      }
      if (other.Degraded != false) {
        Degraded = other.Degraded;
      }
      if (other.SourceProvider != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        SourceProvider = other.SourceProvider;
      }
      if (other.FromTruncatedSnapshot != false) {
        FromTruncatedSnapshot = other.FromTruncatedSnapshot;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 32: {
            Severity = input.ReadInt32();
            break;
          }
          case 42: {
            if (originalRaiseTimestamp_ == null) {
              OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTimestamp);
            break;
          }
          case 48: {
            CurrentState = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState) input.ReadEnum();
            break;
          }
          case 58: {
            Category = input.ReadString();
            break;
          }
          case 66: {
            Description = input.ReadString();
            break;
          }
          case 74: {
            if (lastTransitionTimestamp_ == null) {
              LastTransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(LastTransitionTimestamp);
            break;
          }
          case 82: {
            OperatorUser = input.ReadString();
            break;
          }
          case 90: {
            OperatorComment = input.ReadString();
            break;
          }
          case 98: {
            if (currentValue_ == null) {
              CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(CurrentValue);
            break;
          }
          case 106: {
            if (limitValue_ == null) {
              LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(LimitValue);
            break;
          }
          case 112: {
            Degraded = input.ReadBool();
            break;
          }
          case 120: {
            SourceProvider = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 128: {
            FromTruncatedSnapshot = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 18: {
            SourceObjectReference = input.ReadString();
            break;
          }
          case 26: {
            AlarmTypeName = input.ReadString();
            break;
          }
          case 32: {
            Severity = input.ReadInt32();
            break;
          }
          case 42: {
            if (originalRaiseTimestamp_ == null) {
              OriginalRaiseTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(OriginalRaiseTimestamp);
            break;
          }
          case 48: {
            CurrentState = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmConditionState) input.ReadEnum();
            break;
          }
          case 58: {
            Category = input.ReadString();
            break;
          }
          case 66: {
            Description = input.ReadString();
            break;
          }
          case 74: {
            if (lastTransitionTimestamp_ == null) {
              LastTransitionTimestamp = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(LastTransitionTimestamp);
            break;
          }
          case 82: {
            OperatorUser = input.ReadString();
            break;
          }
          case 90: {
            OperatorComment = input.ReadString();
            break;
          }
          case 98: {
            if (currentValue_ == null) {
              CurrentValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(CurrentValue);
            break;
          }
          case 106: {
            if (limitValue_ == null) {
              LimitValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(LimitValue);
            break;
          }
          case 112: {
            Degraded = input.ReadBool();
            break;
          }
          case 120: {
            SourceProvider = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 128: {
            FromTruncatedSnapshot = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AcknowledgeAlarmRequest : pb::IMessage<AcknowledgeAlarmRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AcknowledgeAlarmRequest> _parser = new pb::MessageParser<AcknowledgeAlarmRequest>(() => new AcknowledgeAlarmRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AcknowledgeAlarmRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[82]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmRequest(AcknowledgeAlarmRequest other) : this() {
      clientCorrelationId_ = other.clientCorrelationId_;
      alarmFullReference_ = other.alarmFullReference_;
      comment_ = other.comment_;
      operatorUser_ = other.operatorUser_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmRequest Clone() {
      return new AcknowledgeAlarmRequest(this);
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 2;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_full_reference" field.</summary>
    public const int AlarmFullReferenceFieldNumber = 3;
    private string alarmFullReference_ = "";
    /// <summary>
    /// Fully-qualified alarm reference matching OnAlarmTransitionEvent.alarm_full_reference.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFullReference {
      get { return alarmFullReference_; }
      set {
        alarmFullReference_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "comment" field.</summary>
    public const int CommentFieldNumber = 4;
    private string comment_ = "";
    /// <summary>
    /// Operator-supplied comment forwarded to MXAccess.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Comment {
      get { return comment_; }
      set {
        comment_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "operator_user" field.</summary>
    public const int OperatorUserFieldNumber = 5;
    private string operatorUser_ = "";
    /// <summary>
    /// Operator principal performing the acknowledgement. The lmxopcua side
    /// resolves this from the OPC UA session prior to invoking the RPC.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string OperatorUser {
      get { return operatorUser_; }
      set {
        operatorUser_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AcknowledgeAlarmRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AcknowledgeAlarmRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      if (AlarmFullReference != other.AlarmFullReference) return false;
      if (Comment != other.Comment) return false;
      if (OperatorUser != other.OperatorUser) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (AlarmFullReference.Length != 0) hash ^= AlarmFullReference.GetHashCode();
      if (Comment.Length != 0) hash ^= Comment.GetHashCode();
      if (OperatorUser.Length != 0) hash ^= OperatorUser.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmFullReference);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorUser);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFullReference.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(AlarmFullReference);
      }
      if (Comment.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Comment);
      }
      if (OperatorUser.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(OperatorUser);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (AlarmFullReference.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFullReference);
      }
      if (Comment.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Comment);
      }
      if (OperatorUser.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(OperatorUser);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AcknowledgeAlarmRequest other) {
      if (other == null) {
        return;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      if (other.AlarmFullReference.Length != 0) {
        AlarmFullReference = other.AlarmFullReference;
      }
      if (other.Comment.Length != 0) {
        Comment = other.Comment;
      }
      if (other.OperatorUser.Length != 0) {
        OperatorUser = other.OperatorUser;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 34: {
            Comment = input.ReadString();
            break;
          }
          case 42: {
            OperatorUser = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 26: {
            AlarmFullReference = input.ReadString();
            break;
          }
          case 34: {
            Comment = input.ReadString();
            break;
          }
          case 42: {
            OperatorUser = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AcknowledgeAlarmReply : pb::IMessage<AcknowledgeAlarmReply>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AcknowledgeAlarmReply> _parser = new pb::MessageParser<AcknowledgeAlarmReply>(() => new AcknowledgeAlarmReply());
    private pb::UnknownFieldSet _unknownFields;
    private int _hasBits0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AcknowledgeAlarmReply> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[83]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReply() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReply(AcknowledgeAlarmReply other) : this() {
      _hasBits0 = other._hasBits0;
      correlationId_ = other.correlationId_;
      protocolStatus_ = other.protocolStatus_ != null ? other.protocolStatus_.Clone() : null;
      hresult_ = other.hresult_;
      status_ = other.status_ != null ? other.status_.Clone() : null;
      diagnosticMessage_ = other.diagnosticMessage_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AcknowledgeAlarmReply Clone() {
      return new AcknowledgeAlarmReply(this);
    }

    /// <summary>Field number for the "correlation_id" field.</summary>
    public const int CorrelationIdFieldNumber = 2;
    private string correlationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string CorrelationId {
      get { return correlationId_; }
      set {
        correlationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "protocol_status" field.</summary>
    public const int ProtocolStatusFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus protocolStatus_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus ProtocolStatus {
      get { return protocolStatus_; }
      set {
        protocolStatus_ = value;
      }
    }

    /// <summary>Field number for the "hresult" field.</summary>
    public const int HresultFieldNumber = 4;
    private readonly static int HresultDefaultValue = 0;

    private int hresult_;
    /// <summary>
    /// Native ack return code echoed from the worker. The worker carries the
    /// ack outcome as a single int32 (AcknowledgeAlarmReplyPayload.native_status,
    /// = AlarmAckByName / AlarmAckByGUID return code; 0 = success); the gateway's
    /// WorkerAlarmRpcDispatcher copies that value here. This is the authoritative
    /// ack-outcome field for the public RPC. Absent only when the worker reply
    /// omitted the value entirely (a protocol violation).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Hresult {
      get { if ((_hasBits0 & 1) != 0) { return hresult_; } else { return HresultDefaultValue; } }
      set {
        _hasBits0 |= 1;
        hresult_ = value;
      }
    }
    /// <summary>Gets whether the "hresult" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasHresult {
      get { return (_hasBits0 & 1) != 0; }
    }
    /// <summary>Clears the value of the "hresult" field</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearHresult() {
      _hasBits0 &= ~1;
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 5;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy status_;
    /// <summary>
    /// Reserved for a structured MxStatusProxy view of the ack outcome. The
    /// worker by-name/by-GUID ack path produces only the int32 return code
    /// (see `hresult`), so the current gateway leaves this field UNSET on every
    /// reply. Clients must read `hresult` (and `protocol_status`) for the ack
    /// result and must not depend on `status` being populated.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "diagnostic_message" field.</summary>
    public const int DiagnosticMessageFieldNumber = 6;
    private string diagnosticMessage_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DiagnosticMessage {
      get { return diagnosticMessage_; }
      set {
        diagnosticMessage_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AcknowledgeAlarmReply);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AcknowledgeAlarmReply other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (CorrelationId != other.CorrelationId) return false;
      if (!object.Equals(ProtocolStatus, other.ProtocolStatus)) return false;
      if (Hresult != other.Hresult) return false;
      if (!object.Equals(Status, other.Status)) return false;
      if (DiagnosticMessage != other.DiagnosticMessage) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (CorrelationId.Length != 0) hash ^= CorrelationId.GetHashCode();
      if (protocolStatus_ != null) hash ^= ProtocolStatus.GetHashCode();
      if (HasHresult) hash ^= Hresult.GetHashCode();
      if (status_ != null) hash ^= Status.GetHashCode();
      if (DiagnosticMessage.Length != 0) hash ^= DiagnosticMessage.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CorrelationId);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ProtocolStatus);
      }
      if (HasHresult) {
        output.WriteRawTag(32);
        output.WriteInt32(Hresult);
      }
      if (status_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Status);
      }
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(DiagnosticMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (CorrelationId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CorrelationId);
      }
      if (protocolStatus_ != null) {
        output.WriteRawTag(26);
        output.WriteMessage(ProtocolStatus);
      }
      if (HasHresult) {
        output.WriteRawTag(32);
        output.WriteInt32(Hresult);
      }
      if (status_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(Status);
      }
      if (DiagnosticMessage.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(DiagnosticMessage);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (CorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CorrelationId);
      }
      if (protocolStatus_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProtocolStatus);
      }
      if (HasHresult) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Hresult);
      }
      if (status_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Status);
      }
      if (DiagnosticMessage.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DiagnosticMessage);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AcknowledgeAlarmReply other) {
      if (other == null) {
        return;
      }
      if (other.CorrelationId.Length != 0) {
        CorrelationId = other.CorrelationId;
      }
      if (other.protocolStatus_ != null) {
        if (protocolStatus_ == null) {
          ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
        }
        ProtocolStatus.MergeFrom(other.ProtocolStatus);
      }
      if (other.HasHresult) {
        Hresult = other.Hresult;
      }
      if (other.status_ != null) {
        if (status_ == null) {
          Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
        }
        Status.MergeFrom(other.Status);
      }
      if (other.DiagnosticMessage.Length != 0) {
        DiagnosticMessage = other.DiagnosticMessage;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 18: {
            CorrelationId = input.ReadString();
            break;
          }
          case 26: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 32: {
            Hresult = input.ReadInt32();
            break;
          }
          case 42: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
          case 50: {
            DiagnosticMessage = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 18: {
            CorrelationId = input.ReadString();
            break;
          }
          case 26: {
            if (protocolStatus_ == null) {
              ProtocolStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatus();
            }
            input.ReadMessage(ProtocolStatus);
            break;
          }
          case 32: {
            Hresult = input.ReadInt32();
            break;
          }
          case 42: {
            if (status_ == null) {
              Status = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusProxy();
            }
            input.ReadMessage(Status);
            break;
          }
          case 50: {
            DiagnosticMessage = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Request to attach to the gateway's central alarm feed (StreamAlarms).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class StreamAlarmsRequest : pb::IMessage<StreamAlarmsRequest>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StreamAlarmsRequest> _parser = new pb::MessageParser<StreamAlarmsRequest>(() => new StreamAlarmsRequest());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StreamAlarmsRequest> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[84]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamAlarmsRequest() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamAlarmsRequest(StreamAlarmsRequest other) : this() {
      clientCorrelationId_ = other.clientCorrelationId_;
      alarmFilterPrefix_ = other.alarmFilterPrefix_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StreamAlarmsRequest Clone() {
      return new StreamAlarmsRequest(this);
    }

    /// <summary>Field number for the "client_correlation_id" field.</summary>
    public const int ClientCorrelationIdFieldNumber = 1;
    private string clientCorrelationId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string ClientCorrelationId {
      get { return clientCorrelationId_; }
      set {
        clientCorrelationId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "alarm_filter_prefix" field.</summary>
    public const int AlarmFilterPrefixFieldNumber = 2;
    private string alarmFilterPrefix_ = "";
    /// <summary>
    /// Optional alarm-reference prefix scoping the feed to an equipment
    /// sub-tree. Empty streams every active alarm.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string AlarmFilterPrefix {
      get { return alarmFilterPrefix_; }
      set {
        alarmFilterPrefix_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StreamAlarmsRequest);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StreamAlarmsRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ClientCorrelationId != other.ClientCorrelationId) return false;
      if (AlarmFilterPrefix != other.AlarmFilterPrefix) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ClientCorrelationId.Length != 0) hash ^= ClientCorrelationId.GetHashCode();
      if (AlarmFilterPrefix.Length != 0) hash ^= AlarmFilterPrefix.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ClientCorrelationId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ClientCorrelationId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ClientCorrelationId);
      }
      if (AlarmFilterPrefix.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AlarmFilterPrefix);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StreamAlarmsRequest other) {
      if (other == null) {
        return;
      }
      if (other.ClientCorrelationId.Length != 0) {
        ClientCorrelationId = other.ClientCorrelationId;
      }
      if (other.AlarmFilterPrefix.Length != 0) {
        AlarmFilterPrefix = other.AlarmFilterPrefix;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 18: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            ClientCorrelationId = input.ReadString();
            break;
          }
          case 18: {
            AlarmFilterPrefix = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// One message on the StreamAlarms feed. The stream opens with a
  /// `provider_status` (the current provider mode), then a `snapshot_status`
  /// (whether the cached active set may be incomplete), then one `active_alarm`
  /// per currently-active alarm, then a single `snapshot_complete`. After that
  /// come the live frames: a `transition` for every subsequent alarm change,
  /// interleaved with a further `provider_status` on each failover/failback and a
  /// further `snapshot_status` on each change of the truncation verdict.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AlarmFeedMessage : pb::IMessage<AlarmFeedMessage>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AlarmFeedMessage> _parser = new pb::MessageParser<AlarmFeedMessage>(() => new AlarmFeedMessage());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AlarmFeedMessage> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[85]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFeedMessage() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFeedMessage(AlarmFeedMessage other) : this() {
      switch (other.PayloadCase) {
        case PayloadOneofCase.ActiveAlarm:
          ActiveAlarm = other.ActiveAlarm.Clone();
          break;
        case PayloadOneofCase.SnapshotComplete:
          SnapshotComplete = other.SnapshotComplete;
          break;
        case PayloadOneofCase.Transition:
          Transition = other.Transition.Clone();
          break;
        case PayloadOneofCase.ProviderStatus:
          ProviderStatus = other.ProviderStatus.Clone();
          break;
        case PayloadOneofCase.SnapshotStatus:
          SnapshotStatus = other.SnapshotStatus.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmFeedMessage Clone() {
      return new AlarmFeedMessage(this);
    }

    /// <summary>Field number for the "active_alarm" field.</summary>
    public const int ActiveAlarmFieldNumber = 1;
    /// <summary>
    /// Part of the initial active-alarm snapshot (ConditionRefresh).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot ActiveAlarm {
      get { return payloadCase_ == PayloadOneofCase.ActiveAlarm ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ActiveAlarm;
      }
    }

    /// <summary>Field number for the "snapshot_complete" field.</summary>
    public const int SnapshotCompleteFieldNumber = 2;
    /// <summary>
    /// Sentinel: the initial snapshot is fully delivered and `transition`
    /// messages follow. Always true when present.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool SnapshotComplete {
      get { return HasSnapshotComplete ? (bool) payload_ : false; }
      set {
        payload_ = value;
        payloadCase_ = PayloadOneofCase.SnapshotComplete;
      }
    }
    /// <summary>Gets whether the "snapshot_complete" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasSnapshotComplete {
      get { return payloadCase_ == PayloadOneofCase.SnapshotComplete; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "snapshot_complete" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearSnapshotComplete() {
      if (HasSnapshotComplete) {
        ClearPayload();
      }
    }

    /// <summary>Field number for the "transition" field.</summary>
    public const int TransitionFieldNumber = 3;
    /// <summary>
    /// A live alarm state change (raise / acknowledge / clear).
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent Transition {
      get { return payloadCase_ == PayloadOneofCase.Transition ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.Transition;
      }
    }

    /// <summary>Field number for the "provider_status" field.</summary>
    public const int ProviderStatusFieldNumber = 4;
    /// <summary>
    /// Provider-mode status. Emitted once on stream open and again on every
    /// failover/failback so late joiners learn the current mode immediately.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus ProviderStatus {
      get { return payloadCase_ == PayloadOneofCase.ProviderStatus ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.ProviderStatus;
      }
    }

    /// <summary>Field number for the "snapshot_status" field.</summary>
    public const int SnapshotStatusFieldNumber = 5;
    /// <summary>
    /// Snapshot-completeness status. Emitted once on stream open and again on
    /// every change of the truncation verdict, so late joiners learn whether the
    /// feed's active-alarm set may be incomplete.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus SnapshotStatus {
      get { return payloadCase_ == PayloadOneofCase.SnapshotStatus ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus) payload_ : null; }
      set {
        payload_ = value;
        payloadCase_ = value == null ? PayloadOneofCase.None : PayloadOneofCase.SnapshotStatus;
      }
    }

    private object payload_;
    /// <summary>Enum of possible cases for the "payload" oneof.</summary>
    public enum PayloadOneofCase {
      None = 0,
      ActiveAlarm = 1,
      SnapshotComplete = 2,
      Transition = 3,
      ProviderStatus = 4,
      SnapshotStatus = 5,
    }
    private PayloadOneofCase payloadCase_ = PayloadOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public PayloadOneofCase PayloadCase {
      get { return payloadCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearPayload() {
      payloadCase_ = PayloadOneofCase.None;
      payload_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AlarmFeedMessage);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmFeedMessage other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ActiveAlarm, other.ActiveAlarm)) return false;
      if (SnapshotComplete != other.SnapshotComplete) return false;
      if (!object.Equals(Transition, other.Transition)) return false;
      if (!object.Equals(ProviderStatus, other.ProviderStatus)) return false;
      if (!object.Equals(SnapshotStatus, other.SnapshotStatus)) return false;
      if (PayloadCase != other.PayloadCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (payloadCase_ == PayloadOneofCase.ActiveAlarm) hash ^= ActiveAlarm.GetHashCode();
      if (HasSnapshotComplete) hash ^= SnapshotComplete.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.Transition) hash ^= Transition.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.ProviderStatus) hash ^= ProviderStatus.GetHashCode();
      if (payloadCase_ == PayloadOneofCase.SnapshotStatus) hash ^= SnapshotStatus.GetHashCode();
      hash ^= (int) payloadCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (payloadCase_ == PayloadOneofCase.ActiveAlarm) {
        output.WriteRawTag(10);
        output.WriteMessage(ActiveAlarm);
      }
      if (HasSnapshotComplete) {
        output.WriteRawTag(16);
        output.WriteBool(SnapshotComplete);
      }
      if (payloadCase_ == PayloadOneofCase.Transition) {
        output.WriteRawTag(26);
        output.WriteMessage(Transition);
      }
      if (payloadCase_ == PayloadOneofCase.ProviderStatus) {
        output.WriteRawTag(34);
        output.WriteMessage(ProviderStatus);
      }
      if (payloadCase_ == PayloadOneofCase.SnapshotStatus) {
        output.WriteRawTag(42);
        output.WriteMessage(SnapshotStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (payloadCase_ == PayloadOneofCase.ActiveAlarm) {
        output.WriteRawTag(10);
        output.WriteMessage(ActiveAlarm);
      }
      if (HasSnapshotComplete) {
        output.WriteRawTag(16);
        output.WriteBool(SnapshotComplete);
      }
      if (payloadCase_ == PayloadOneofCase.Transition) {
        output.WriteRawTag(26);
        output.WriteMessage(Transition);
      }
      if (payloadCase_ == PayloadOneofCase.ProviderStatus) {
        output.WriteRawTag(34);
        output.WriteMessage(ProviderStatus);
      }
      if (payloadCase_ == PayloadOneofCase.SnapshotStatus) {
        output.WriteRawTag(42);
        output.WriteMessage(SnapshotStatus);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (payloadCase_ == PayloadOneofCase.ActiveAlarm) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActiveAlarm);
      }
      if (HasSnapshotComplete) {
        size += 1 + 1;
      }
      if (payloadCase_ == PayloadOneofCase.Transition) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Transition);
      }
      if (payloadCase_ == PayloadOneofCase.ProviderStatus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ProviderStatus);
      }
      if (payloadCase_ == PayloadOneofCase.SnapshotStatus) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(SnapshotStatus);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmFeedMessage other) {
      if (other == null) {
        return;
      }
      switch (other.PayloadCase) {
        case PayloadOneofCase.ActiveAlarm:
          if (ActiveAlarm == null) {
            ActiveAlarm = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot();
          }
          ActiveAlarm.MergeFrom(other.ActiveAlarm);
          break;
        case PayloadOneofCase.SnapshotComplete:
          SnapshotComplete = other.SnapshotComplete;
          break;
        case PayloadOneofCase.Transition:
          if (Transition == null) {
            Transition = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
          }
          Transition.MergeFrom(other.Transition);
          break;
        case PayloadOneofCase.ProviderStatus:
          if (ProviderStatus == null) {
            ProviderStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus();
          }
          ProviderStatus.MergeFrom(other.ProviderStatus);
          break;
        case PayloadOneofCase.SnapshotStatus:
          if (SnapshotStatus == null) {
            SnapshotStatus = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus();
          }
          SnapshotStatus.MergeFrom(other.SnapshotStatus);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot();
            if (payloadCase_ == PayloadOneofCase.ActiveAlarm) {
              subBuilder.MergeFrom(ActiveAlarm);
            }
            input.ReadMessage(subBuilder);
            ActiveAlarm = subBuilder;
            break;
          }
          case 16: {
            SnapshotComplete = input.ReadBool();
            break;
          }
          case 26: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
            if (payloadCase_ == PayloadOneofCase.Transition) {
              subBuilder.MergeFrom(Transition);
            }
            input.ReadMessage(subBuilder);
            Transition = subBuilder;
            break;
          }
          case 34: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus();
            if (payloadCase_ == PayloadOneofCase.ProviderStatus) {
              subBuilder.MergeFrom(ProviderStatus);
            }
            input.ReadMessage(subBuilder);
            ProviderStatus = subBuilder;
            break;
          }
          case 42: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus();
            if (payloadCase_ == PayloadOneofCase.SnapshotStatus) {
              subBuilder.MergeFrom(SnapshotStatus);
            }
            input.ReadMessage(subBuilder);
            SnapshotStatus = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.ActiveAlarmSnapshot();
            if (payloadCase_ == PayloadOneofCase.ActiveAlarm) {
              subBuilder.MergeFrom(ActiveAlarm);
            }
            input.ReadMessage(subBuilder);
            ActiveAlarm = subBuilder;
            break;
          }
          case 16: {
            SnapshotComplete = input.ReadBool();
            break;
          }
          case 26: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.OnAlarmTransitionEvent();
            if (payloadCase_ == PayloadOneofCase.Transition) {
              subBuilder.MergeFrom(Transition);
            }
            input.ReadMessage(subBuilder);
            Transition = subBuilder;
            break;
          }
          case 34: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderStatus();
            if (payloadCase_ == PayloadOneofCase.ProviderStatus) {
              subBuilder.MergeFrom(ProviderStatus);
            }
            input.ReadMessage(subBuilder);
            ProviderStatus = subBuilder;
            break;
          }
          case 42: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmSnapshotStatus();
            if (payloadCase_ == PayloadOneofCase.SnapshotStatus) {
              subBuilder.MergeFrom(SnapshotStatus);
            }
            input.ReadMessage(subBuilder);
            SnapshotStatus = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AlarmProviderStatus : pb::IMessage<AlarmProviderStatus>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AlarmProviderStatus> _parser = new pb::MessageParser<AlarmProviderStatus>(() => new AlarmProviderStatus());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AlarmProviderStatus> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[86]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmProviderStatus() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmProviderStatus(AlarmProviderStatus other) : this() {
      mode_ = other.mode_;
      degraded_ = other.degraded_;
      reason_ = other.reason_;
      since_ = other.since_ != null ? other.since_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmProviderStatus Clone() {
      return new AlarmProviderStatus(this);
    }

    /// <summary>Field number for the "mode" field.</summary>
    public const int ModeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode mode_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode Mode {
      get { return mode_; }
      set {
        mode_ = value;
      }
    }

    /// <summary>Field number for the "degraded" field.</summary>
    public const int DegradedFieldNumber = 2;
    private bool degraded_;
    /// <summary>
    /// true whenever mode == SUBTAG
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Degraded {
      get { return degraded_; }
      set {
        degraded_ = value;
      }
    }

    /// <summary>Field number for the "reason" field.</summary>
    public const int ReasonFieldNumber = 3;
    private string reason_ = "";
    /// <summary>
    /// human-readable switch reason
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Reason {
      get { return reason_; }
      set {
        reason_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "since" field.</summary>
    public const int SinceFieldNumber = 4;
    private global::Google.Protobuf.WellKnownTypes.Timestamp since_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp Since {
      get { return since_; }
      set {
        since_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AlarmProviderStatus);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmProviderStatus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Mode != other.Mode) return false;
      if (Degraded != other.Degraded) return false;
      if (Reason != other.Reason) return false;
      if (!object.Equals(Since, other.Since)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) hash ^= Mode.GetHashCode();
      if (Degraded != false) hash ^= Degraded.GetHashCode();
      if (Reason.Length != 0) hash ^= Reason.GetHashCode();
      if (since_ != null) hash ^= Since.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Mode);
      }
      if (Degraded != false) {
        output.WriteRawTag(16);
        output.WriteBool(Degraded);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Reason);
      }
      if (since_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Since);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Mode);
      }
      if (Degraded != false) {
        output.WriteRawTag(16);
        output.WriteBool(Degraded);
      }
      if (Reason.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(Reason);
      }
      if (since_ != null) {
        output.WriteRawTag(34);
        output.WriteMessage(Since);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Mode);
      }
      if (Degraded != false) {
        size += 1 + 1;
      }
      if (Reason.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Reason);
      }
      if (since_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Since);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmProviderStatus other) {
      if (other == null) {
        return;
      }
      if (other.Mode != global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode.Unspecified) {
        Mode = other.Mode;
      }
      if (other.Degraded != false) {
        Degraded = other.Degraded;
      }
      if (other.Reason.Length != 0) {
        Reason = other.Reason;
      }
      if (other.since_ != null) {
        if (since_ == null) {
          Since = new global::Google.Protobuf.WellKnownTypes.Timestamp();
        }
        Since.MergeFrom(other.Since);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Mode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 16: {
            Degraded = input.ReadBool();
            break;
          }
          case 26: {
            Reason = input.ReadString();
            break;
          }
          case 34: {
            if (since_ == null) {
              Since = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Since);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Mode = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.AlarmProviderMode) input.ReadEnum();
            break;
          }
          case 16: {
            Degraded = input.ReadBool();
            break;
          }
          case 26: {
            Reason = input.ReadString();
            break;
          }
          case 34: {
            if (since_ == null) {
              Since = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            }
            input.ReadMessage(Since);
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Feed-level snapshot-completeness status. Emitted once on StreamAlarms open
  /// (after the initial provider_status frame, before the cached active_alarm
  /// frames) so late joiners learn the current verdict, and again on every change
  /// of the truncation verdict — when a reconcile reports a different verdict, and
  /// when the gateway's alarm monitor restarts and drops a truncated verdict with
  /// the cache generation it described (feed subscribers outlive that monitor
  /// session, so they are sent the clearing frame). Mirrors the per-record
  /// ActiveAlarmSnapshot.from_truncated_snapshot caveat at feed level so live
  /// consumers can reason about completeness without polling QueryActiveAlarms.
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class AlarmSnapshotStatus : pb::IMessage<AlarmSnapshotStatus>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<AlarmSnapshotStatus> _parser = new pb::MessageParser<AlarmSnapshotStatus>(() => new AlarmSnapshotStatus());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<AlarmSnapshotStatus> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[87]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSnapshotStatus() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSnapshotStatus(AlarmSnapshotStatus other) : this() {
      truncated_ = other.truncated_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public AlarmSnapshotStatus Clone() {
      return new AlarmSnapshotStatus(this);
    }

    /// <summary>Field number for the "truncated" field.</summary>
    public const int TruncatedFieldNumber = 1;
    private bool truncated_;
    /// <summary>
    /// True while the monitor's cached active-alarm set derives from a truncated
    /// (capped) worker fetch — the set may be missing alarms. Distinct from
    /// provider degradation (AlarmProviderStatus.degraded), which describes the
    /// fidelity of the records rather than the completeness of the set.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Truncated {
      get { return truncated_; }
      set {
        truncated_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as AlarmSnapshotStatus);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(AlarmSnapshotStatus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Truncated != other.Truncated) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Truncated != false) hash ^= Truncated.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Truncated != false) {
        output.WriteRawTag(8);
        output.WriteBool(Truncated);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Truncated != false) {
        output.WriteRawTag(8);
        output.WriteBool(Truncated);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Truncated != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(AlarmSnapshotStatus other) {
      if (other == null) {
        return;
      }
      if (other.Truncated != false) {
        Truncated = other.Truncated;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Truncated = input.ReadBool();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Truncated = input.ReadBool();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxStatusProxy : pb::IMessage<MxStatusProxy>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxStatusProxy> _parser = new pb::MessageParser<MxStatusProxy>(() => new MxStatusProxy());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxStatusProxy> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[88]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxStatusProxy() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxStatusProxy(MxStatusProxy other) : this() {
      success_ = other.success_;
      category_ = other.category_;
      detectedBy_ = other.detectedBy_;
      detail_ = other.detail_;
      rawCategory_ = other.rawCategory_;
      rawDetectedBy_ = other.rawDetectedBy_;
      diagnosticText_ = other.diagnosticText_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxStatusProxy Clone() {
      return new MxStatusProxy(this);
    }

    /// <summary>Field number for the "success" field.</summary>
    public const int SuccessFieldNumber = 1;
    private int success_;
    /// <summary>
    /// Mirrors the `success` member of the MXAccess MXSTATUS_PROXY struct
    /// (a 16-bit signed value in the COM struct, widened to int32 on the
    /// wire). Despite the name it is NOT a boolean — it is the raw numeric
    /// indicator the worker reads off the COM struct without reinterpretation.
    /// It is carried verbatim for diagnostics; the authoritative success/
    /// failure of the operation is `category` (MX_STATUS_CATEGORY_OK marks
    /// success), with `detail`, `diagnostic_text`, `raw_category`, and
    /// `raw_detected_by` describing any non-OK outcome. Clients should branch
    /// on `category`, not on a specific `success` value.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Success {
      get { return success_; }
      set {
        success_ = value;
      }
    }

    /// <summary>Field number for the "category" field.</summary>
    public const int CategoryFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory category_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory Category {
      get { return category_; }
      set {
        category_ = value;
      }
    }

    /// <summary>Field number for the "detected_by" field.</summary>
    public const int DetectedByFieldNumber = 3;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource detectedBy_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource DetectedBy {
      get { return detectedBy_; }
      set {
        detectedBy_ = value;
      }
    }

    /// <summary>Field number for the "detail" field.</summary>
    public const int DetailFieldNumber = 4;
    private int detail_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Detail {
      get { return detail_; }
      set {
        detail_ = value;
      }
    }

    /// <summary>Field number for the "raw_category" field.</summary>
    public const int RawCategoryFieldNumber = 5;
    private int rawCategory_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RawCategory {
      get { return rawCategory_; }
      set {
        rawCategory_ = value;
      }
    }

    /// <summary>Field number for the "raw_detected_by" field.</summary>
    public const int RawDetectedByFieldNumber = 6;
    private int rawDetectedBy_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RawDetectedBy {
      get { return rawDetectedBy_; }
      set {
        rawDetectedBy_ = value;
      }
    }

    /// <summary>Field number for the "diagnostic_text" field.</summary>
    public const int DiagnosticTextFieldNumber = 7;
    private string diagnosticText_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string DiagnosticText {
      get { return diagnosticText_; }
      set {
        diagnosticText_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxStatusProxy);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxStatusProxy other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Success != other.Success) return false;
      if (Category != other.Category) return false;
      if (DetectedBy != other.DetectedBy) return false;
      if (Detail != other.Detail) return false;
      if (RawCategory != other.RawCategory) return false;
      if (RawDetectedBy != other.RawDetectedBy) return false;
      if (DiagnosticText != other.DiagnosticText) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Success != 0) hash ^= Success.GetHashCode();
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified) hash ^= Category.GetHashCode();
      if (DetectedBy != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified) hash ^= DetectedBy.GetHashCode();
      if (Detail != 0) hash ^= Detail.GetHashCode();
      if (RawCategory != 0) hash ^= RawCategory.GetHashCode();
      if (RawDetectedBy != 0) hash ^= RawDetectedBy.GetHashCode();
      if (DiagnosticText.Length != 0) hash ^= DiagnosticText.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Success != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Success);
      }
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Category);
      }
      if (DetectedBy != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) DetectedBy);
      }
      if (Detail != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Detail);
      }
      if (RawCategory != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawCategory);
      }
      if (RawDetectedBy != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(RawDetectedBy);
      }
      if (DiagnosticText.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(DiagnosticText);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Success != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(Success);
      }
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified) {
        output.WriteRawTag(16);
        output.WriteEnum((int) Category);
      }
      if (DetectedBy != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified) {
        output.WriteRawTag(24);
        output.WriteEnum((int) DetectedBy);
      }
      if (Detail != 0) {
        output.WriteRawTag(32);
        output.WriteInt32(Detail);
      }
      if (RawCategory != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawCategory);
      }
      if (RawDetectedBy != 0) {
        output.WriteRawTag(48);
        output.WriteInt32(RawDetectedBy);
      }
      if (DiagnosticText.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(DiagnosticText);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Success != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Success);
      }
      if (Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Category);
      }
      if (DetectedBy != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DetectedBy);
      }
      if (Detail != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Detail);
      }
      if (RawCategory != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RawCategory);
      }
      if (RawDetectedBy != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RawDetectedBy);
      }
      if (DiagnosticText.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DiagnosticText);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxStatusProxy other) {
      if (other == null) {
        return;
      }
      if (other.Success != 0) {
        Success = other.Success;
      }
      if (other.Category != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory.Unspecified) {
        Category = other.Category;
      }
      if (other.DetectedBy != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource.Unspecified) {
        DetectedBy = other.DetectedBy;
      }
      if (other.Detail != 0) {
        Detail = other.Detail;
      }
      if (other.RawCategory != 0) {
        RawCategory = other.RawCategory;
      }
      if (other.RawDetectedBy != 0) {
        RawDetectedBy = other.RawDetectedBy;
      }
      if (other.DiagnosticText.Length != 0) {
        DiagnosticText = other.DiagnosticText;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Success = input.ReadInt32();
            break;
          }
          case 16: {
            Category = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory) input.ReadEnum();
            break;
          }
          case 24: {
            DetectedBy = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource) input.ReadEnum();
            break;
          }
          case 32: {
            Detail = input.ReadInt32();
            break;
          }
          case 40: {
            RawCategory = input.ReadInt32();
            break;
          }
          case 48: {
            RawDetectedBy = input.ReadInt32();
            break;
          }
          case 58: {
            DiagnosticText = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Success = input.ReadInt32();
            break;
          }
          case 16: {
            Category = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusCategory) input.ReadEnum();
            break;
          }
          case 24: {
            DetectedBy = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxStatusSource) input.ReadEnum();
            break;
          }
          case 32: {
            Detail = input.ReadInt32();
            break;
          }
          case 40: {
            RawCategory = input.ReadInt32();
            break;
          }
          case 48: {
            RawDetectedBy = input.ReadInt32();
            break;
          }
          case 58: {
            DiagnosticText = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxValue : pb::IMessage<MxValue>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxValue> _parser = new pb::MessageParser<MxValue>(() => new MxValue());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxValue> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[89]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxValue() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxValue(MxValue other) : this() {
      dataType_ = other.dataType_;
      variantType_ = other.variantType_;
      isNull_ = other.isNull_;
      rawDiagnostic_ = other.rawDiagnostic_;
      rawDataType_ = other.rawDataType_;
      switch (other.KindCase) {
        case KindOneofCase.BoolValue:
          BoolValue = other.BoolValue;
          break;
        case KindOneofCase.Int32Value:
          Int32Value = other.Int32Value;
          break;
        case KindOneofCase.Int64Value:
          Int64Value = other.Int64Value;
          break;
        case KindOneofCase.FloatValue:
          FloatValue = other.FloatValue;
          break;
        case KindOneofCase.DoubleValue:
          DoubleValue = other.DoubleValue;
          break;
        case KindOneofCase.StringValue:
          StringValue = other.StringValue;
          break;
        case KindOneofCase.TimestampValue:
          TimestampValue = other.TimestampValue.Clone();
          break;
        case KindOneofCase.ArrayValue:
          ArrayValue = other.ArrayValue.Clone();
          break;
        case KindOneofCase.RawValue:
          RawValue = other.RawValue;
          break;
        case KindOneofCase.SparseArrayValue:
          SparseArrayValue = other.SparseArrayValue.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxValue Clone() {
      return new MxValue(this);
    }

    /// <summary>Field number for the "data_type" field.</summary>
    public const int DataTypeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType dataType_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType DataType {
      get { return dataType_; }
      set {
        dataType_ = value;
      }
    }

    /// <summary>Field number for the "variant_type" field.</summary>
    public const int VariantTypeFieldNumber = 2;
    private string variantType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VariantType {
      get { return variantType_; }
      set {
        variantType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "is_null" field.</summary>
    public const int IsNullFieldNumber = 3;
    private bool isNull_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool IsNull {
      get { return isNull_; }
      set {
        isNull_ = value;
      }
    }

    /// <summary>Field number for the "raw_diagnostic" field.</summary>
    public const int RawDiagnosticFieldNumber = 4;
    private string rawDiagnostic_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RawDiagnostic {
      get { return rawDiagnostic_; }
      set {
        rawDiagnostic_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "raw_data_type" field.</summary>
    public const int RawDataTypeFieldNumber = 5;
    private int rawDataType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RawDataType {
      get { return rawDataType_; }
      set {
        rawDataType_ = value;
      }
    }

    /// <summary>Field number for the "bool_value" field.</summary>
    public const int BoolValueFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool BoolValue {
      get { return HasBoolValue ? (bool) kind_ : false; }
      set {
        kind_ = value;
        kindCase_ = KindOneofCase.BoolValue;
      }
    }
    /// <summary>Gets whether the "bool_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasBoolValue {
      get { return kindCase_ == KindOneofCase.BoolValue; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "bool_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearBoolValue() {
      if (HasBoolValue) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "int32_value" field.</summary>
    public const int Int32ValueFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int Int32Value {
      get { return HasInt32Value ? (int) kind_ : 0; }
      set {
        kind_ = value;
        kindCase_ = KindOneofCase.Int32Value;
      }
    }
    /// <summary>Gets whether the "int32_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInt32Value {
      get { return kindCase_ == KindOneofCase.Int32Value; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "int32_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInt32Value() {
      if (HasInt32Value) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "int64_value" field.</summary>
    public const int Int64ValueFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public long Int64Value {
      get { return HasInt64Value ? (long) kind_ : 0L; }
      set {
        kind_ = value;
        kindCase_ = KindOneofCase.Int64Value;
      }
    }
    /// <summary>Gets whether the "int64_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasInt64Value {
      get { return kindCase_ == KindOneofCase.Int64Value; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "int64_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearInt64Value() {
      if (HasInt64Value) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "float_value" field.</summary>
    public const int FloatValueFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public float FloatValue {
      get { return HasFloatValue ? (float) kind_ : 0F; }
      set {
        kind_ = value;
        kindCase_ = KindOneofCase.FloatValue;
      }
    }
    /// <summary>Gets whether the "float_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasFloatValue {
      get { return kindCase_ == KindOneofCase.FloatValue; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "float_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearFloatValue() {
      if (HasFloatValue) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "double_value" field.</summary>
    public const int DoubleValueFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public double DoubleValue {
      get { return HasDoubleValue ? (double) kind_ : 0D; }
      set {
        kind_ = value;
        kindCase_ = KindOneofCase.DoubleValue;
      }
    }
    /// <summary>Gets whether the "double_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasDoubleValue {
      get { return kindCase_ == KindOneofCase.DoubleValue; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "double_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearDoubleValue() {
      if (HasDoubleValue) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "string_value" field.</summary>
    public const int StringValueFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string StringValue {
      get { return HasStringValue ? (string) kind_ : ""; }
      set {
        kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        kindCase_ = KindOneofCase.StringValue;
      }
    }
    /// <summary>Gets whether the "string_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasStringValue {
      get { return kindCase_ == KindOneofCase.StringValue; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "string_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearStringValue() {
      if (HasStringValue) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "timestamp_value" field.</summary>
    public const int TimestampValueFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::Google.Protobuf.WellKnownTypes.Timestamp TimestampValue {
      get { return kindCase_ == KindOneofCase.TimestampValue ? (global::Google.Protobuf.WellKnownTypes.Timestamp) kind_ : null; }
      set {
        kind_ = value;
        kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.TimestampValue;
      }
    }

    /// <summary>Field number for the "array_value" field.</summary>
    public const int ArrayValueFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray ArrayValue {
      get { return kindCase_ == KindOneofCase.ArrayValue ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray) kind_ : null; }
      set {
        kind_ = value;
        kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.ArrayValue;
      }
    }

    /// <summary>Field number for the "raw_value" field.</summary>
    public const int RawValueFieldNumber = 18;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pb::ByteString RawValue {
      get { return HasRawValue ? (pb::ByteString) kind_ : pb::ByteString.Empty; }
      set {
        kind_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        kindCase_ = KindOneofCase.RawValue;
      }
    }
    /// <summary>Gets whether the "raw_value" field is set</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool HasRawValue {
      get { return kindCase_ == KindOneofCase.RawValue; }
    }
    /// <summary> Clears the value of the oneof if it's currently set to "raw_value" </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearRawValue() {
      if (HasRawValue) {
        ClearKind();
      }
    }

    /// <summary>Field number for the "sparse_array_value" field.</summary>
    public const int SparseArrayValueFieldNumber = 19;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray SparseArrayValue {
      get { return kindCase_ == KindOneofCase.SparseArrayValue ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray) kind_ : null; }
      set {
        kind_ = value;
        kindCase_ = value == null ? KindOneofCase.None : KindOneofCase.SparseArrayValue;
      }
    }

    private object kind_;
    /// <summary>Enum of possible cases for the "kind" oneof.</summary>
    public enum KindOneofCase {
      None = 0,
      BoolValue = 10,
      Int32Value = 11,
      Int64Value = 12,
      FloatValue = 13,
      DoubleValue = 14,
      StringValue = 15,
      TimestampValue = 16,
      ArrayValue = 17,
      RawValue = 18,
      SparseArrayValue = 19,
    }
    private KindOneofCase kindCase_ = KindOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public KindOneofCase KindCase {
      get { return kindCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearKind() {
      kindCase_ = KindOneofCase.None;
      kind_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxValue);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxValue other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (DataType != other.DataType) return false;
      if (VariantType != other.VariantType) return false;
      if (IsNull != other.IsNull) return false;
      if (RawDiagnostic != other.RawDiagnostic) return false;
      if (RawDataType != other.RawDataType) return false;
      if (BoolValue != other.BoolValue) return false;
      if (Int32Value != other.Int32Value) return false;
      if (Int64Value != other.Int64Value) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(FloatValue, other.FloatValue)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.Equals(DoubleValue, other.DoubleValue)) return false;
      if (StringValue != other.StringValue) return false;
      if (!object.Equals(TimestampValue, other.TimestampValue)) return false;
      if (!object.Equals(ArrayValue, other.ArrayValue)) return false;
      if (RawValue != other.RawValue) return false;
      if (!object.Equals(SparseArrayValue, other.SparseArrayValue)) return false;
      if (KindCase != other.KindCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) hash ^= DataType.GetHashCode();
      if (VariantType.Length != 0) hash ^= VariantType.GetHashCode();
      if (IsNull != false) hash ^= IsNull.GetHashCode();
      if (RawDiagnostic.Length != 0) hash ^= RawDiagnostic.GetHashCode();
      if (RawDataType != 0) hash ^= RawDataType.GetHashCode();
      if (HasBoolValue) hash ^= BoolValue.GetHashCode();
      if (HasInt32Value) hash ^= Int32Value.GetHashCode();
      if (HasInt64Value) hash ^= Int64Value.GetHashCode();
      if (HasFloatValue) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(FloatValue);
      if (HasDoubleValue) hash ^= pbc::ProtobufEqualityComparers.BitwiseDoubleEqualityComparer.GetHashCode(DoubleValue);
      if (HasStringValue) hash ^= StringValue.GetHashCode();
      if (kindCase_ == KindOneofCase.TimestampValue) hash ^= TimestampValue.GetHashCode();
      if (kindCase_ == KindOneofCase.ArrayValue) hash ^= ArrayValue.GetHashCode();
      if (HasRawValue) hash ^= RawValue.GetHashCode();
      if (kindCase_ == KindOneofCase.SparseArrayValue) hash ^= SparseArrayValue.GetHashCode();
      hash ^= (int) kindCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DataType);
      }
      if (VariantType.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VariantType);
      }
      if (IsNull != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsNull);
      }
      if (RawDiagnostic.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RawDiagnostic);
      }
      if (RawDataType != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawDataType);
      }
      if (HasBoolValue) {
        output.WriteRawTag(80);
        output.WriteBool(BoolValue);
      }
      if (HasInt32Value) {
        output.WriteRawTag(88);
        output.WriteInt32(Int32Value);
      }
      if (HasInt64Value) {
        output.WriteRawTag(96);
        output.WriteInt64(Int64Value);
      }
      if (HasFloatValue) {
        output.WriteRawTag(109);
        output.WriteFloat(FloatValue);
      }
      if (HasDoubleValue) {
        output.WriteRawTag(113);
        output.WriteDouble(DoubleValue);
      }
      if (HasStringValue) {
        output.WriteRawTag(122);
        output.WriteString(StringValue);
      }
      if (kindCase_ == KindOneofCase.TimestampValue) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(TimestampValue);
      }
      if (kindCase_ == KindOneofCase.ArrayValue) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(ArrayValue);
      }
      if (HasRawValue) {
        output.WriteRawTag(146, 1);
        output.WriteBytes(RawValue);
      }
      if (kindCase_ == KindOneofCase.SparseArrayValue) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(SparseArrayValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) DataType);
      }
      if (VariantType.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VariantType);
      }
      if (IsNull != false) {
        output.WriteRawTag(24);
        output.WriteBool(IsNull);
      }
      if (RawDiagnostic.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RawDiagnostic);
      }
      if (RawDataType != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawDataType);
      }
      if (HasBoolValue) {
        output.WriteRawTag(80);
        output.WriteBool(BoolValue);
      }
      if (HasInt32Value) {
        output.WriteRawTag(88);
        output.WriteInt32(Int32Value);
      }
      if (HasInt64Value) {
        output.WriteRawTag(96);
        output.WriteInt64(Int64Value);
      }
      if (HasFloatValue) {
        output.WriteRawTag(109);
        output.WriteFloat(FloatValue);
      }
      if (HasDoubleValue) {
        output.WriteRawTag(113);
        output.WriteDouble(DoubleValue);
      }
      if (HasStringValue) {
        output.WriteRawTag(122);
        output.WriteString(StringValue);
      }
      if (kindCase_ == KindOneofCase.TimestampValue) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(TimestampValue);
      }
      if (kindCase_ == KindOneofCase.ArrayValue) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(ArrayValue);
      }
      if (HasRawValue) {
        output.WriteRawTag(146, 1);
        output.WriteBytes(RawValue);
      }
      if (kindCase_ == KindOneofCase.SparseArrayValue) {
        output.WriteRawTag(154, 1);
        output.WriteMessage(SparseArrayValue);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) DataType);
      }
      if (VariantType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VariantType);
      }
      if (IsNull != false) {
        size += 1 + 1;
      }
      if (RawDiagnostic.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RawDiagnostic);
      }
      if (RawDataType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RawDataType);
      }
      if (HasBoolValue) {
        size += 1 + 1;
      }
      if (HasInt32Value) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(Int32Value);
      }
      if (HasInt64Value) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(Int64Value);
      }
      if (HasFloatValue) {
        size += 1 + 4;
      }
      if (HasDoubleValue) {
        size += 1 + 8;
      }
      if (HasStringValue) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(StringValue);
      }
      if (kindCase_ == KindOneofCase.TimestampValue) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(TimestampValue);
      }
      if (kindCase_ == KindOneofCase.ArrayValue) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(ArrayValue);
      }
      if (HasRawValue) {
        size += 2 + pb::CodedOutputStream.ComputeBytesSize(RawValue);
      }
      if (kindCase_ == KindOneofCase.SparseArrayValue) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(SparseArrayValue);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxValue other) {
      if (other == null) {
        return;
      }
      if (other.DataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        DataType = other.DataType;
      }
      if (other.VariantType.Length != 0) {
        VariantType = other.VariantType;
      }
      if (other.IsNull != false) {
        IsNull = other.IsNull;
      }
      if (other.RawDiagnostic.Length != 0) {
        RawDiagnostic = other.RawDiagnostic;
      }
      if (other.RawDataType != 0) {
        RawDataType = other.RawDataType;
      }
      switch (other.KindCase) {
        case KindOneofCase.BoolValue:
          BoolValue = other.BoolValue;
          break;
        case KindOneofCase.Int32Value:
          Int32Value = other.Int32Value;
          break;
        case KindOneofCase.Int64Value:
          Int64Value = other.Int64Value;
          break;
        case KindOneofCase.FloatValue:
          FloatValue = other.FloatValue;
          break;
        case KindOneofCase.DoubleValue:
          DoubleValue = other.DoubleValue;
          break;
        case KindOneofCase.StringValue:
          StringValue = other.StringValue;
          break;
        case KindOneofCase.TimestampValue:
          if (TimestampValue == null) {
            TimestampValue = new global::Google.Protobuf.WellKnownTypes.Timestamp();
          }
          TimestampValue.MergeFrom(other.TimestampValue);
          break;
        case KindOneofCase.ArrayValue:
          if (ArrayValue == null) {
            ArrayValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
          }
          ArrayValue.MergeFrom(other.ArrayValue);
          break;
        case KindOneofCase.RawValue:
          RawValue = other.RawValue;
          break;
        case KindOneofCase.SparseArrayValue:
          if (SparseArrayValue == null) {
            SparseArrayValue = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray();
          }
          SparseArrayValue.MergeFrom(other.SparseArrayValue);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            DataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            VariantType = input.ReadString();
            break;
          }
          case 24: {
            IsNull = input.ReadBool();
            break;
          }
          case 34: {
            RawDiagnostic = input.ReadString();
            break;
          }
          case 40: {
            RawDataType = input.ReadInt32();
            break;
          }
          case 80: {
            BoolValue = input.ReadBool();
            break;
          }
          case 88: {
            Int32Value = input.ReadInt32();
            break;
          }
          case 96: {
            Int64Value = input.ReadInt64();
            break;
          }
          case 109: {
            FloatValue = input.ReadFloat();
            break;
          }
          case 113: {
            DoubleValue = input.ReadDouble();
            break;
          }
          case 122: {
            StringValue = input.ReadString();
            break;
          }
          case 130: {
            global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            if (kindCase_ == KindOneofCase.TimestampValue) {
              subBuilder.MergeFrom(TimestampValue);
            }
            input.ReadMessage(subBuilder);
            TimestampValue = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            if (kindCase_ == KindOneofCase.ArrayValue) {
              subBuilder.MergeFrom(ArrayValue);
            }
            input.ReadMessage(subBuilder);
            ArrayValue = subBuilder;
            break;
          }
          case 146: {
            RawValue = input.ReadBytes();
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray();
            if (kindCase_ == KindOneofCase.SparseArrayValue) {
              subBuilder.MergeFrom(SparseArrayValue);
            }
            input.ReadMessage(subBuilder);
            SparseArrayValue = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            DataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            VariantType = input.ReadString();
            break;
          }
          case 24: {
            IsNull = input.ReadBool();
            break;
          }
          case 34: {
            RawDiagnostic = input.ReadString();
            break;
          }
          case 40: {
            RawDataType = input.ReadInt32();
            break;
          }
          case 80: {
            BoolValue = input.ReadBool();
            break;
          }
          case 88: {
            Int32Value = input.ReadInt32();
            break;
          }
          case 96: {
            Int64Value = input.ReadInt64();
            break;
          }
          case 109: {
            FloatValue = input.ReadFloat();
            break;
          }
          case 113: {
            DoubleValue = input.ReadDouble();
            break;
          }
          case 122: {
            StringValue = input.ReadString();
            break;
          }
          case 130: {
            global::Google.Protobuf.WellKnownTypes.Timestamp subBuilder = new global::Google.Protobuf.WellKnownTypes.Timestamp();
            if (kindCase_ == KindOneofCase.TimestampValue) {
              subBuilder.MergeFrom(TimestampValue);
            }
            input.ReadMessage(subBuilder);
            TimestampValue = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxArray();
            if (kindCase_ == KindOneofCase.ArrayValue) {
              subBuilder.MergeFrom(ArrayValue);
            }
            input.ReadMessage(subBuilder);
            ArrayValue = subBuilder;
            break;
          }
          case 146: {
            RawValue = input.ReadBytes();
            break;
          }
          case 154: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseArray();
            if (kindCase_ == KindOneofCase.SparseArrayValue) {
              subBuilder.MergeFrom(SparseArrayValue);
            }
            input.ReadMessage(subBuilder);
            SparseArrayValue = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxArray : pb::IMessage<MxArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxArray> _parser = new pb::MessageParser<MxArray>(() => new MxArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[90]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxArray(MxArray other) : this() {
      elementDataType_ = other.elementDataType_;
      variantType_ = other.variantType_;
      dimensions_ = other.dimensions_.Clone();
      rawDiagnostic_ = other.rawDiagnostic_;
      rawElementDataType_ = other.rawElementDataType_;
      switch (other.ValuesCase) {
        case ValuesOneofCase.BoolValues:
          BoolValues = other.BoolValues.Clone();
          break;
        case ValuesOneofCase.Int32Values:
          Int32Values = other.Int32Values.Clone();
          break;
        case ValuesOneofCase.Int64Values:
          Int64Values = other.Int64Values.Clone();
          break;
        case ValuesOneofCase.FloatValues:
          FloatValues = other.FloatValues.Clone();
          break;
        case ValuesOneofCase.DoubleValues:
          DoubleValues = other.DoubleValues.Clone();
          break;
        case ValuesOneofCase.StringValues:
          StringValues = other.StringValues.Clone();
          break;
        case ValuesOneofCase.TimestampValues:
          TimestampValues = other.TimestampValues.Clone();
          break;
        case ValuesOneofCase.RawValues:
          RawValues = other.RawValues.Clone();
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxArray Clone() {
      return new MxArray(this);
    }

    /// <summary>Field number for the "element_data_type" field.</summary>
    public const int ElementDataTypeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType elementDataType_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType ElementDataType {
      get { return elementDataType_; }
      set {
        elementDataType_ = value;
      }
    }

    /// <summary>Field number for the "variant_type" field.</summary>
    public const int VariantTypeFieldNumber = 2;
    private string variantType_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string VariantType {
      get { return variantType_; }
      set {
        variantType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "dimensions" field.</summary>
    public const int DimensionsFieldNumber = 3;
    private static readonly pb::FieldCodec<uint> _repeated_dimensions_codec
        = pb::FieldCodec.ForUInt32(26);
    private readonly pbc::RepeatedField<uint> dimensions_ = new pbc::RepeatedField<uint>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<uint> Dimensions {
      get { return dimensions_; }
    }

    /// <summary>Field number for the "raw_diagnostic" field.</summary>
    public const int RawDiagnosticFieldNumber = 4;
    private string rawDiagnostic_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string RawDiagnostic {
      get { return rawDiagnostic_; }
      set {
        rawDiagnostic_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "raw_element_data_type" field.</summary>
    public const int RawElementDataTypeFieldNumber = 5;
    private int rawElementDataType_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int RawElementDataType {
      get { return rawElementDataType_; }
      set {
        rawElementDataType_ = value;
      }
    }

    /// <summary>Field number for the "bool_values" field.</summary>
    public const int BoolValuesFieldNumber = 10;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray BoolValues {
      get { return valuesCase_ == ValuesOneofCase.BoolValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.BoolValues;
      }
    }

    /// <summary>Field number for the "int32_values" field.</summary>
    public const int Int32ValuesFieldNumber = 11;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array Int32Values {
      get { return valuesCase_ == ValuesOneofCase.Int32Values ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.Int32Values;
      }
    }

    /// <summary>Field number for the "int64_values" field.</summary>
    public const int Int64ValuesFieldNumber = 12;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array Int64Values {
      get { return valuesCase_ == ValuesOneofCase.Int64Values ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.Int64Values;
      }
    }

    /// <summary>Field number for the "float_values" field.</summary>
    public const int FloatValuesFieldNumber = 13;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray FloatValues {
      get { return valuesCase_ == ValuesOneofCase.FloatValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.FloatValues;
      }
    }

    /// <summary>Field number for the "double_values" field.</summary>
    public const int DoubleValuesFieldNumber = 14;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray DoubleValues {
      get { return valuesCase_ == ValuesOneofCase.DoubleValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.DoubleValues;
      }
    }

    /// <summary>Field number for the "string_values" field.</summary>
    public const int StringValuesFieldNumber = 15;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray StringValues {
      get { return valuesCase_ == ValuesOneofCase.StringValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.StringValues;
      }
    }

    /// <summary>Field number for the "timestamp_values" field.</summary>
    public const int TimestampValuesFieldNumber = 16;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray TimestampValues {
      get { return valuesCase_ == ValuesOneofCase.TimestampValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.TimestampValues;
      }
    }

    /// <summary>Field number for the "raw_values" field.</summary>
    public const int RawValuesFieldNumber = 17;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray RawValues {
      get { return valuesCase_ == ValuesOneofCase.RawValues ? (global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray) values_ : null; }
      set {
        values_ = value;
        valuesCase_ = value == null ? ValuesOneofCase.None : ValuesOneofCase.RawValues;
      }
    }

    private object values_;
    /// <summary>Enum of possible cases for the "values" oneof.</summary>
    public enum ValuesOneofCase {
      None = 0,
      BoolValues = 10,
      Int32Values = 11,
      Int64Values = 12,
      FloatValues = 13,
      DoubleValues = 14,
      StringValues = 15,
      TimestampValues = 16,
      RawValues = 17,
    }
    private ValuesOneofCase valuesCase_ = ValuesOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ValuesOneofCase ValuesCase {
      get { return valuesCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void ClearValues() {
      valuesCase_ = ValuesOneofCase.None;
      values_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ElementDataType != other.ElementDataType) return false;
      if (VariantType != other.VariantType) return false;
      if(!dimensions_.Equals(other.dimensions_)) return false;
      if (RawDiagnostic != other.RawDiagnostic) return false;
      if (RawElementDataType != other.RawElementDataType) return false;
      if (!object.Equals(BoolValues, other.BoolValues)) return false;
      if (!object.Equals(Int32Values, other.Int32Values)) return false;
      if (!object.Equals(Int64Values, other.Int64Values)) return false;
      if (!object.Equals(FloatValues, other.FloatValues)) return false;
      if (!object.Equals(DoubleValues, other.DoubleValues)) return false;
      if (!object.Equals(StringValues, other.StringValues)) return false;
      if (!object.Equals(TimestampValues, other.TimestampValues)) return false;
      if (!object.Equals(RawValues, other.RawValues)) return false;
      if (ValuesCase != other.ValuesCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) hash ^= ElementDataType.GetHashCode();
      if (VariantType.Length != 0) hash ^= VariantType.GetHashCode();
      hash ^= dimensions_.GetHashCode();
      if (RawDiagnostic.Length != 0) hash ^= RawDiagnostic.GetHashCode();
      if (RawElementDataType != 0) hash ^= RawElementDataType.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.BoolValues) hash ^= BoolValues.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.Int32Values) hash ^= Int32Values.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.Int64Values) hash ^= Int64Values.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.FloatValues) hash ^= FloatValues.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.DoubleValues) hash ^= DoubleValues.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.StringValues) hash ^= StringValues.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.TimestampValues) hash ^= TimestampValues.GetHashCode();
      if (valuesCase_ == ValuesOneofCase.RawValues) hash ^= RawValues.GetHashCode();
      hash ^= (int) valuesCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ElementDataType);
      }
      if (VariantType.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VariantType);
      }
      dimensions_.WriteTo(output, _repeated_dimensions_codec);
      if (RawDiagnostic.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RawDiagnostic);
      }
      if (RawElementDataType != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawElementDataType);
      }
      if (valuesCase_ == ValuesOneofCase.BoolValues) {
        output.WriteRawTag(82);
        output.WriteMessage(BoolValues);
      }
      if (valuesCase_ == ValuesOneofCase.Int32Values) {
        output.WriteRawTag(90);
        output.WriteMessage(Int32Values);
      }
      if (valuesCase_ == ValuesOneofCase.Int64Values) {
        output.WriteRawTag(98);
        output.WriteMessage(Int64Values);
      }
      if (valuesCase_ == ValuesOneofCase.FloatValues) {
        output.WriteRawTag(106);
        output.WriteMessage(FloatValues);
      }
      if (valuesCase_ == ValuesOneofCase.DoubleValues) {
        output.WriteRawTag(114);
        output.WriteMessage(DoubleValues);
      }
      if (valuesCase_ == ValuesOneofCase.StringValues) {
        output.WriteRawTag(122);
        output.WriteMessage(StringValues);
      }
      if (valuesCase_ == ValuesOneofCase.TimestampValues) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(TimestampValues);
      }
      if (valuesCase_ == ValuesOneofCase.RawValues) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(RawValues);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ElementDataType);
      }
      if (VariantType.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(VariantType);
      }
      dimensions_.WriteTo(ref output, _repeated_dimensions_codec);
      if (RawDiagnostic.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RawDiagnostic);
      }
      if (RawElementDataType != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(RawElementDataType);
      }
      if (valuesCase_ == ValuesOneofCase.BoolValues) {
        output.WriteRawTag(82);
        output.WriteMessage(BoolValues);
      }
      if (valuesCase_ == ValuesOneofCase.Int32Values) {
        output.WriteRawTag(90);
        output.WriteMessage(Int32Values);
      }
      if (valuesCase_ == ValuesOneofCase.Int64Values) {
        output.WriteRawTag(98);
        output.WriteMessage(Int64Values);
      }
      if (valuesCase_ == ValuesOneofCase.FloatValues) {
        output.WriteRawTag(106);
        output.WriteMessage(FloatValues);
      }
      if (valuesCase_ == ValuesOneofCase.DoubleValues) {
        output.WriteRawTag(114);
        output.WriteMessage(DoubleValues);
      }
      if (valuesCase_ == ValuesOneofCase.StringValues) {
        output.WriteRawTag(122);
        output.WriteMessage(StringValues);
      }
      if (valuesCase_ == ValuesOneofCase.TimestampValues) {
        output.WriteRawTag(130, 1);
        output.WriteMessage(TimestampValues);
      }
      if (valuesCase_ == ValuesOneofCase.RawValues) {
        output.WriteRawTag(138, 1);
        output.WriteMessage(RawValues);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ElementDataType);
      }
      if (VariantType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(VariantType);
      }
      size += dimensions_.CalculateSize(_repeated_dimensions_codec);
      if (RawDiagnostic.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RawDiagnostic);
      }
      if (RawElementDataType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(RawElementDataType);
      }
      if (valuesCase_ == ValuesOneofCase.BoolValues) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BoolValues);
      }
      if (valuesCase_ == ValuesOneofCase.Int32Values) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Int32Values);
      }
      if (valuesCase_ == ValuesOneofCase.Int64Values) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Int64Values);
      }
      if (valuesCase_ == ValuesOneofCase.FloatValues) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(FloatValues);
      }
      if (valuesCase_ == ValuesOneofCase.DoubleValues) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(DoubleValues);
      }
      if (valuesCase_ == ValuesOneofCase.StringValues) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(StringValues);
      }
      if (valuesCase_ == ValuesOneofCase.TimestampValues) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(TimestampValues);
      }
      if (valuesCase_ == ValuesOneofCase.RawValues) {
        size += 2 + pb::CodedOutputStream.ComputeMessageSize(RawValues);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxArray other) {
      if (other == null) {
        return;
      }
      if (other.ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        ElementDataType = other.ElementDataType;
      }
      if (other.VariantType.Length != 0) {
        VariantType = other.VariantType;
      }
      dimensions_.Add(other.dimensions_);
      if (other.RawDiagnostic.Length != 0) {
        RawDiagnostic = other.RawDiagnostic;
      }
      if (other.RawElementDataType != 0) {
        RawElementDataType = other.RawElementDataType;
      }
      switch (other.ValuesCase) {
        case ValuesOneofCase.BoolValues:
          if (BoolValues == null) {
            BoolValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray();
          }
          BoolValues.MergeFrom(other.BoolValues);
          break;
        case ValuesOneofCase.Int32Values:
          if (Int32Values == null) {
            Int32Values = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array();
          }
          Int32Values.MergeFrom(other.Int32Values);
          break;
        case ValuesOneofCase.Int64Values:
          if (Int64Values == null) {
            Int64Values = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array();
          }
          Int64Values.MergeFrom(other.Int64Values);
          break;
        case ValuesOneofCase.FloatValues:
          if (FloatValues == null) {
            FloatValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray();
          }
          FloatValues.MergeFrom(other.FloatValues);
          break;
        case ValuesOneofCase.DoubleValues:
          if (DoubleValues == null) {
            DoubleValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray();
          }
          DoubleValues.MergeFrom(other.DoubleValues);
          break;
        case ValuesOneofCase.StringValues:
          if (StringValues == null) {
            StringValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray();
          }
          StringValues.MergeFrom(other.StringValues);
          break;
        case ValuesOneofCase.TimestampValues:
          if (TimestampValues == null) {
            TimestampValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray();
          }
          TimestampValues.MergeFrom(other.TimestampValues);
          break;
        case ValuesOneofCase.RawValues:
          if (RawValues == null) {
            RawValues = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray();
          }
          RawValues.MergeFrom(other.RawValues);
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ElementDataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            VariantType = input.ReadString();
            break;
          }
          case 26:
          case 24: {
            dimensions_.AddEntriesFrom(input, _repeated_dimensions_codec);
            break;
          }
          case 34: {
            RawDiagnostic = input.ReadString();
            break;
          }
          case 40: {
            RawElementDataType = input.ReadInt32();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray();
            if (valuesCase_ == ValuesOneofCase.BoolValues) {
              subBuilder.MergeFrom(BoolValues);
            }
            input.ReadMessage(subBuilder);
            BoolValues = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array();
            if (valuesCase_ == ValuesOneofCase.Int32Values) {
              subBuilder.MergeFrom(Int32Values);
            }
            input.ReadMessage(subBuilder);
            Int32Values = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array();
            if (valuesCase_ == ValuesOneofCase.Int64Values) {
              subBuilder.MergeFrom(Int64Values);
            }
            input.ReadMessage(subBuilder);
            Int64Values = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray();
            if (valuesCase_ == ValuesOneofCase.FloatValues) {
              subBuilder.MergeFrom(FloatValues);
            }
            input.ReadMessage(subBuilder);
            FloatValues = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray();
            if (valuesCase_ == ValuesOneofCase.DoubleValues) {
              subBuilder.MergeFrom(DoubleValues);
            }
            input.ReadMessage(subBuilder);
            DoubleValues = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray();
            if (valuesCase_ == ValuesOneofCase.StringValues) {
              subBuilder.MergeFrom(StringValues);
            }
            input.ReadMessage(subBuilder);
            StringValues = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray();
            if (valuesCase_ == ValuesOneofCase.TimestampValues) {
              subBuilder.MergeFrom(TimestampValues);
            }
            input.ReadMessage(subBuilder);
            TimestampValues = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray();
            if (valuesCase_ == ValuesOneofCase.RawValues) {
              subBuilder.MergeFrom(RawValues);
            }
            input.ReadMessage(subBuilder);
            RawValues = subBuilder;
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ElementDataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 18: {
            VariantType = input.ReadString();
            break;
          }
          case 26:
          case 24: {
            dimensions_.AddEntriesFrom(ref input, _repeated_dimensions_codec);
            break;
          }
          case 34: {
            RawDiagnostic = input.ReadString();
            break;
          }
          case 40: {
            RawElementDataType = input.ReadInt32();
            break;
          }
          case 82: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.BoolArray();
            if (valuesCase_ == ValuesOneofCase.BoolValues) {
              subBuilder.MergeFrom(BoolValues);
            }
            input.ReadMessage(subBuilder);
            BoolValues = subBuilder;
            break;
          }
          case 90: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int32Array();
            if (valuesCase_ == ValuesOneofCase.Int32Values) {
              subBuilder.MergeFrom(Int32Values);
            }
            input.ReadMessage(subBuilder);
            Int32Values = subBuilder;
            break;
          }
          case 98: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.Int64Array();
            if (valuesCase_ == ValuesOneofCase.Int64Values) {
              subBuilder.MergeFrom(Int64Values);
            }
            input.ReadMessage(subBuilder);
            Int64Values = subBuilder;
            break;
          }
          case 106: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.FloatArray();
            if (valuesCase_ == ValuesOneofCase.FloatValues) {
              subBuilder.MergeFrom(FloatValues);
            }
            input.ReadMessage(subBuilder);
            FloatValues = subBuilder;
            break;
          }
          case 114: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.DoubleArray();
            if (valuesCase_ == ValuesOneofCase.DoubleValues) {
              subBuilder.MergeFrom(DoubleValues);
            }
            input.ReadMessage(subBuilder);
            DoubleValues = subBuilder;
            break;
          }
          case 122: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.StringArray();
            if (valuesCase_ == ValuesOneofCase.StringValues) {
              subBuilder.MergeFrom(StringValues);
            }
            input.ReadMessage(subBuilder);
            StringValues = subBuilder;
            break;
          }
          case 130: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.TimestampArray();
            if (valuesCase_ == ValuesOneofCase.TimestampValues) {
              subBuilder.MergeFrom(TimestampValues);
            }
            input.ReadMessage(subBuilder);
            TimestampValues = subBuilder;
            break;
          }
          case 138: {
            global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray subBuilder = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.RawArray();
            if (valuesCase_ == ValuesOneofCase.RawValues) {
              subBuilder.MergeFrom(RawValues);
            }
            input.ReadMessage(subBuilder);
            RawValues = subBuilder;
            break;
          }
        }
      }
    }
    #endif

  }

  /// <summary>
  /// Write-only sparse array value. The gateway expands this into a full,
  /// default-filled MxArray before forwarding to the worker; the worker never
  /// receives or produces it. Unmentioned indices take the element type's
  /// default (reset, NOT preserved).
  /// </summary>
  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxSparseArray : pb::IMessage<MxSparseArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxSparseArray> _parser = new pb::MessageParser<MxSparseArray>(() => new MxSparseArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxSparseArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[91]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseArray(MxSparseArray other) : this() {
      elementDataType_ = other.elementDataType_;
      totalLength_ = other.totalLength_;
      elements_ = other.elements_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseArray Clone() {
      return new MxSparseArray(this);
    }

    /// <summary>Field number for the "element_data_type" field.</summary>
    public const int ElementDataTypeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType elementDataType_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType ElementDataType {
      get { return elementDataType_; }
      set {
        elementDataType_ = value;
      }
    }

    /// <summary>Field number for the "total_length" field.</summary>
    public const int TotalLengthFieldNumber = 2;
    private uint totalLength_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint TotalLength {
      get { return totalLength_; }
      set {
        totalLength_ = value;
      }
    }

    /// <summary>Field number for the "elements" field.</summary>
    public const int ElementsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement> _repeated_elements_codec
        = pb::FieldCodec.ForMessage(26, global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement.Parser);
    private readonly pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement> elements_ = new pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxSparseElement> Elements {
      get { return elements_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxSparseArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxSparseArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (ElementDataType != other.ElementDataType) return false;
      if (TotalLength != other.TotalLength) return false;
      if(!elements_.Equals(other.elements_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) hash ^= ElementDataType.GetHashCode();
      if (TotalLength != 0) hash ^= TotalLength.GetHashCode();
      hash ^= elements_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ElementDataType);
      }
      if (TotalLength != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(TotalLength);
      }
      elements_.WriteTo(output, _repeated_elements_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) ElementDataType);
      }
      if (TotalLength != 0) {
        output.WriteRawTag(16);
        output.WriteUInt32(TotalLength);
      }
      elements_.WriteTo(ref output, _repeated_elements_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ElementDataType);
      }
      if (TotalLength != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(TotalLength);
      }
      size += elements_.CalculateSize(_repeated_elements_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxSparseArray other) {
      if (other == null) {
        return;
      }
      if (other.ElementDataType != global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType.Unspecified) {
        ElementDataType = other.ElementDataType;
      }
      if (other.TotalLength != 0) {
        TotalLength = other.TotalLength;
      }
      elements_.Add(other.elements_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            ElementDataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 16: {
            TotalLength = input.ReadUInt32();
            break;
          }
          case 26: {
            elements_.AddEntriesFrom(input, _repeated_elements_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            ElementDataType = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxDataType) input.ReadEnum();
            break;
          }
          case 16: {
            TotalLength = input.ReadUInt32();
            break;
          }
          case 26: {
            elements_.AddEntriesFrom(ref input, _repeated_elements_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class MxSparseElement : pb::IMessage<MxSparseElement>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<MxSparseElement> _parser = new pb::MessageParser<MxSparseElement>(() => new MxSparseElement());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<MxSparseElement> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[92]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseElement() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseElement(MxSparseElement other) : this() {
      index_ = other.index_;
      value_ = other.value_ != null ? other.value_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public MxSparseElement Clone() {
      return new MxSparseElement(this);
    }

    /// <summary>Field number for the "index" field.</summary>
    public const int IndexFieldNumber = 1;
    private uint index_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public uint Index {
      get { return index_; }
      set {
        index_ = value;
      }
    }

    /// <summary>Field number for the "value" field.</summary>
    public const int ValueFieldNumber = 2;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue value_;
    /// <summary>
    /// scalar
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue Value {
      get { return value_; }
      set {
        value_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as MxSparseElement);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(MxSparseElement other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Index != other.Index) return false;
      if (!object.Equals(Value, other.Value)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Index != 0) hash ^= Index.GetHashCode();
      if (value_ != null) hash ^= Value.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Index != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(Index);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Index != 0) {
        output.WriteRawTag(8);
        output.WriteUInt32(Index);
      }
      if (value_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Value);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Index != 0) {
        size += 1 + pb::CodedOutputStream.ComputeUInt32Size(Index);
      }
      if (value_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Value);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(MxSparseElement other) {
      if (other == null) {
        return;
      }
      if (other.Index != 0) {
        Index = other.Index;
      }
      if (other.value_ != null) {
        if (value_ == null) {
          Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
        }
        Value.MergeFrom(other.Value);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Index = input.ReadUInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Index = input.ReadUInt32();
            break;
          }
          case 18: {
            if (value_ == null) {
              Value = new global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxValue();
            }
            input.ReadMessage(Value);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class BoolArray : pb::IMessage<BoolArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<BoolArray> _parser = new pb::MessageParser<BoolArray>(() => new BoolArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<BoolArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[93]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BoolArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BoolArray(BoolArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public BoolArray Clone() {
      return new BoolArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<bool> _repeated_values_codec
        = pb::FieldCodec.ForBool(10);
    private readonly pbc::RepeatedField<bool> values_ = new pbc::RepeatedField<bool>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<bool> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as BoolArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(BoolArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(BoolArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Int32Array : pb::IMessage<Int32Array>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Int32Array> _parser = new pb::MessageParser<Int32Array>(() => new Int32Array());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Int32Array> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[94]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int32Array() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int32Array(Int32Array other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int32Array Clone() {
      return new Int32Array(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<int> _repeated_values_codec
        = pb::FieldCodec.ForInt32(10);
    private readonly pbc::RepeatedField<int> values_ = new pbc::RepeatedField<int>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<int> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Int32Array);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Int32Array other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Int32Array other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class Int64Array : pb::IMessage<Int64Array>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<Int64Array> _parser = new pb::MessageParser<Int64Array>(() => new Int64Array());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<Int64Array> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[95]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int64Array() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int64Array(Int64Array other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public Int64Array Clone() {
      return new Int64Array(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<long> _repeated_values_codec
        = pb::FieldCodec.ForInt64(10);
    private readonly pbc::RepeatedField<long> values_ = new pbc::RepeatedField<long>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<long> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as Int64Array);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(Int64Array other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(Int64Array other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 8: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class FloatArray : pb::IMessage<FloatArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<FloatArray> _parser = new pb::MessageParser<FloatArray>(() => new FloatArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<FloatArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[96]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FloatArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FloatArray(FloatArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public FloatArray Clone() {
      return new FloatArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<float> _repeated_values_codec
        = pb::FieldCodec.ForFloat(10);
    private readonly pbc::RepeatedField<float> values_ = new pbc::RepeatedField<float>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<float> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as FloatArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(FloatArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(FloatArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 13: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 13: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class DoubleArray : pb::IMessage<DoubleArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<DoubleArray> _parser = new pb::MessageParser<DoubleArray>(() => new DoubleArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<DoubleArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[97]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DoubleArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DoubleArray(DoubleArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public DoubleArray Clone() {
      return new DoubleArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<double> _repeated_values_codec
        = pb::FieldCodec.ForDouble(10);
    private readonly pbc::RepeatedField<double> values_ = new pbc::RepeatedField<double>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<double> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as DoubleArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(DoubleArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(DoubleArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10:
          case 9: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10:
          case 9: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class StringArray : pb::IMessage<StringArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<StringArray> _parser = new pb::MessageParser<StringArray>(() => new StringArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<StringArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[98]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StringArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StringArray(StringArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public StringArray Clone() {
      return new StringArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<string> _repeated_values_codec
        = pb::FieldCodec.ForString(10);
    private readonly pbc::RepeatedField<string> values_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<string> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as StringArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(StringArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(StringArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class TimestampArray : pb::IMessage<TimestampArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<TimestampArray> _parser = new pb::MessageParser<TimestampArray>(() => new TimestampArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<TimestampArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[99]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TimestampArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TimestampArray(TimestampArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public TimestampArray Clone() {
      return new TimestampArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<global::Google.Protobuf.WellKnownTypes.Timestamp> _repeated_values_codec
        = pb::FieldCodec.ForMessage(10, global::Google.Protobuf.WellKnownTypes.Timestamp.Parser);
    private readonly pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp> values_ = new pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<global::Google.Protobuf.WellKnownTypes.Timestamp> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as TimestampArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(TimestampArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(TimestampArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class RawArray : pb::IMessage<RawArray>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<RawArray> _parser = new pb::MessageParser<RawArray>(() => new RawArray());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<RawArray> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[100]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RawArray() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RawArray(RawArray other) : this() {
      values_ = other.values_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public RawArray Clone() {
      return new RawArray(this);
    }

    /// <summary>Field number for the "values" field.</summary>
    public const int ValuesFieldNumber = 1;
    private static readonly pb::FieldCodec<pb::ByteString> _repeated_values_codec
        = pb::FieldCodec.ForBytes(10);
    private readonly pbc::RepeatedField<pb::ByteString> values_ = new pbc::RepeatedField<pb::ByteString>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public pbc::RepeatedField<pb::ByteString> Values {
      get { return values_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as RawArray);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(RawArray other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!values_.Equals(other.values_)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= values_.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      values_.WriteTo(output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      values_.WriteTo(ref output, _repeated_values_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      size += values_.CalculateSize(_repeated_values_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(RawArray other) {
      if (other == null) {
        return;
      }
      values_.Add(other.values_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            values_.AddEntriesFrom(input, _repeated_values_codec);
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 10: {
            values_.AddEntriesFrom(ref input, _repeated_values_codec);
            break;
          }
        }
      }
    }
    #endif

  }

  [global::System.Diagnostics.DebuggerDisplayAttribute("{ToString(),nq}")]
  public sealed partial class ProtocolStatus : pb::IMessage<ProtocolStatus>
  #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      , pb::IBufferMessage
  #endif
  {
    private static readonly pb::MessageParser<ProtocolStatus> _parser = new pb::MessageParser<ProtocolStatus>(() => new ProtocolStatus());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pb::MessageParser<ProtocolStatus> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::ZB.MOM.WW.MxGateway.Contracts.Proto.MxaccessGatewayReflection.Descriptor.MessageTypes[101]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ProtocolStatus() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ProtocolStatus(ProtocolStatus other) : this() {
      code_ = other.code_;
      message_ = other.message_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public ProtocolStatus Clone() {
      return new ProtocolStatus(this);
    }

    /// <summary>Field number for the "code" field.</summary>
    public const int CodeFieldNumber = 1;
    private global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode code_ = global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode Code {
      get { return code_; }
      set {
        code_ = value;
      }
    }

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 2;
    private string message_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override bool Equals(object other) {
      return Equals(other as ProtocolStatus);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public bool Equals(ProtocolStatus other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Code != other.Code) return false;
      if (Message != other.Message) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override int GetHashCode() {
      int hash = 1;
      if (Code != global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified) hash ^= Code.GetHashCode();
      if (Message.Length != 0) hash ^= Message.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void WriteTo(pb::CodedOutputStream output) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      output.WriteRawMessage(this);
    #else
      if (Code != global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Code);
      }
      if (Message.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Message);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalWriteTo(ref pb::WriteContext output) {
      if (Code != global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Code);
      }
      if (Message.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Message);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(ref output);
      }
    }
    #endif

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public int CalculateSize() {
      int size = 0;
      if (Code != global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Code);
      }
      if (Message.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Message);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(ProtocolStatus other) {
      if (other == null) {
        return;
      }
      if (other.Code != global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode.Unspecified) {
        Code = other.Code;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    public void MergeFrom(pb::CodedInputStream input) {
    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
      input.ReadRawMessage(this);
    #else
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            Code = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode) input.ReadEnum();
            break;
          }
          case 18: {
            Message = input.ReadString();
            break;
          }
        }
      }
    #endif
    }

    #if !GOOGLE_PROTOBUF_REFSTRUCT_COMPATIBILITY_MODE
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    [global::System.CodeDom.Compiler.GeneratedCode("protoc", null)]
    void pb::IBufferMessage.InternalMergeFrom(ref pb::ParseContext input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
      if ((tag & 7) == 4) {
        // Abort on any end group tag.
        return;
      }
      switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, ref input);
            break;
          case 8: {
            Code = (global::ZB.MOM.WW.MxGateway.Contracts.Proto.ProtocolStatusCode) input.ReadEnum();
            break;
          }
          case 18: {
            Message = input.ReadString();
            break;
          }
        }
      }
    }
    #endif

  }

  #endregion

}

#endregion Designer generated code
