// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_VehicleMessaging.proto
#pragma warning disable 1591, 0612, 3021
#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 Com.Fca.Uconnect.Global {

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

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

    static GlobalUconnectExtVehicleMessagingReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CipHbG9iYWxfVWNvbm5lY3RfRXh0X1ZlaGljbGVNZXNzYWdpbmcucHJvdG8S",
            "F2NvbS5mY2EudWNvbm5lY3QuZ2xvYmFsIpwNChVWZWhpY2xlTWVzc2FnZVB1",
            "Ymxpc2gSGAoQdmVoaWNsZU1lc3NhZ2VJRBgBIAEoBRILCgN2aW4YAiABKAkS",
            "TwoLbWVzc2FnZVR5cGUYAyABKA4yOi5jb20uZmNhLnVjb25uZWN0Lmdsb2Jh",
            "bC5WZWhpY2xlTWVzc2FnZVB1Ymxpc2guTWVzc2FnZVR5cGUSWwoRbWVzc2Fn",
            "ZURldGFpbFR5cGUYByABKA4yQC5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5W",
            "ZWhpY2xlTWVzc2FnZVB1Ymxpc2guTWVzc2FnZURldGFpbFR5cGUSFwoPbWVz",
            "c2FnZVRlbXBsYXRlGAQgASgJElsKD21lc3NhZ2VQcmlvcml0eRgJIAEoDjJC",
            "LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlZlaGljbGVNZXNzYWdlUHVibGlz",
            "aC5NZXNzYWdlUHJpb3JpdHlUeXBlEk4KB21lc3NhZ2UYBSADKAsyPS5jb20u",
            "ZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhpY2xlTWVzc2FnZVB1Ymxpc2guTGFu",
            "Z3VhZ2VTdHJpbmcSHQoVU2VydmljZU1lc3NhZ2VFdmVudElEGAggASgJEmAK",
            "EW1lc3NhZ2VQYXJhbWV0ZXJzGAYgAygLMkUuY29tLmZjYS51Y29ubmVjdC5n",
            "bG9iYWwuVmVoaWNsZU1lc3NhZ2VQdWJsaXNoLk1lc3NhZ2VQYXJhbWV0ZXJz",
            "RW50cnkasgEKDkxhbmd1YWdlU3RyaW5nEg0KBXRpdGxlGAMgASgJEhAKCGxh",
            "bmd1YWdlGAEgASgJEhMKC21lc3NhZ2VUZXh0GAIgASgJElIKDGJ1dHRvbkFj",
            "dGlvbhgEIAMoDjI8LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlZlaGljbGVN",
            "ZXNzYWdlUHVibGlzaC5CdXR0b25BY3Rpb25zEhYKDmFsdFBob25lTnVtYmVy",
            "GAUgASgJGjgKFk1lc3NhZ2VQYXJhbWV0ZXJzRW50cnkSCwoDa2V5GAEgASgJ",
            "Eg0KBXZhbHVlGAIgASgJOgI4ASKhAQoLTWVzc2FnZVR5cGUSEQoNUkVDQUxM",
            "X05PVElDRRAAEhIKDlNFUlZJQ0VfTk9USUNFEAESEwoPUENfTk9USUZJQ0FU",
            "SU9OEAISDgoKRU5ST0xMTUVOVBADEhcKE1NVQlNDUklQVElPTl9OT1RJQ0UQ",
            "BBINCglNQVJLRVRJTkcQBRILCgdHRU5FUkFMEAYSEQoNQ1VTVE9NX05PVElD",
            "RRAHIpAEChFNZXNzYWdlRGV0YWlsVHlwZRINCglSRUNBTExfSUQQABIUChBS",
            "RUNBTExfQ09NUE9ORU5UEAESEgoOUkVDQUxMX1NVTU1BUlkQAhIWChJSRUNB",
            "TExfQ09OU0VRVUVOQ0UQAxIUChBPV05FUl9ORVhUX1NURVBTEAQSFAoQU0VS",
            "VklDRV9EVUVfREFURRAFEhMKD1NFUlZJQ0VfU1VNTUFSWRAHEhoKFlNVQlND",
            "UklQVElPTl9UT19FWFBJUkUQBhIYChRTVUJTQ1JJUFRJT05fRVhQSVJFRBAI",
            "EgkKBU9USEVSEAkSGQoVU1VCU0NSSVBUSU9OX0VORF9EQVRFEAoSGQoVU1VC",
            "U0NSSVBUSU9OX1RPX1JFTkVXEAsSHwobU1VCU0NSSVBUSU9OX0RBWVNfVE9f",
            "RVhQSVJFEAwSDwoLU0VSVklDRV9PSUwQDRIPCgtTRVJWSUNFX1RQTRAOEhEK",
            "DVNFUlZJQ0VfQlJBS0UQDxITCg9TRVJWSUNFX0JBVFRFUlkQEBIcChhTVUJT",
            "Q1JJUFRJT05fRU5ESU5HX1NPT04QERIgChxTVUJTQ1JJUFRJT05fRU5ST0xM",
            "X1JFTUlOREVSEBISHAoYTUFSS0VUSU5HX01FU1NBR0VfR0VORVJBEBMSEQoN",
            "TEVBU0VfTE9ZQUxUWRAUEhYKEkFVRElPX1NVQlNDUklQVElPThAVIlkKE01l",
            "c3NhZ2VQcmlvcml0eVR5cGUSFAoQUFJJT1JJVFlfREVGQVVMVBAAEgsKB0hJ",
            "R0hFU1QQARIICgRISUdIEAISCgoGTUVESVVNEAMSCQoFTEVBU1QQBCJmCg1C",
            "dXR0b25BY3Rpb25zEggKBE5PTkUQABIGCgJPSxABEhMKD1JFTUlORF9NRV9M",
            "QVRFUhACEggKBENBTEwQAxISCg5CTFVFVE9PVEhfQ0FMTBAEEhAKDE9QRU5f",
            "TUFJTEJPWBAFIr8DChFWZWhpY2xlTWVzc2FnZUFjaxIYChB2ZWhpY2xlTWVz",
            "c2FnZUlEGAEgASgFEh8KF21lc3NhZ2VSZWNlaXB0VGltZXN0YW1wGAIgASgD",
            "EkcKBnN0YXR1cxgDIAEoDjI3LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlZl",
            "aGljbGVNZXNzYWdlQWNrLlJlc3BvbnNlRW51bRIZChFmYWlsdXJlRGlhZ25v",
            "c3RpYxgEIAEoCSKKAgoMUmVzcG9uc2VFbnVtEh4KGk1FU1NBR0VfU1RBR0VE",
            "X0ZPUl9ESVNQTEFZEAASHgoaTUVTU0FHRV9UWVBFX05PVF9TVVBQT1JURUQQ",
            "ARIjCh9NRVNTQUdFX0xBTkdVQUdFU19OT1RfU1VQUE9SVEVEEAISGgoWTUVT",
            "U0FHRV9TVEFHSU5HX0ZBSUxFRBADEjEKLU1FU1NBR0VfREVTVElOQVRJT05f",
            "VEVNUE9SQVJJTFlfTk9UX0FWQUlMQUJMRRAEEhkKFU1FU1NBR0VfVklOX05P",
            "VF9WQUxJRBAFEhcKE01FU1NBR0VfQVVUT19ERUxFVEUQBhISCg5NRVNTQUdF",
            "X0RFTEVURRAHIroECiBWZWhpY2xlTWVzc2FnZURpc3Bvc2l0aW9uUHVibGlz",
            "aBIYChB2ZWhpY2xlTWVzc2FnZUlEGAEgASgFEh8KF21lc3NhZ2VEaXNwbGF5",
            "VGltZXN0YW1wGAIgASgDEisKI21lc3NhZ2VITUlEaXNwb3NpdGlvbkV2ZW50",
            "VGltZXN0YW1wGAMgASgDEmUKC2Rpc3Bvc2l0aW9uGAQgASgOMlAuY29tLmZj",
            "YS51Y29ubmVjdC5nbG9iYWwuVmVoaWNsZU1lc3NhZ2VEaXNwb3NpdGlvblB1",
            "Ymxpc2guTWVzc2FnZURpc3Bvc2l0aW9uRW51bRIZChFmYWlsdXJlRGlhZ25v",
            "c3RpYxgFIAEoCRILCgN2aW4YBiABKAkingIKFk1lc3NhZ2VEaXNwb3NpdGlv",
            "bkVudW0SIQodTUVTU0FHRV9DT05GSVJNRURfQllfT1BFUkFUT1IQABIdChlN",
            "RVNTQUdFX0RJU1BMQVlfQ0FOQ0VMTEVEEAESIgoeTUVTU0FHRV9ESVNQTEFZ",
            "X0NPTkZJUk1FRF9DQUxMEAYSGQoVTUVTU0FHRV9WSU5fTk9UX1ZBTElEEAIS",
            "FQoRTUVTU0FHRV9USU1FRF9PVVQQAxIjCh9NRVNTQUdFX0xBTkdVQUdFU19O",
            "T1RfU1VQUE9SVEVEEAQSGgoWTUVTU0FHRV9ESVNQTEFZX0ZBSUxFRBAFEhcK",
            "E01FU1NBR0VfQVVUT19ERUxFVEUQBxISCg5NRVNTQUdFX0RFTEVURRAIIrQB",
            "ChxWZWhpY2xlTWVzc2FnZURpc3Bvc2l0aW9uQWNrEl8KCHJlc3BvbnNlGAEg",
            "ASgOMk0uY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuVmVoaWNsZU1lc3NhZ2VE",
            "aXNwb3NpdGlvbkFjay5EaXNwb3NpdGlvblJlc3BvbnNlRW51bSIzChdEaXNw",
            "b3NpdGlvblJlc3BvbnNlRW51bRILCgdTVUNDRVNTEAASCwoHRkFJTFVSRRAB",
            "YgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish), global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Parser, new[]{ "VehicleMessageID", "Vin", "MessageType", "MessageDetailType", "MessageTemplate", "MessagePriority", "Message", "ServiceMessageEventID", "MessageParameters" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageType), typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageDetailType), typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessagePriorityType), typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions) }, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString), global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString.Parser, new[]{ "Title", "Language", "MessageText", "ButtonAction", "AltPhoneNumber" }, null, null, null),
            null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleMessageAck), global::Com.Fca.Uconnect.Global.VehicleMessageAck.Parser, new[]{ "VehicleMessageID", "MessageReceiptTimestamp", "Status", "FailureDiagnostic" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleMessageAck.Types.ResponseEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish), global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish.Parser, new[]{ "VehicleMessageID", "MessageDisplayTimestamp", "MessageHMIDispositionEventTimestamp", "Disposition", "FailureDiagnostic", "Vin" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish.Types.MessageDispositionEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck), global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck.Parser, new[]{ "Response" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck.Types.DispositionResponseEnum) }, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This message is to send any Alert Messages to the Vehicle like Service or Recall.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>VehicleMessagePublish Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490983981881
  /// 		messageId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.vehicleMessagePublish]
  /// 		 {
  /// 		   vin: "1HGCM82633A004352"
  /// 		   messageType: SERVICE_NOTICE
  /// 		   message
  /// 		   {
  /// 			language: "ENGLISH"
  /// 			messageText: "Your Vehicle is Due for Service"
  /// 			}
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class VehicleMessagePublish : pb::IMessage<VehicleMessagePublish> {
    private static readonly pb::MessageParser<VehicleMessagePublish> _parser = new pb::MessageParser<VehicleMessagePublish>(() => new VehicleMessagePublish());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleMessagePublish> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtVehicleMessagingReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessagePublish() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessagePublish(VehicleMessagePublish other) : this() {
      vehicleMessageID_ = other.vehicleMessageID_;
      vin_ = other.vin_;
      messageType_ = other.messageType_;
      messageDetailType_ = other.messageDetailType_;
      messageTemplate_ = other.messageTemplate_;
      messagePriority_ = other.messagePriority_;
      message_ = other.message_.Clone();
      serviceMessageEventID_ = other.serviceMessageEventID_;
      messageParameters_ = other.messageParameters_.Clone();
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessagePublish Clone() {
      return new VehicleMessagePublish(this);
    }

    /// <summary>Field number for the "vehicleMessageID" field.</summary>
    public const int VehicleMessageIDFieldNumber = 1;
    private int vehicleMessageID_;
    /// <summary>
    //// Generated by the ICT Back Office
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int VehicleMessageID {
      get { return vehicleMessageID_; }
      set {
        vehicleMessageID_ = value;
      }
    }

    /// <summary>Field number for the "vin" field.</summary>
    public const int VinFieldNumber = 2;
    private string vin_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Vin {
      get { return vin_; }
      set {
        vin_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "messageType" field.</summary>
    public const int MessageTypeFieldNumber = 3;
    private global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageType messageType_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageType MessageType {
      get { return messageType_; }
      set {
        messageType_ = value;
      }
    }

    /// <summary>Field number for the "messageDetailType" field.</summary>
    public const int MessageDetailTypeFieldNumber = 7;
    private global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageDetailType messageDetailType_ = 0;
    /// <summary>
    //// Additional Message Type details
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageDetailType MessageDetailType {
      get { return messageDetailType_; }
      set {
        messageDetailType_ = value;
      }
    }

    /// <summary>Field number for the "messageTemplate" field.</summary>
    public const int MessageTemplateFieldNumber = 4;
    private string messageTemplate_ = "";
    /// <summary>
    //// the template to be used to format the message
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string MessageTemplate {
      get { return messageTemplate_; }
      set {
        messageTemplate_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "messagePriority" field.</summary>
    public const int MessagePriorityFieldNumber = 9;
    private global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessagePriorityType messagePriority_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessagePriorityType MessagePriority {
      get { return messagePriority_; }
      set {
        messagePriority_ = value;
      }
    }

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 5;
    private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString> _repeated_message_codec
        = pb::FieldCodec.ForMessage(42, global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString.Parser);
    private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString> message_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString>();
    /// <summary>
    //// the message, in the languages that are supported by the device that will display the messages. Languages sent will vary with regional requirements.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.LanguageString> Message {
      get { return message_; }
    }

    /// <summary>Field number for the "ServiceMessageEventID" field.</summary>
    public const int ServiceMessageEventIDFieldNumber = 8;
    private string serviceMessageEventID_ = "";
    /// <summary>
    //// MessageEventID for tracking purposes uses the DTC Event Code
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string ServiceMessageEventID {
      get { return serviceMessageEventID_; }
      set {
        serviceMessageEventID_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "messageParameters" field.</summary>
    public const int MessageParametersFieldNumber = 6;
    private static readonly pbc::MapField<string, string>.Codec _map_messageParameters_codec
        = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 50);
    private readonly pbc::MapField<string, string> messageParameters_ = new pbc::MapField<string, string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, string> MessageParameters {
      get { return messageParameters_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleMessagePublish);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleMessagePublish other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VehicleMessageID != other.VehicleMessageID) return false;
      if (Vin != other.Vin) return false;
      if (MessageType != other.MessageType) return false;
      if (MessageDetailType != other.MessageDetailType) return false;
      if (MessageTemplate != other.MessageTemplate) return false;
      if (MessagePriority != other.MessagePriority) return false;
      if(!message_.Equals(other.message_)) return false;
      if (ServiceMessageEventID != other.ServiceMessageEventID) return false;
      if (!MessageParameters.Equals(other.MessageParameters)) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (VehicleMessageID != 0) hash ^= VehicleMessageID.GetHashCode();
      if (Vin.Length != 0) hash ^= Vin.GetHashCode();
      if (MessageType != 0) hash ^= MessageType.GetHashCode();
      if (MessageDetailType != 0) hash ^= MessageDetailType.GetHashCode();
      if (MessageTemplate.Length != 0) hash ^= MessageTemplate.GetHashCode();
      if (MessagePriority != 0) hash ^= MessagePriority.GetHashCode();
      hash ^= message_.GetHashCode();
      if (ServiceMessageEventID.Length != 0) hash ^= ServiceMessageEventID.GetHashCode();
      hash ^= MessageParameters.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (VehicleMessageID != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(VehicleMessageID);
      }
      if (Vin.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(Vin);
      }
      if (MessageType != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) MessageType);
      }
      if (MessageTemplate.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(MessageTemplate);
      }
      message_.WriteTo(output, _repeated_message_codec);
      messageParameters_.WriteTo(output, _map_messageParameters_codec);
      if (MessageDetailType != 0) {
        output.WriteRawTag(56);
        output.WriteEnum((int) MessageDetailType);
      }
      if (ServiceMessageEventID.Length != 0) {
        output.WriteRawTag(66);
        output.WriteString(ServiceMessageEventID);
      }
      if (MessagePriority != 0) {
        output.WriteRawTag(72);
        output.WriteEnum((int) MessagePriority);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (VehicleMessageID != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VehicleMessageID);
      }
      if (Vin.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Vin);
      }
      if (MessageType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MessageType);
      }
      if (MessageDetailType != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MessageDetailType);
      }
      if (MessageTemplate.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(MessageTemplate);
      }
      if (MessagePriority != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) MessagePriority);
      }
      size += message_.CalculateSize(_repeated_message_codec);
      if (ServiceMessageEventID.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(ServiceMessageEventID);
      }
      size += messageParameters_.CalculateSize(_map_messageParameters_codec);
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleMessagePublish other) {
      if (other == null) {
        return;
      }
      if (other.VehicleMessageID != 0) {
        VehicleMessageID = other.VehicleMessageID;
      }
      if (other.Vin.Length != 0) {
        Vin = other.Vin;
      }
      if (other.MessageType != 0) {
        MessageType = other.MessageType;
      }
      if (other.MessageDetailType != 0) {
        MessageDetailType = other.MessageDetailType;
      }
      if (other.MessageTemplate.Length != 0) {
        MessageTemplate = other.MessageTemplate;
      }
      if (other.MessagePriority != 0) {
        MessagePriority = other.MessagePriority;
      }
      message_.Add(other.message_);
      if (other.ServiceMessageEventID.Length != 0) {
        ServiceMessageEventID = other.ServiceMessageEventID;
      }
      messageParameters_.Add(other.messageParameters_);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            VehicleMessageID = input.ReadInt32();
            break;
          }
          case 18: {
            Vin = input.ReadString();
            break;
          }
          case 24: {
            messageType_ = (global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageType) input.ReadEnum();
            break;
          }
          case 34: {
            MessageTemplate = input.ReadString();
            break;
          }
          case 42: {
            message_.AddEntriesFrom(input, _repeated_message_codec);
            break;
          }
          case 50: {
            messageParameters_.AddEntriesFrom(input, _map_messageParameters_codec);
            break;
          }
          case 56: {
            messageDetailType_ = (global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessageDetailType) input.ReadEnum();
            break;
          }
          case 66: {
            ServiceMessageEventID = input.ReadString();
            break;
          }
          case 72: {
            messagePriority_ = (global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.MessagePriorityType) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleMessagePublish message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum MessageType {
        /// <summary>
        //// Represents Recall Notice Message.
        /// </summary>
        [pbr::OriginalName("RECALL_NOTICE")] RecallNotice = 0,
        /// <summary>
        //// Represents Service Notice Message.
        /// </summary>
        [pbr::OriginalName("SERVICE_NOTICE")] ServiceNotice = 1,
        /// <summary>
        //// Represents Parental Control Notification Message.
        /// </summary>
        [pbr::OriginalName("PC_NOTIFICATION")] PcNotification = 2,
        /// <summary>
        //// Represents a Welcome or other Enrollment Message
        /// </summary>
        [pbr::OriginalName("ENROLLMENT")] Enrollment = 3,
        /// <summary>
        //// SUBSCRIPTION MESSAGE
        /// </summary>
        [pbr::OriginalName("SUBSCRIPTION_NOTICE")] SubscriptionNotice = 4,
        /// <summary>
        //// Future Use
        /// </summary>
        [pbr::OriginalName("MARKETING")] Marketing = 5,
        /// <summary>
        //// General Use Messages
        /// </summary>
        [pbr::OriginalName("GENERAL")] General = 6,
        [pbr::OriginalName("CUSTOM_NOTICE")] CustomNotice = 7,
      }

      public enum MessageDetailType {
        /// <summary>
        ////NOT USED
        /// </summary>
        [pbr::OriginalName("RECALL_ID")] RecallId = 0,
        /// <summary>
        ////NOT USED
        /// </summary>
        [pbr::OriginalName("RECALL_COMPONENT")] RecallComponent = 1,
        [pbr::OriginalName("RECALL_SUMMARY")] RecallSummary = 2,
        /// <summary>
        ////NOT USED
        /// </summary>
        [pbr::OriginalName("RECALL_CONSEQUENCE")] RecallConsequence = 3,
        [pbr::OriginalName("OWNER_NEXT_STEPS")] OwnerNextSteps = 4,
        /// <summary>
        ////NOT USED
        /// </summary>
        [pbr::OriginalName("SERVICE_DUE_DATE")] ServiceDueDate = 5,
        [pbr::OriginalName("SERVICE_SUMMARY")] ServiceSummary = 7,
        [pbr::OriginalName("SUBSCRIPTION_TO_EXPIRE")] SubscriptionToExpire = 6,
        [pbr::OriginalName("SUBSCRIPTION_EXPIRED")] SubscriptionExpired = 8,
        [pbr::OriginalName("OTHER")] Other = 9,
        [pbr::OriginalName("SUBSCRIPTION_END_DATE")] SubscriptionEndDate = 10,
        [pbr::OriginalName("SUBSCRIPTION_TO_RENEW")] SubscriptionToRenew = 11,
        [pbr::OriginalName("SUBSCRIPTION_DAYS_TO_EXPIRE")] SubscriptionDaysToExpire = 12,
        [pbr::OriginalName("SERVICE_OIL")] ServiceOil = 13,
        [pbr::OriginalName("SERVICE_TPM")] ServiceTpm = 14,
        [pbr::OriginalName("SERVICE_BRAKE")] ServiceBrake = 15,
        [pbr::OriginalName("SERVICE_BATTERY")] ServiceBattery = 16,
        [pbr::OriginalName("SUBSCRIPTION_ENDING_SOON")] SubscriptionEndingSoon = 17,
        [pbr::OriginalName("SUBSCRIPTION_ENROLL_REMINDER")] SubscriptionEnrollReminder = 18,
        [pbr::OriginalName("MARKETING_MESSAGE_GENERA")] MarketingMessageGenera = 19,
        [pbr::OriginalName("LEASE_LOYALTY")] LeaseLoyalty = 20,
        [pbr::OriginalName("AUDIO_SUBSCRIPTION")] AudioSubscription = 21,
      }

      public enum MessagePriorityType {
        [pbr::OriginalName("PRIORITY_DEFAULT")] PriorityDefault = 0,
        [pbr::OriginalName("HIGHEST")] Highest = 1,
        [pbr::OriginalName("HIGH")] High = 2,
        [pbr::OriginalName("MEDIUM")] Medium = 3,
        [pbr::OriginalName("LEAST")] Least = 4,
      }

      public enum ButtonActions {
        [pbr::OriginalName("NONE")] None = 0,
        [pbr::OriginalName("OK")] Ok = 1,
        [pbr::OriginalName("REMIND_ME_LATER")] RemindMeLater = 2,
        [pbr::OriginalName("CALL")] Call = 3,
        [pbr::OriginalName("BLUETOOTH_CALL")] BluetoothCall = 4,
        [pbr::OriginalName("OPEN_MAILBOX")] OpenMailbox = 5,
      }

      public sealed partial class LanguageString : pb::IMessage<LanguageString> {
        private static readonly pb::MessageParser<LanguageString> _parser = new pb::MessageParser<LanguageString>(() => new LanguageString());
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<LanguageString> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LanguageString() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LanguageString(LanguageString other) : this() {
          title_ = other.title_;
          language_ = other.language_;
          messageText_ = other.messageText_;
          buttonAction_ = other.buttonAction_.Clone();
          altPhoneNumber_ = other.altPhoneNumber_;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public LanguageString Clone() {
          return new LanguageString(this);
        }

        /// <summary>Field number for the "title" field.</summary>
        public const int TitleFieldNumber = 3;
        private string title_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Title {
          get { return title_; }
          set {
            title_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "language" field.</summary>
        public const int LanguageFieldNumber = 1;
        private string language_ = "";
        /// <summary>
        //// The language this text is for messages and uses ISO-639-1 Language Code
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Language {
          get { return language_; }
          set {
            language_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "messageText" field.</summary>
        public const int MessageTextFieldNumber = 2;
        private string messageText_ = "";
        /// <summary>
        //// the text in the given language
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string MessageText {
          get { return messageText_; }
          set {
            messageText_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "buttonAction" field.</summary>
        public const int ButtonActionFieldNumber = 4;
        private static readonly pb::FieldCodec<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions> _repeated_buttonAction_codec
            = pb::FieldCodec.ForEnum(34, x => (int) x, x => (global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions) x);
        private readonly pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions> buttonAction_ = new pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions>();
        /// <summary>
        /// Repeat up to twice
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Com.Fca.Uconnect.Global.VehicleMessagePublish.Types.ButtonActions> ButtonAction {
          get { return buttonAction_; }
        }

        /// <summary>Field number for the "altPhoneNumber" field.</summary>
        public const int AltPhoneNumberFieldNumber = 5;
        private string altPhoneNumber_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string AltPhoneNumber {
          get { return altPhoneNumber_; }
          set {
            altPhoneNumber_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as LanguageString);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(LanguageString other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (Title != other.Title) return false;
          if (Language != other.Language) return false;
          if (MessageText != other.MessageText) return false;
          if(!buttonAction_.Equals(other.buttonAction_)) return false;
          if (AltPhoneNumber != other.AltPhoneNumber) return false;
          return true;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (Title.Length != 0) hash ^= Title.GetHashCode();
          if (Language.Length != 0) hash ^= Language.GetHashCode();
          if (MessageText.Length != 0) hash ^= MessageText.GetHashCode();
          hash ^= buttonAction_.GetHashCode();
          if (AltPhoneNumber.Length != 0) hash ^= AltPhoneNumber.GetHashCode();
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          if (Language.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(Language);
          }
          if (MessageText.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(MessageText);
          }
          if (Title.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(Title);
          }
          buttonAction_.WriteTo(output, _repeated_buttonAction_codec);
          if (AltPhoneNumber.Length != 0) {
            output.WriteRawTag(42);
            output.WriteString(AltPhoneNumber);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (Title.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Title);
          }
          if (Language.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Language);
          }
          if (MessageText.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(MessageText);
          }
          size += buttonAction_.CalculateSize(_repeated_buttonAction_codec);
          if (AltPhoneNumber.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(AltPhoneNumber);
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(LanguageString other) {
          if (other == null) {
            return;
          }
          if (other.Title.Length != 0) {
            Title = other.Title;
          }
          if (other.Language.Length != 0) {
            Language = other.Language;
          }
          if (other.MessageText.Length != 0) {
            MessageText = other.MessageText;
          }
          buttonAction_.Add(other.buttonAction_);
          if (other.AltPhoneNumber.Length != 0) {
            AltPhoneNumber = other.AltPhoneNumber;
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                input.SkipLastField();
                break;
              case 10: {
                Language = input.ReadString();
                break;
              }
              case 18: {
                MessageText = input.ReadString();
                break;
              }
              case 26: {
                Title = input.ReadString();
                break;
              }
              case 34:
              case 32: {
                buttonAction_.AddEntriesFrom(input, _repeated_buttonAction_codec);
                break;
              }
              case 42: {
                AltPhoneNumber = input.ReadString();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// This message is to Acknowledge SDP for  VehicleMessagePublish Message.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>VehicleMessageAck Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490983982096
  /// 		messageId: 1
  /// 		correlationId: 11
  /// 		messages
  /// 		{
  /// 		  [com.fca.uconnect.global.vehicleMessageAck]
  /// 		  {
  /// 			vehicleMessageID: 1
  /// 			messageReceiptTimestamp: 1490983982095
  /// 			status: MESSAGE_STAGED_FOR_DISPLAY
  /// 		  }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class VehicleMessageAck : pb::IMessage<VehicleMessageAck> {
    private static readonly pb::MessageParser<VehicleMessageAck> _parser = new pb::MessageParser<VehicleMessageAck>(() => new VehicleMessageAck());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleMessageAck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtVehicleMessagingReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageAck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageAck(VehicleMessageAck other) : this() {
      vehicleMessageID_ = other.vehicleMessageID_;
      messageReceiptTimestamp_ = other.messageReceiptTimestamp_;
      status_ = other.status_;
      failureDiagnostic_ = other.failureDiagnostic_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageAck Clone() {
      return new VehicleMessageAck(this);
    }

    /// <summary>Field number for the "vehicleMessageID" field.</summary>
    public const int VehicleMessageIDFieldNumber = 1;
    private int vehicleMessageID_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int VehicleMessageID {
      get { return vehicleMessageID_; }
      set {
        vehicleMessageID_ = value;
      }
    }

    /// <summary>Field number for the "messageReceiptTimestamp" field.</summary>
    public const int MessageReceiptTimestampFieldNumber = 2;
    private long messageReceiptTimestamp_;
    /// <summary>
    //// Time the message was received by the App
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long MessageReceiptTimestamp {
      get { return messageReceiptTimestamp_; }
      set {
        messageReceiptTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "status" field.</summary>
    public const int StatusFieldNumber = 3;
    private global::Com.Fca.Uconnect.Global.VehicleMessageAck.Types.ResponseEnum status_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessageAck.Types.ResponseEnum Status {
      get { return status_; }
      set {
        status_ = value;
      }
    }

    /// <summary>Field number for the "failureDiagnostic" field.</summary>
    public const int FailureDiagnosticFieldNumber = 4;
    private string failureDiagnostic_ = "";
    /// <summary>
    //// for MESSAGE_STAGING_FAILED, any status message or result codes may be sent here
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FailureDiagnostic {
      get { return failureDiagnostic_; }
      set {
        failureDiagnostic_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleMessageAck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleMessageAck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VehicleMessageID != other.VehicleMessageID) return false;
      if (MessageReceiptTimestamp != other.MessageReceiptTimestamp) return false;
      if (Status != other.Status) return false;
      if (FailureDiagnostic != other.FailureDiagnostic) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (VehicleMessageID != 0) hash ^= VehicleMessageID.GetHashCode();
      if (MessageReceiptTimestamp != 0L) hash ^= MessageReceiptTimestamp.GetHashCode();
      if (Status != 0) hash ^= Status.GetHashCode();
      if (FailureDiagnostic.Length != 0) hash ^= FailureDiagnostic.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (VehicleMessageID != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(VehicleMessageID);
      }
      if (MessageReceiptTimestamp != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(MessageReceiptTimestamp);
      }
      if (Status != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Status);
      }
      if (FailureDiagnostic.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(FailureDiagnostic);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (VehicleMessageID != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VehicleMessageID);
      }
      if (MessageReceiptTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(MessageReceiptTimestamp);
      }
      if (Status != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Status);
      }
      if (FailureDiagnostic.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FailureDiagnostic);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleMessageAck other) {
      if (other == null) {
        return;
      }
      if (other.VehicleMessageID != 0) {
        VehicleMessageID = other.VehicleMessageID;
      }
      if (other.MessageReceiptTimestamp != 0L) {
        MessageReceiptTimestamp = other.MessageReceiptTimestamp;
      }
      if (other.Status != 0) {
        Status = other.Status;
      }
      if (other.FailureDiagnostic.Length != 0) {
        FailureDiagnostic = other.FailureDiagnostic;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            VehicleMessageID = input.ReadInt32();
            break;
          }
          case 16: {
            MessageReceiptTimestamp = input.ReadInt64();
            break;
          }
          case 24: {
            status_ = (global::Com.Fca.Uconnect.Global.VehicleMessageAck.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 34: {
            FailureDiagnostic = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleMessageAck message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum ResponseEnum {
        /// <summary>
        //// The HU has successfully passed the message to the next downstream component, and is waiting for a reponse
        /// </summary>
        [pbr::OriginalName("MESSAGE_STAGED_FOR_DISPLAY")] MessageStagedForDisplay = 0,
        /// <summary>
        //// The HU has the message, but cannot process messages of that type. The message is discarded, retry is unlikely to succeed
        /// </summary>
        [pbr::OriginalName("MESSAGE_TYPE_NOT_SUPPORTED")] MessageTypeNotSupported = 1,
        /// <summary>
        //// None of the languages in which the message was furnished can be displayed by the HMI. The message is discarded
        /// </summary>
        [pbr::OriginalName("MESSAGE_LANGUAGES_NOT_SUPPORTED")] MessageLanguagesNotSupported = 2,
        /// <summary>
        //// The HU attempted to stage the message for display, but failed for an unexpected reason. The message is discarded, the SDP should examine the diagnostic to determine whether to resend
        /// </summary>
        [pbr::OriginalName("MESSAGE_STAGING_FAILED")] MessageStagingFailed = 3,
        /// <summary>
        //// The HU attempted to stage the message for display, but failed with a diagnostic that the destination ECU is absent. The message is discarded on the HU, and may be sent again.
        /// </summary>
        [pbr::OriginalName("MESSAGE_DESTINATION_TEMPORARILY_NOT_AVAILABLE")] MessageDestinationTemporarilyNotAvailable = 4,
        /// <summary>
        //// The message was discarded because the VIN attached to the HU is not the VIN in the message.
        /// </summary>
        [pbr::OriginalName("MESSAGE_VIN_NOT_VALID")] MessageVinNotValid = 5,
        /// <summary>
        //// Message is removed by the system
        /// </summary>
        [pbr::OriginalName("MESSAGE_AUTO_DELETE")] MessageAutoDelete = 6,
        /// <summary>
        //// Message removed by user
        /// </summary>
        [pbr::OriginalName("MESSAGE_DELETE")] MessageDelete = 7,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// The message has been fully processed, the HU has purged it fully.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>VehicleMessageDispositionPublish Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490983992118
  /// 		messageId: 2
  /// 		correlationId: 11
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.vehicleMessageDispositionPublish]
  /// 		 {
  /// 		  vehicleMessageID: "\275\237d\235u\350\323\021\212l\002o\247
  /// 							\036\007\031!\251\001\316"
  /// 		  messageDisplayTimestamp: 1490983982111
  /// 		  messageHMIDispositionEventTimestamp: 1490983992116
  /// 		  disposition: MESSAGE_DISPLAY_CANCELLED
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class VehicleMessageDispositionPublish : pb::IMessage<VehicleMessageDispositionPublish> {
    private static readonly pb::MessageParser<VehicleMessageDispositionPublish> _parser = new pb::MessageParser<VehicleMessageDispositionPublish>(() => new VehicleMessageDispositionPublish());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleMessageDispositionPublish> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtVehicleMessagingReflection.Descriptor.MessageTypes[2]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionPublish() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionPublish(VehicleMessageDispositionPublish other) : this() {
      vehicleMessageID_ = other.vehicleMessageID_;
      messageDisplayTimestamp_ = other.messageDisplayTimestamp_;
      messageHMIDispositionEventTimestamp_ = other.messageHMIDispositionEventTimestamp_;
      disposition_ = other.disposition_;
      failureDiagnostic_ = other.failureDiagnostic_;
      vin_ = other.vin_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionPublish Clone() {
      return new VehicleMessageDispositionPublish(this);
    }

    /// <summary>Field number for the "vehicleMessageID" field.</summary>
    public const int VehicleMessageIDFieldNumber = 1;
    private int vehicleMessageID_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int VehicleMessageID {
      get { return vehicleMessageID_; }
      set {
        vehicleMessageID_ = value;
      }
    }

    /// <summary>Field number for the "messageDisplayTimestamp" field.</summary>
    public const int MessageDisplayTimestampFieldNumber = 2;
    private long messageDisplayTimestamp_;
    /// <summary>
    //// time the message was shown, or VIN change detected
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long MessageDisplayTimestamp {
      get { return messageDisplayTimestamp_; }
      set {
        messageDisplayTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "messageHMIDispositionEventTimestamp" field.</summary>
    public const int MessageHMIDispositionEventTimestampFieldNumber = 3;
    private long messageHMIDispositionEventTimestamp_;
    /// <summary>
    //// time of operator interaction that closed message display
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long MessageHMIDispositionEventTimestamp {
      get { return messageHMIDispositionEventTimestamp_; }
      set {
        messageHMIDispositionEventTimestamp_ = value;
      }
    }

    /// <summary>Field number for the "disposition" field.</summary>
    public const int DispositionFieldNumber = 4;
    private global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish.Types.MessageDispositionEnum disposition_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish.Types.MessageDispositionEnum Disposition {
      get { return disposition_; }
      set {
        disposition_ = value;
      }
    }

    /// <summary>Field number for the "failureDiagnostic" field.</summary>
    public const int FailureDiagnosticFieldNumber = 5;
    private string failureDiagnostic_ = "";
    /// <summary>
    //// for MESSAGE_DISPLAY_FAILED, any status message or result codes may be sent here
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FailureDiagnostic {
      get { return failureDiagnostic_; }
      set {
        failureDiagnostic_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "vin" field.</summary>
    public const int VinFieldNumber = 6;
    private string vin_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Vin {
      get { return vin_; }
      set {
        vin_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleMessageDispositionPublish);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleMessageDispositionPublish other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (VehicleMessageID != other.VehicleMessageID) return false;
      if (MessageDisplayTimestamp != other.MessageDisplayTimestamp) return false;
      if (MessageHMIDispositionEventTimestamp != other.MessageHMIDispositionEventTimestamp) return false;
      if (Disposition != other.Disposition) return false;
      if (FailureDiagnostic != other.FailureDiagnostic) return false;
      if (Vin != other.Vin) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (VehicleMessageID != 0) hash ^= VehicleMessageID.GetHashCode();
      if (MessageDisplayTimestamp != 0L) hash ^= MessageDisplayTimestamp.GetHashCode();
      if (MessageHMIDispositionEventTimestamp != 0L) hash ^= MessageHMIDispositionEventTimestamp.GetHashCode();
      if (Disposition != 0) hash ^= Disposition.GetHashCode();
      if (FailureDiagnostic.Length != 0) hash ^= FailureDiagnostic.GetHashCode();
      if (Vin.Length != 0) hash ^= Vin.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (VehicleMessageID != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(VehicleMessageID);
      }
      if (MessageDisplayTimestamp != 0L) {
        output.WriteRawTag(16);
        output.WriteInt64(MessageDisplayTimestamp);
      }
      if (MessageHMIDispositionEventTimestamp != 0L) {
        output.WriteRawTag(24);
        output.WriteInt64(MessageHMIDispositionEventTimestamp);
      }
      if (Disposition != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) Disposition);
      }
      if (FailureDiagnostic.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(FailureDiagnostic);
      }
      if (Vin.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(Vin);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (VehicleMessageID != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(VehicleMessageID);
      }
      if (MessageDisplayTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(MessageDisplayTimestamp);
      }
      if (MessageHMIDispositionEventTimestamp != 0L) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(MessageHMIDispositionEventTimestamp);
      }
      if (Disposition != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Disposition);
      }
      if (FailureDiagnostic.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(FailureDiagnostic);
      }
      if (Vin.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Vin);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleMessageDispositionPublish other) {
      if (other == null) {
        return;
      }
      if (other.VehicleMessageID != 0) {
        VehicleMessageID = other.VehicleMessageID;
      }
      if (other.MessageDisplayTimestamp != 0L) {
        MessageDisplayTimestamp = other.MessageDisplayTimestamp;
      }
      if (other.MessageHMIDispositionEventTimestamp != 0L) {
        MessageHMIDispositionEventTimestamp = other.MessageHMIDispositionEventTimestamp;
      }
      if (other.Disposition != 0) {
        Disposition = other.Disposition;
      }
      if (other.FailureDiagnostic.Length != 0) {
        FailureDiagnostic = other.FailureDiagnostic;
      }
      if (other.Vin.Length != 0) {
        Vin = other.Vin;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            VehicleMessageID = input.ReadInt32();
            break;
          }
          case 16: {
            MessageDisplayTimestamp = input.ReadInt64();
            break;
          }
          case 24: {
            MessageHMIDispositionEventTimestamp = input.ReadInt64();
            break;
          }
          case 32: {
            disposition_ = (global::Com.Fca.Uconnect.Global.VehicleMessageDispositionPublish.Types.MessageDispositionEnum) input.ReadEnum();
            break;
          }
          case 42: {
            FailureDiagnostic = input.ReadString();
            break;
          }
          case 50: {
            Vin = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleMessageDispositionPublish message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum MessageDispositionEnum {
        /// <summary>
        //// The message has been shown, and the operator has acknowledged by pressing OK.
        /// </summary>
        [pbr::OriginalName("MESSAGE_CONFIRMED_BY_OPERATOR")] MessageConfirmedByOperator = 0,
        /// <summary>
        //// The HMI element displaying the message was closed by the operator by pressing X.
        /// </summary>
        [pbr::OriginalName("MESSAGE_DISPLAY_CANCELLED")] MessageDisplayCancelled = 1,
        /// <summary>
        //// The message has been shown and the operator pressed the call button.
        /// </summary>
        [pbr::OriginalName("MESSAGE_DISPLAY_CONFIRMED_CALL")] MessageDisplayConfirmedCall = 6,
        /// <summary>
        //// The message was not displayed because the vin in VehicleMessagePublish is not the vin attached to the HU or the display ECU. Implies that the VIN has changed.
        /// </summary>
        [pbr::OriginalName("MESSAGE_VIN_NOT_VALID")] MessageVinNotValid = 2,
        /// <summary>
        //// logic in the HU or a downstream component has determined that the message is too old to display
        /// </summary>
        [pbr::OriginalName("MESSAGE_TIMED_OUT")] MessageTimedOut = 3,
        /// <summary>
        //// None of the languages in which the message was furnished can be displayed by the HMI.
        /// </summary>
        [pbr::OriginalName("MESSAGE_LANGUAGES_NOT_SUPPORTED")] MessageLanguagesNotSupported = 4,
        /// <summary>
        //// logic in the HU or a downstream component has discarded the message for an unexpected reason.
        /// </summary>
        [pbr::OriginalName("MESSAGE_DISPLAY_FAILED")] MessageDisplayFailed = 5,
        /// <summary>
        //// Message is removed by the system
        /// </summary>
        [pbr::OriginalName("MESSAGE_AUTO_DELETE")] MessageAutoDelete = 7,
        /// <summary>
        //// Message removed by user
        /// </summary>
        [pbr::OriginalName("MESSAGE_DELETE")] MessageDelete = 8,
      }

    }
    #endregion

  }

  /// <summary>
  ///*
  /// The message is to acknowledge the  vehicleMessageDispositionPublish message.
  /// &lt;div class=exmsg-main>
  /// &lt;h4>VehicleMessageDispositionAck Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1490983992220
  /// 		messageId: 3
  /// 		correlationId: 2
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.vehicleMessageDispositionAck]
  /// 		 {
  /// 		  response: SUCCESS
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>
  /// &lt;/div>
  /// </summary>
  public sealed partial class VehicleMessageDispositionAck : pb::IMessage<VehicleMessageDispositionAck> {
    private static readonly pb::MessageParser<VehicleMessageDispositionAck> _parser = new pb::MessageParser<VehicleMessageDispositionAck>(() => new VehicleMessageDispositionAck());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehicleMessageDispositionAck> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Com.Fca.Uconnect.Global.GlobalUconnectExtVehicleMessagingReflection.Descriptor.MessageTypes[3]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionAck() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionAck(VehicleMessageDispositionAck other) : this() {
      response_ = other.response_;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehicleMessageDispositionAck Clone() {
      return new VehicleMessageDispositionAck(this);
    }

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 1;
    private global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck.Types.DispositionResponseEnum response_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck.Types.DispositionResponseEnum Response {
      get { return response_; }
      set {
        response_ = value;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as VehicleMessageDispositionAck);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehicleMessageDispositionAck other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Response != other.Response) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Response != 0) hash ^= Response.GetHashCode();
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Response != 0) {
        output.WriteRawTag(8);
        output.WriteEnum((int) Response);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Response != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Response);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehicleMessageDispositionAck other) {
      if (other == null) {
        return;
      }
      if (other.Response != 0) {
        Response = other.Response;
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            input.SkipLastField();
            break;
          case 8: {
            response_ = (global::Com.Fca.Uconnect.Global.VehicleMessageDispositionAck.Types.DispositionResponseEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehicleMessageDispositionAck message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum DispositionResponseEnum {
        [pbr::OriginalName("SUCCESS")] Success = 0,
        [pbr::OriginalName("FAILURE")] Failure = 1,
      }

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
