// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: Global_Uconnect_Ext_VehAuth.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_VehAuth.proto</summary>
  public static partial class GlobalUconnectExtVehAuthReflection {

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

    static GlobalUconnectExtVehAuthReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "CiFHbG9iYWxfVWNvbm5lY3RfRXh0X1ZlaEF1dGgucHJvdG8SF2NvbS5mY2Eu",
            "dWNvbm5lY3QuZ2xvYmFsGhxHbG9iYWxfVWNvbm5lY3RfRGV2aWNlLnByb3Rv",
            "IvABCg5WZWhBdXRoUmVxdWVzdBILCgN2aW4YASABKAkSLwoGZGV2aWNlGAIg",
            "ASgLMh8uY29tLmZjYS51Y29ubmVjdC5nbG9iYWwuRGV2aWNlEhEKCWF1dGhU",
            "b2tlbhgDIAEoDBINCgVub25jZRgEIAEoDBJFCgR0eXBlGAUgASgOMjcuY29t",
            "LmZjYS51Y29ubmVjdC5nbG9iYWwuVmVoQXV0aFJlcXVlc3QuUmVxdWVzdFR5",
            "cGVFbnVtIjcKD1JlcXVlc3RUeXBlRW51bRILCgdVTktOT1dOEAASCwoHSU5J",
            "VElBTBABEgoKBlNFQ09ORBACIq8BCg9WZWhBdXRoUmVzcG9uc2USFAoMc2Vz",
            "c2lvblRva2VuGAEgASgMEg0KBW5vbmNlGAIgASgMEkQKBHR5cGUYAyABKA4y",
            "Ni5jb20uZmNhLnVjb25uZWN0Lmdsb2JhbC5WZWhBdXRoUmVzcG9uc2UuVG9r",
            "ZW5UeXBlRW51bSIxCg1Ub2tlblR5cGVFbnVtEgsKB1VOS05PV04QABIICgRU",
            "RU1QEAESCQoFVkFMSUQQAiJLChJDcmVhdGVUb2tlblJlcXVlc3QSEgoKZ3Jh",
            "bnRfdHlwZRgBIAEoCRIQCghkZXZpY2VJZBgCIAEoCRIPCgdwZXJtS2V5GAMg",
            "ASgJIpYBChNDcmVhdGVUb2tlblJlc3BvbnNlEhMKC2FjY2Vzc1Rva2VuGAEg",
            "ASgJEhoKEmF1dGhvcml6YXRpb25Ub2tlbhgCIAEoCRIRCglleHBpcmVzSW4Y",
            "AyABKAUSFAoMcmVmcmVzaFRva2VuGAQgASgJEhIKCnRva2VuX3R5cGUYBSAB",
            "KAkSEQoJYWNjb3VudEROGAYgASgJIlEKE1JlZnJlc2hUb2tlblJlcXVlc3QS",
            "EgoKZ3JhbnRfdHlwZRgBIAEoCRIQCghkZXZpY2VJZBgCIAEoCRIUCgxyZWZy",
            "ZXNoVG9rZW4YAyABKAkiwwIKFFJlZnJlc2hUb2tlblJlc3BvbnNlEhMKC2Fj",
            "Y2Vzc1Rva2VuGAEgASgJEhoKEmF1dGhvcml6YXRpb25Ub2tlbhgCIAEoCRIR",
            "CglleHBpcmVzSW4YAyABKAUSFAoMcmVmcmVzaFRva2VuGAQgASgJEhIKCnRv",
            "a2VuX3R5cGUYBSABKAkSEQoJYWNjb3VudEROGAYgASgJElAKDHJlc3BvbnNl",
            "RW51bRgHIAEoDjI6LmNvbS5mY2EudWNvbm5lY3QuZ2xvYmFsLlJlZnJlc2hU",
            "b2tlblJlc3BvbnNlLlJlc3BvbnNlRW51bRITCgtpc1RyYW5zaWVudBgIIAEo",
            "CBIZChFmYWlsdXJlUmVhc29uQ29kZRgJIAEoBSIoCgxSZXNwb25zZUVudW0S",
            "CwoHU1VDQ0VTUxAAEgsKB0ZBSUxVUkUQAVAAYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Com.Fca.Uconnect.Global.GlobalUconnectDeviceReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehAuthRequest), global::Com.Fca.Uconnect.Global.VehAuthRequest.Parser, new[]{ "Vin", "Device", "AuthToken", "Nonce", "Type" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehAuthRequest.Types.RequestTypeEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.VehAuthResponse), global::Com.Fca.Uconnect.Global.VehAuthResponse.Parser, new[]{ "SessionToken", "Nonce", "Type" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.VehAuthResponse.Types.TokenTypeEnum) }, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.CreateTokenRequest), global::Com.Fca.Uconnect.Global.CreateTokenRequest.Parser, new[]{ "GrantType", "DeviceId", "PermKey" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.CreateTokenResponse), global::Com.Fca.Uconnect.Global.CreateTokenResponse.Parser, new[]{ "AccessToken", "AuthorizationToken", "ExpiresIn", "RefreshToken", "TokenType", "AccountDN" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.RefreshTokenRequest), global::Com.Fca.Uconnect.Global.RefreshTokenRequest.Parser, new[]{ "GrantType", "DeviceId", "RefreshToken" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Com.Fca.Uconnect.Global.RefreshTokenResponse), global::Com.Fca.Uconnect.Global.RefreshTokenResponse.Parser, new[]{ "AccessToken", "AuthorizationToken", "ExpiresIn", "RefreshToken", "TokenType", "AccountDN", "ResponseEnum", "IsTransient", "FailureReasonCode" }, null, new[]{ typeof(global::Com.Fca.Uconnect.Global.RefreshTokenResponse.Types.ResponseEnum) }, null)
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  ///*
  /// This is for SecondVehicleAuthorizationRequest.
  ///&lt;div class=exmsg-main>
  ///  &lt;h4>FirstVehicleAuthorization Request Example Message:&lt;/h4>
  /// &lt;div class=ex-msg>
  ///	&lt;code>
  /// 		timestamp: 1488868820053
  /// 		messageId: 1
  /// 		messages
  /// 		{
  /// 		 [com.fca.uconnect.global.FirstAuthorizationResponse]
  /// 		 {
  /// 			“vin”: “AEEUDHS4857382038”,
  /// 			“tuProfile”: {
  /// 				“nadimei”: “323232323232”,
  /// 				“simMsisdn”: “12123123123”,
  /// 				“simIccid”: “12123123123”,
  /// 				“imsi”: “12123123123”,
  /// 				“tbmSerial”: “JK1212ASD233”,
  /// 				“tbmSoftwareVersion”: “17.03.03”
  /// 				},
  /// 			“tempAuthKey”: “12ABc345”,
  /// 			“correlationId”: “12abCd1”
  /// 			}
  /// 		 }
  /// 		}
  ///	&lt;/code>
  ///   &lt;/div>&lt;/div>
  /// </summary>
  public sealed partial class VehAuthRequest : pb::IMessage<VehAuthRequest> {
    private static readonly pb::MessageParser<VehAuthRequest> _parser = new pb::MessageParser<VehAuthRequest>(() => new VehAuthRequest());
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<VehAuthRequest> Parser { get { return _parser; } }

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehAuthRequest(VehAuthRequest other) : this() {
      vin_ = other.vin_;
      Device = other.device_ != null ? other.Device.Clone() : null;
      authToken_ = other.authToken_;
      nonce_ = other.nonce_;
      type_ = other.type_;
    }

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

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

    /// <summary>Field number for the "device" field.</summary>
    public const int DeviceFieldNumber = 2;
    private global::Com.Fca.Uconnect.Global.Device device_;
    /// <summary>
    //// requires the deviceType, IMIE, MSISDN,ICCID, IMSI, and TBM or HU Serial and Software Version
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.Device Device {
      get { return device_; }
      set {
        device_ = value;
      }
    }

    /// <summary>Field number for the "authToken" field.</summary>
    public const int AuthTokenFieldNumber = 3;
    private pb::ByteString authToken_ = pb::ByteString.Empty;
    /// <summary>
    //// Hash token of client challenge fields.  Temporary Session Key (concatenated string of Client and Server Challenge Keys)
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString AuthToken {
      get { return authToken_; }
      set {
        authToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "nonce" field.</summary>
    public const int NonceFieldNumber = 4;
    private pb::ByteString nonce_ = pb::ByteString.Empty;
    /// <summary>
    //// Nonce for protecting against replay
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Nonce {
      get { return nonce_; }
      set {
        nonce_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 5;
    private global::Com.Fca.Uconnect.Global.VehAuthRequest.Types.RequestTypeEnum type_ = 0;
    /// <summary>
    //// Indicate the initial or second auth request.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehAuthRequest.Types.RequestTypeEnum Type {
      get { return type_; }
      set {
        type_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VehAuthRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Vin != other.Vin) return false;
      if (!object.Equals(Device, other.Device)) return false;
      if (AuthToken != other.AuthToken) return false;
      if (Nonce != other.Nonce) return false;
      if (Type != other.Type) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Vin.Length != 0) hash ^= Vin.GetHashCode();
      if (device_ != null) hash ^= Device.GetHashCode();
      if (AuthToken.Length != 0) hash ^= AuthToken.GetHashCode();
      if (Nonce.Length != 0) hash ^= Nonce.GetHashCode();
      if (Type != 0) hash ^= Type.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 (Vin.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Vin);
      }
      if (device_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(Device);
      }
      if (AuthToken.Length != 0) {
        output.WriteRawTag(26);
        output.WriteBytes(AuthToken);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(34);
        output.WriteBytes(Nonce);
      }
      if (Type != 0) {
        output.WriteRawTag(40);
        output.WriteEnum((int) Type);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Vin.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Vin);
      }
      if (device_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Device);
      }
      if (AuthToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(AuthToken);
      }
      if (Nonce.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(Nonce);
      }
      if (Type != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehAuthRequest other) {
      if (other == null) {
        return;
      }
      if (other.Vin.Length != 0) {
        Vin = other.Vin;
      }
      if (other.device_ != null) {
        if (device_ == null) {
          device_ = new global::Com.Fca.Uconnect.Global.Device();
        }
        Device.MergeFrom(other.Device);
      }
      if (other.AuthToken.Length != 0) {
        AuthToken = other.AuthToken;
      }
      if (other.Nonce.Length != 0) {
        Nonce = other.Nonce;
      }
      if (other.Type != 0) {
        Type = other.Type;
      }
    }

    [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: {
            Vin = input.ReadString();
            break;
          }
          case 18: {
            if (device_ == null) {
              device_ = new global::Com.Fca.Uconnect.Global.Device();
            }
            input.ReadMessage(device_);
            break;
          }
          case 26: {
            AuthToken = input.ReadBytes();
            break;
          }
          case 34: {
            Nonce = input.ReadBytes();
            break;
          }
          case 40: {
            type_ = (global::Com.Fca.Uconnect.Global.VehAuthRequest.Types.RequestTypeEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehAuthRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum RequestTypeEnum {
        /// <summary>
        ////
        /// </summary>
        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
        /// <summary>
        //// Initial provisioning request for a temporary session.
        /// </summary>
        [pbr::OriginalName("INITIAL")] Initial = 1,
        /// <summary>
        //// Secondary request to receive valid session token.
        /// </summary>
        [pbr::OriginalName("SECOND")] Second = 2,
      }

    }
    #endregion

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VehAuthResponse(VehAuthResponse other) : this() {
      sessionToken_ = other.sessionToken_;
      nonce_ = other.nonce_;
      type_ = other.type_;
    }

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

    /// <summary>Field number for the "sessionToken" field.</summary>
    public const int SessionTokenFieldNumber = 1;
    private pb::ByteString sessionToken_ = pb::ByteString.Empty;
    /// <summary>
    //// Permanent Session Key provided by Server, should be used in MQTT Header for future operations
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString SessionToken {
      get { return sessionToken_; }
      set {
        sessionToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "nonce" field.</summary>
    public const int NonceFieldNumber = 2;
    private pb::ByteString nonce_ = pb::ByteString.Empty;
    /// <summary>
    //// CR or Correlation ID
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString Nonce {
      get { return nonce_; }
      set {
        nonce_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 3;
    private global::Com.Fca.Uconnect.Global.VehAuthResponse.Types.TokenTypeEnum type_ = 0;
    /// <summary>
    //// Indicate the type of session token returned to the client.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.VehAuthResponse.Types.TokenTypeEnum Type {
      get { return type_; }
      set {
        type_ = value;
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionToken.Length != 0) hash ^= SessionToken.GetHashCode();
      if (Nonce.Length != 0) hash ^= Nonce.GetHashCode();
      if (Type != 0) hash ^= Type.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 (SessionToken.Length != 0) {
        output.WriteRawTag(10);
        output.WriteBytes(SessionToken);
      }
      if (Nonce.Length != 0) {
        output.WriteRawTag(18);
        output.WriteBytes(Nonce);
      }
      if (Type != 0) {
        output.WriteRawTag(24);
        output.WriteEnum((int) Type);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VehAuthResponse other) {
      if (other == null) {
        return;
      }
      if (other.SessionToken.Length != 0) {
        SessionToken = other.SessionToken;
      }
      if (other.Nonce.Length != 0) {
        Nonce = other.Nonce;
      }
      if (other.Type != 0) {
        Type = other.Type;
      }
    }

    [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: {
            SessionToken = input.ReadBytes();
            break;
          }
          case 18: {
            Nonce = input.ReadBytes();
            break;
          }
          case 24: {
            type_ = (global::Com.Fca.Uconnect.Global.VehAuthResponse.Types.TokenTypeEnum) input.ReadEnum();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the VehAuthResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public enum TokenTypeEnum {
        /// <summary>
        ////
        /// </summary>
        [pbr::OriginalName("UNKNOWN")] Unknown = 0,
        /// <summary>
        //// Initial temporary session token.
        /// </summary>
        [pbr::OriginalName("TEMP")] Temp = 1,
        /// <summary>
        //// Valid session token.
        /// </summary>
        [pbr::OriginalName("VALID")] Valid = 2,
      }

    }
    #endregion

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CreateTokenRequest(CreateTokenRequest other) : this() {
      grantType_ = other.grantType_;
      deviceId_ = other.deviceId_;
      permKey_ = other.permKey_;
    }

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

    /// <summary>Field number for the "grant_type" field.</summary>
    public const int GrantTypeFieldNumber = 1;
    private string grantType_ = "";
    /// <summary>
    //// Type of challenge response, use "password" for basic auth
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GrantType {
      get { return grantType_; }
      set {
        grantType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "deviceId" field.</summary>
    public const int DeviceIdFieldNumber = 2;
    private string deviceId_ = "";
    /// <summary>
    //// IMEI of TU Profile for the vehicle
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DeviceId {
      get { return deviceId_; }
      set {
        deviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "permKey" field.</summary>
    public const int PermKeyFieldNumber = 3;
    private string permKey_ = "";
    /// <summary>
    //// In case of TU communication bootstrap, it will be Permanent Session Key returned by the server
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string PermKey {
      get { return permKey_; }
      set {
        permKey_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (GrantType.Length != 0) hash ^= GrantType.GetHashCode();
      if (DeviceId.Length != 0) hash ^= DeviceId.GetHashCode();
      if (PermKey.Length != 0) hash ^= PermKey.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 (GrantType.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(GrantType);
      }
      if (DeviceId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(DeviceId);
      }
      if (PermKey.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(PermKey);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (GrantType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GrantType);
      }
      if (DeviceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceId);
      }
      if (PermKey.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(PermKey);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(CreateTokenRequest other) {
      if (other == null) {
        return;
      }
      if (other.GrantType.Length != 0) {
        GrantType = other.GrantType;
      }
      if (other.DeviceId.Length != 0) {
        DeviceId = other.DeviceId;
      }
      if (other.PermKey.Length != 0) {
        PermKey = other.PermKey;
      }
    }

    [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: {
            GrantType = input.ReadString();
            break;
          }
          case 18: {
            DeviceId = input.ReadString();
            break;
          }
          case 26: {
            PermKey = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public CreateTokenResponse(CreateTokenResponse other) : this() {
      accessToken_ = other.accessToken_;
      authorizationToken_ = other.authorizationToken_;
      expiresIn_ = other.expiresIn_;
      refreshToken_ = other.refreshToken_;
      tokenType_ = other.tokenType_;
      accountDN_ = other.accountDN_;
    }

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

    /// <summary>Field number for the "accessToken" field.</summary>
    public const int AccessTokenFieldNumber = 1;
    private string accessToken_ = "";
    /// <summary>
    //// Access Token
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AccessToken {
      get { return accessToken_; }
      set {
        accessToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "authorizationToken" field.</summary>
    public const int AuthorizationTokenFieldNumber = 2;
    private string authorizationToken_ = "";
    /// <summary>
    ////Authorization Token / Null on TU's
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AuthorizationToken {
      get { return authorizationToken_; }
      set {
        authorizationToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "expiresIn" field.</summary>
    public const int ExpiresInFieldNumber = 3;
    private int expiresIn_;
    /// <summary>
    //// The lifetime of the access token in seconds.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ExpiresIn {
      get { return expiresIn_; }
      set {
        expiresIn_ = value;
      }
    }

    /// <summary>Field number for the "refreshToken" field.</summary>
    public const int RefreshTokenFieldNumber = 4;
    private string refreshToken_ = "";
    /// <summary>
    //// Refresh token to be used to retrieve new tokens when they are expired
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string RefreshToken {
      get { return refreshToken_; }
      set {
        refreshToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "token_type" field.</summary>
    public const int TokenTypeFieldNumber = 5;
    private string tokenType_ = "";
    /// <summary>
    //// use only bearer
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TokenType {
      get { return tokenType_; }
      set {
        tokenType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "accountDN" field.</summary>
    public const int AccountDNFieldNumber = 6;
    private string accountDN_ = "";
    /// <summary>
    //// Account DNm unique account name
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AccountDN {
      get { return accountDN_; }
      set {
        accountDN_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(CreateTokenResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AccessToken != other.AccessToken) return false;
      if (AuthorizationToken != other.AuthorizationToken) return false;
      if (ExpiresIn != other.ExpiresIn) return false;
      if (RefreshToken != other.RefreshToken) return false;
      if (TokenType != other.TokenType) return false;
      if (AccountDN != other.AccountDN) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (AccessToken.Length != 0) hash ^= AccessToken.GetHashCode();
      if (AuthorizationToken.Length != 0) hash ^= AuthorizationToken.GetHashCode();
      if (ExpiresIn != 0) hash ^= ExpiresIn.GetHashCode();
      if (RefreshToken.Length != 0) hash ^= RefreshToken.GetHashCode();
      if (TokenType.Length != 0) hash ^= TokenType.GetHashCode();
      if (AccountDN.Length != 0) hash ^= AccountDN.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 (AccessToken.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AccessToken);
      }
      if (AuthorizationToken.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AuthorizationToken);
      }
      if (ExpiresIn != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ExpiresIn);
      }
      if (RefreshToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RefreshToken);
      }
      if (TokenType.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(TokenType);
      }
      if (AccountDN.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(AccountDN);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (AccessToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AccessToken);
      }
      if (AuthorizationToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AuthorizationToken);
      }
      if (ExpiresIn != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpiresIn);
      }
      if (RefreshToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RefreshToken);
      }
      if (TokenType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TokenType);
      }
      if (AccountDN.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AccountDN);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(CreateTokenResponse other) {
      if (other == null) {
        return;
      }
      if (other.AccessToken.Length != 0) {
        AccessToken = other.AccessToken;
      }
      if (other.AuthorizationToken.Length != 0) {
        AuthorizationToken = other.AuthorizationToken;
      }
      if (other.ExpiresIn != 0) {
        ExpiresIn = other.ExpiresIn;
      }
      if (other.RefreshToken.Length != 0) {
        RefreshToken = other.RefreshToken;
      }
      if (other.TokenType.Length != 0) {
        TokenType = other.TokenType;
      }
      if (other.AccountDN.Length != 0) {
        AccountDN = other.AccountDN;
      }
    }

    [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: {
            AccessToken = input.ReadString();
            break;
          }
          case 18: {
            AuthorizationToken = input.ReadString();
            break;
          }
          case 24: {
            ExpiresIn = input.ReadInt32();
            break;
          }
          case 34: {
            RefreshToken = input.ReadString();
            break;
          }
          case 42: {
            TokenType = input.ReadString();
            break;
          }
          case 50: {
            AccountDN = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RefreshTokenRequest(RefreshTokenRequest other) : this() {
      grantType_ = other.grantType_;
      deviceId_ = other.deviceId_;
      refreshToken_ = other.refreshToken_;
    }

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

    /// <summary>Field number for the "grant_type" field.</summary>
    public const int GrantTypeFieldNumber = 1;
    private string grantType_ = "";
    /// <summary>
    //// Type of challenge response, use "refresh token" for basic auth
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string GrantType {
      get { return grantType_; }
      set {
        grantType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "deviceId" field.</summary>
    public const int DeviceIdFieldNumber = 2;
    private string deviceId_ = "";
    /// <summary>
    //// Correlation ID, unique to the TU
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DeviceId {
      get { return deviceId_; }
      set {
        deviceId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "refreshToken" field.</summary>
    public const int RefreshTokenFieldNumber = 3;
    private string refreshToken_ = "";
    /// <summary>
    //// Value of refresh token that was issued previously.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string RefreshToken {
      get { return refreshToken_; }
      set {
        refreshToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (GrantType.Length != 0) hash ^= GrantType.GetHashCode();
      if (DeviceId.Length != 0) hash ^= DeviceId.GetHashCode();
      if (RefreshToken.Length != 0) hash ^= RefreshToken.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 (GrantType.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(GrantType);
      }
      if (DeviceId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(DeviceId);
      }
      if (RefreshToken.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(RefreshToken);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (GrantType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(GrantType);
      }
      if (DeviceId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DeviceId);
      }
      if (RefreshToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RefreshToken);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RefreshTokenRequest other) {
      if (other == null) {
        return;
      }
      if (other.GrantType.Length != 0) {
        GrantType = other.GrantType;
      }
      if (other.DeviceId.Length != 0) {
        DeviceId = other.DeviceId;
      }
      if (other.RefreshToken.Length != 0) {
        RefreshToken = other.RefreshToken;
      }
    }

    [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: {
            GrantType = input.ReadString();
            break;
          }
          case 18: {
            DeviceId = input.ReadString();
            break;
          }
          case 26: {
            RefreshToken = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

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

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RefreshTokenResponse(RefreshTokenResponse other) : this() {
      accessToken_ = other.accessToken_;
      authorizationToken_ = other.authorizationToken_;
      expiresIn_ = other.expiresIn_;
      refreshToken_ = other.refreshToken_;
      tokenType_ = other.tokenType_;
      accountDN_ = other.accountDN_;
      responseEnum_ = other.responseEnum_;
      isTransient_ = other.isTransient_;
      failureReasonCode_ = other.failureReasonCode_;
    }

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

    /// <summary>Field number for the "accessToken" field.</summary>
    public const int AccessTokenFieldNumber = 1;
    private string accessToken_ = "";
    /// <summary>
    //// Access Token
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AccessToken {
      get { return accessToken_; }
      set {
        accessToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "authorizationToken" field.</summary>
    public const int AuthorizationTokenFieldNumber = 2;
    private string authorizationToken_ = "";
    /// <summary>
    ////Authorization Token
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AuthorizationToken {
      get { return authorizationToken_; }
      set {
        authorizationToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "expiresIn" field.</summary>
    public const int ExpiresInFieldNumber = 3;
    private int expiresIn_;
    /// <summary>
    //// time until the token(s) expire
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ExpiresIn {
      get { return expiresIn_; }
      set {
        expiresIn_ = value;
      }
    }

    /// <summary>Field number for the "refreshToken" field.</summary>
    public const int RefreshTokenFieldNumber = 4;
    private string refreshToken_ = "";
    /// <summary>
    //// refresh Authorization Token
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string RefreshToken {
      get { return refreshToken_; }
      set {
        refreshToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "token_type" field.</summary>
    public const int TokenTypeFieldNumber = 5;
    private string tokenType_ = "";
    /// <summary>
    //// use only bearer
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TokenType {
      get { return tokenType_; }
      set {
        tokenType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "accountDN" field.</summary>
    public const int AccountDNFieldNumber = 6;
    private string accountDN_ = "";
    /// <summary>
    //// Account DN
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string AccountDN {
      get { return accountDN_; }
      set {
        accountDN_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "responseEnum" field.</summary>
    public const int ResponseEnumFieldNumber = 7;
    private global::Com.Fca.Uconnect.Global.RefreshTokenResponse.Types.ResponseEnum responseEnum_ = 0;
    /// <summary>
    //// Success or Failure Response
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Com.Fca.Uconnect.Global.RefreshTokenResponse.Types.ResponseEnum ResponseEnum {
      get { return responseEnum_; }
      set {
        responseEnum_ = value;
      }
    }

    /// <summary>Field number for the "isTransient" field.</summary>
    public const int IsTransientFieldNumber = 8;
    private bool isTransient_;
    /// <summary>
    //// Indicates a transient error and a retry can be attempted.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool IsTransient {
      get { return isTransient_; }
      set {
        isTransient_ = value;
      }
    }

    /// <summary>Field number for the "failureReasonCode" field.</summary>
    public const int FailureReasonCodeFieldNumber = 9;
    private int failureReasonCode_;
    /// <summary>
    //// Specific error code. Error codes should include Invalid_Grant and Common Error Codes
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int FailureReasonCode {
      get { return failureReasonCode_; }
      set {
        failureReasonCode_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(RefreshTokenResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (AccessToken != other.AccessToken) return false;
      if (AuthorizationToken != other.AuthorizationToken) return false;
      if (ExpiresIn != other.ExpiresIn) return false;
      if (RefreshToken != other.RefreshToken) return false;
      if (TokenType != other.TokenType) return false;
      if (AccountDN != other.AccountDN) return false;
      if (ResponseEnum != other.ResponseEnum) return false;
      if (IsTransient != other.IsTransient) return false;
      if (FailureReasonCode != other.FailureReasonCode) return false;
      return true;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (AccessToken.Length != 0) hash ^= AccessToken.GetHashCode();
      if (AuthorizationToken.Length != 0) hash ^= AuthorizationToken.GetHashCode();
      if (ExpiresIn != 0) hash ^= ExpiresIn.GetHashCode();
      if (RefreshToken.Length != 0) hash ^= RefreshToken.GetHashCode();
      if (TokenType.Length != 0) hash ^= TokenType.GetHashCode();
      if (AccountDN.Length != 0) hash ^= AccountDN.GetHashCode();
      if (ResponseEnum != 0) hash ^= ResponseEnum.GetHashCode();
      if (IsTransient != false) hash ^= IsTransient.GetHashCode();
      if (FailureReasonCode != 0) hash ^= FailureReasonCode.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 (AccessToken.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(AccessToken);
      }
      if (AuthorizationToken.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(AuthorizationToken);
      }
      if (ExpiresIn != 0) {
        output.WriteRawTag(24);
        output.WriteInt32(ExpiresIn);
      }
      if (RefreshToken.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(RefreshToken);
      }
      if (TokenType.Length != 0) {
        output.WriteRawTag(42);
        output.WriteString(TokenType);
      }
      if (AccountDN.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(AccountDN);
      }
      if (ResponseEnum != 0) {
        output.WriteRawTag(56);
        output.WriteEnum((int) ResponseEnum);
      }
      if (IsTransient != false) {
        output.WriteRawTag(64);
        output.WriteBool(IsTransient);
      }
      if (FailureReasonCode != 0) {
        output.WriteRawTag(72);
        output.WriteInt32(FailureReasonCode);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (AccessToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AccessToken);
      }
      if (AuthorizationToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AuthorizationToken);
      }
      if (ExpiresIn != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ExpiresIn);
      }
      if (RefreshToken.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(RefreshToken);
      }
      if (TokenType.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(TokenType);
      }
      if (AccountDN.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(AccountDN);
      }
      if (ResponseEnum != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) ResponseEnum);
      }
      if (IsTransient != false) {
        size += 1 + 1;
      }
      if (FailureReasonCode != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(FailureReasonCode);
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(RefreshTokenResponse other) {
      if (other == null) {
        return;
      }
      if (other.AccessToken.Length != 0) {
        AccessToken = other.AccessToken;
      }
      if (other.AuthorizationToken.Length != 0) {
        AuthorizationToken = other.AuthorizationToken;
      }
      if (other.ExpiresIn != 0) {
        ExpiresIn = other.ExpiresIn;
      }
      if (other.RefreshToken.Length != 0) {
        RefreshToken = other.RefreshToken;
      }
      if (other.TokenType.Length != 0) {
        TokenType = other.TokenType;
      }
      if (other.AccountDN.Length != 0) {
        AccountDN = other.AccountDN;
      }
      if (other.ResponseEnum != 0) {
        ResponseEnum = other.ResponseEnum;
      }
      if (other.IsTransient != false) {
        IsTransient = other.IsTransient;
      }
      if (other.FailureReasonCode != 0) {
        FailureReasonCode = other.FailureReasonCode;
      }
    }

    [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: {
            AccessToken = input.ReadString();
            break;
          }
          case 18: {
            AuthorizationToken = input.ReadString();
            break;
          }
          case 24: {
            ExpiresIn = input.ReadInt32();
            break;
          }
          case 34: {
            RefreshToken = input.ReadString();
            break;
          }
          case 42: {
            TokenType = input.ReadString();
            break;
          }
          case 50: {
            AccountDN = input.ReadString();
            break;
          }
          case 56: {
            responseEnum_ = (global::Com.Fca.Uconnect.Global.RefreshTokenResponse.Types.ResponseEnum) input.ReadEnum();
            break;
          }
          case 64: {
            IsTransient = input.ReadBool();
            break;
          }
          case 72: {
            FailureReasonCode = input.ReadInt32();
            break;
          }
        }
      }
    }

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

    }
    #endregion

  }

  #endregion

}

#endregion Designer generated code
