// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: service.proto
// </auto-generated>
#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 Service {

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

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

    static ServiceReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cg1zZXJ2aWNlLnByb3RvEgdzZXJ2aWNlGhhhcmtpdF9ibGVuZF9zaGFwZXMu",
            "cHJvdG8ipwEKC0F1ZGlvQ29uZmlnEhkKEXNhbXBsZV9yYXRlX2hlcnR6GAEg",
            "ASgFEhUKDWRpc2FibGVfYXVkaW8YAiABKAgSGgoSZW5hYmxlX2ZhY2lhbF9k",
            "YXRhGAMgASgIEiYKCmZhY2VfbW9kZWwYBCABKA4yEi5zZXJ2aWNlLkZhY2VN",
            "b2RlbBIiChplbmFibGVfZmFjaWFsX2Vtb3Rpb25fZGF0YRgFIAEoCCI+Cg1U",
            "cmlnZ2VyQ29uZmlnEhQKDHRyaWdnZXJfbmFtZRgBIAEoCRIXCg90cmlnZ2Vy",
            "X21lc3NhZ2UYAiABKAkiqQIKDEFjdGlvbkNvbmZpZxIPCgdhY3Rpb25zGAEg",
            "AygJEjMKCmNoYXJhY3RlcnMYAiADKAsyHy5zZXJ2aWNlLkFjdGlvbkNvbmZp",
            "Zy5DaGFyYWN0ZXISLQoHb2JqZWN0cxgDIAMoCzIcLnNlcnZpY2UuQWN0aW9u",
            "Q29uZmlnLk9iamVjdBIWCg5jbGFzc2lmaWNhdGlvbhgEIAEoCRIVCg1jb250",
            "ZXh0X2xldmVsGAUgASgFEiAKGGN1cnJlbnRfYXR0ZW50aW9uX29iamVjdBgG",
            "IAEoCRomCglDaGFyYWN0ZXISDAoEbmFtZRgBIAEoCRILCgNiaW8YAiABKAka",
            "KwoGT2JqZWN0EgwKBG5hbWUYASABKAkSEwoLZGVzY3JpcHRpb24YAiABKAki",
            "YQoKU1RUUmVxdWVzdBIsCgxhdWRpb19jb25maWcYASABKAsyFC5zZXJ2aWNl",
            "LkF1ZGlvQ29uZmlnSAASFQoLYXVkaW9fY2h1bmsYAiABKAxIAEIOCgxyZXF1",
            "ZXN0X3R5cGUiGwoLU1RUUmVzcG9uc2USDAoEdGV4dBgBIAEoCSIhChFEeW5h",
            "bWljSW5mb0NvbmZpZxIMCgR0ZXh0GAEgASgJIpkGChJHZXRSZXNwb25zZVJl",
            "cXVlc3QSTAoTZ2V0X3Jlc3BvbnNlX2NvbmZpZxgBIAEoCzItLnNlcnZpY2Uu",
            "R2V0UmVzcG9uc2VSZXF1ZXN0LkdldFJlc3BvbnNlQ29uZmlnSAASSAoRZ2V0",
            "X3Jlc3BvbnNlX2RhdGEYAiABKAsyKy5zZXJ2aWNlLkdldFJlc3BvbnNlUmVx",
            "dWVzdC5HZXRSZXNwb25zZURhdGFIABreAwoRR2V0UmVzcG9uc2VDb25maWcS",
            "FAoMY2hhcmFjdGVyX2lkGAIgASgJEg8KB2FwaV9rZXkYAyABKAkSEgoKc2Vz",
            "c2lvbl9pZBgEIAEoCRIqCgxhdWRpb19jb25maWcYBSABKAsyFC5zZXJ2aWNl",
            "LkF1ZGlvQ29uZmlnEiwKDWFjdGlvbl9jb25maWcYBiABKAsyFS5zZXJ2aWNl",
            "LkFjdGlvbkNvbmZpZxIPCgdzcGVha2VyGAcgASgJEhUKDWxhbmd1YWdlX2Nv",
            "ZGUYCCABKAkSEgoKc3BlYWtlcl9pZBgJIAEoCRIWCg5hcGlfYXV0aF90b2tl",
            "bhgKIAEoCRJpChduYXJyYXRpdmVfdGVtcGxhdGVfa2V5cxgLIAMoCzJILnNl",
            "cnZpY2UuR2V0UmVzcG9uc2VSZXF1ZXN0LkdldFJlc3BvbnNlQ29uZmlnLk5h",
            "cnJhdGl2ZVRlbXBsYXRlS2V5c0VudHJ5EjcKE2R5bmFtaWNfaW5mb19jb25m",
            "aWcYDCABKAsyGi5zZXJ2aWNlLkR5bmFtaWNJbmZvQ29uZmlnGjwKGk5hcnJh",
            "dGl2ZVRlbXBsYXRlS2V5c0VudHJ5EgsKA2tleRgBIAEoCRINCgV2YWx1ZRgC",
            "IAEoCToCOAEaegoPR2V0UmVzcG9uc2VEYXRhEhQKCmF1ZGlvX2RhdGEYASAB",
            "KAxIABITCgl0ZXh0X2RhdGEYAiABKAlIABIuCgx0cmlnZ2VyX2RhdGEYAyAB",
            "KAsyFi5zZXJ2aWNlLlRyaWdnZXJDb25maWdIAEIMCgppbnB1dF90eXBlQg4K",
            "DHJlcXVlc3RfdHlwZSKEAQoYR2V0UmVzcG9uc2VSZXF1ZXN0U2luZ2xlEjQK",
            "D3Jlc3BvbnNlX2NvbmZpZxgBIAEoCzIbLnNlcnZpY2UuR2V0UmVzcG9uc2VS",
            "ZXF1ZXN0EjIKDXJlc3BvbnNlX2RhdGEYAiABKAsyGy5zZXJ2aWNlLkdldFJl",
            "c3BvbnNlUmVxdWVzdCLfBwoTR2V0UmVzcG9uc2VSZXNwb25zZRISCgpzZXNz",
            "aW9uX2lkGAEgASgJEkYKD2FjdGlvbl9yZXNwb25zZRgCIAEoCzIrLnNlcnZp",
            "Y2UuR2V0UmVzcG9uc2VSZXNwb25zZS5BY3Rpb25SZXNwb25zZUgAEkQKDmF1",
            "ZGlvX3Jlc3BvbnNlGAMgASgLMiouc2VydmljZS5HZXRSZXNwb25zZVJlc3Bv",
            "bnNlLkF1ZGlvUmVzcG9uc2VIABITCglkZWJ1Z19sb2cYBCABKAlIABJBCgp1",
            "c2VyX3F1ZXJ5GAUgASgLMisuc2VydmljZS5HZXRSZXNwb25zZVJlc3BvbnNl",
            "LlVzZXJUcmFuc2NyaXB0SAASSAoLYnRfcmVzcG9uc2UYBiABKAsyMS5zZXJ2",
            "aWNlLkdldFJlc3BvbnNlUmVzcG9uc2UuQmVoYXZpb3JUcmVlUmVzcG9uc2VI",
            "ABIaChBlbW90aW9uX3Jlc3BvbnNlGAcgASgJSAASGAoOaW50ZXJhY3Rpb25f",
            "aWQYCCABKAlIABrtAgoNQXVkaW9SZXNwb25zZRISCgphdWRpb19kYXRhGAEg",
            "ASgMEioKDGF1ZGlvX2NvbmZpZxgCIAEoCzIULnNlcnZpY2UuQXVkaW9Db25m",
            "aWcSEQoJdGV4dF9kYXRhGAMgASgJEhcKD2VuZF9vZl9yZXNwb25zZRgEIAEo",
            "CBIRCglmYWNlX2RhdGEYBSABKAkSLAoMdmlzZW1lc19kYXRhGAYgASgLMhQu",
            "c2VydmljZS5WaXNlbWVzRGF0YUgAEjQKEGJsZW5kc2hhcGVzX2RhdGEYByAB",
            "KAsyGC5zZXJ2aWNlLkJsZW5kU2hhcGVzRGF0YUgAEjMKDGZhY2VfZW1vdGlv",
            "bhgIIAEoCzIdLnNlcnZpY2UuQVJLaXRCbGVuZFNoYXBlc0RhdGESMgoQZW1v",
            "dGlvbl9yZXNwb25zZRgJIAEoCzIYLnNlcnZpY2UuRW1vdGlvblJlc3BvbnNl",
            "QhAKDmZhY2VfZGF0YV90eXBlGiAKDkFjdGlvblJlc3BvbnNlEg4KBmFjdGlv",
            "bhgBIAEoCRpbChRCZWhhdmlvclRyZWVSZXNwb25zZRIPCgdidF9jb2RlGAEg",
            "ASgJEhQKDGJ0X2NvbnN0YW50cxgCIAEoCRIcChRuYXJyYXRpdmVfc2VjdGlv",
            "bl9pZBgDIAEoCRpOCg5Vc2VyVHJhbnNjcmlwdBIRCgl0ZXh0X2RhdGEYASAB",
            "KAkSEAoIaXNfZmluYWwYAiABKAgSFwoPZW5kX29mX3Jlc3BvbnNlGAMgASgI",
            "Qg8KDXJlc3BvbnNlX3R5cGUiLwoLVmlzZW1lc0RhdGESIAoHdmlzZW1lcxgB",
            "IAEoCzIPLnNlcnZpY2UuVmlzZW1lIjEKD0Vtb3Rpb25SZXNwb25zZRIPCgdl",
            "bW90aW9uGAEgASgJEg0KBXNjYWxlGAIgASgJIrwBCgZWaXNlbWUSCwoDc2ls",
            "GAEgASgCEgoKAnBwGAIgASgCEgoKAmZmGAMgASgCEgoKAnRoGAQgASgCEgoK",
            "AmRkGAUgASgCEgoKAmtrGAYgASgCEgoKAmNoGAcgASgCEgoKAnNzGAggASgC",
            "EgoKAm5uGAkgASgCEgoKAnJyGAogASgCEgoKAmFhGAsgASgCEgkKAWUYDCAB",
            "KAISCgoCaWgYDSABKAISCgoCb2gYDiABKAISCgoCb3UYDyABKAIiKgoPQmxl",
            "bmRTaGFwZXNEYXRhEhcKD2JsZW5kc2hhcGVfZGF0YRgBIAEoCSIcCgxIZWxs",
            "b1JlcXVlc3QSDAoEbmFtZRgBIAEoCSIgCg1IZWxsb1Jlc3BvbnNlEg8KB21l",
            "c3NhZ2UYASABKAkijQIKD0ZlZWRiYWNrUmVxdWVzdBIWCg5pbnRlcmFjdGlv",
            "bl9pZBgBIAEoCRIUCgxjaGFyYWN0ZXJfaWQYAiABKAkSEgoKc2Vzc2lvbl9p",
            "ZBgDIAEoCRI4Cg10ZXh0X2ZlZWRiYWNrGAUgASgLMiEuc2VydmljZS5GZWVk",
            "YmFja1JlcXVlc3QuRmVlZGJhY2sSEgoKdXNlcl9xdWVyeRgGIAEoCRIQCghy",
            "ZXNwb25zZRgHIAEoCRpYCghGZWVkYmFjaxIRCgl0aHVtYnNfdXAYASABKAgS",
            "FQoNZmVlZGJhY2tfdGV4dBgCIAEoCRIMCgR0YWdzGAMgAygJEhQKDGlzX3Rl",
            "c3RfY2FzZRgEIAEoCCItChBGZWVkYmFja1Jlc3BvbnNlEhkKEWZlZWRiYWNr",
            "X3Jlc3BvbnNlGAEgASgJKooBCglGYWNlTW9kZWwSGgoWRkFDRV9NT0RFTF9V",
            "TlNQRUNJRklFRBAAEh4KGkZBQ0VfTU9ERUxfQV8yRl9NT0RFTF9OQU1FEAES",
            "IgoeRkFDRV9NT0RFTF9QSE9ORU1FU19NT0RFTF9OQU1FEAISHQoZRkFDRV9N",
            "T0RFTF9PVlJfTU9ERUxfTkFNRRADMsEDCg1Db252YWlTZXJ2aWNlEjgKBUhl",
            "bGxvEhUuc2VydmljZS5IZWxsb1JlcXVlc3QaFi5zZXJ2aWNlLkhlbGxvUmVz",
            "cG9uc2UiABJCCgtIZWxsb1N0cmVhbRIVLnNlcnZpY2UuSGVsbG9SZXF1ZXN0",
            "GhYuc2VydmljZS5IZWxsb1Jlc3BvbnNlIgAoATABEj8KDFNwZWVjaFRvVGV4",
            "dBITLnNlcnZpY2UuU1RUUmVxdWVzdBoULnNlcnZpY2UuU1RUUmVzcG9uc2Ui",
            "ACgBMAESTgoLR2V0UmVzcG9uc2USGy5zZXJ2aWNlLkdldFJlc3BvbnNlUmVx",
            "dWVzdBocLnNlcnZpY2UuR2V0UmVzcG9uc2VSZXNwb25zZSIAKAEwARJYChFH",
            "ZXRSZXNwb25zZVNpbmdsZRIhLnNlcnZpY2UuR2V0UmVzcG9uc2VSZXF1ZXN0",
            "U2luZ2xlGhwuc2VydmljZS5HZXRSZXNwb25zZVJlc3BvbnNlIgAwARJHCg5T",
            "dWJtaXRGZWVkYmFjaxIYLnNlcnZpY2UuRmVlZGJhY2tSZXF1ZXN0Ghkuc2Vy",
            "dmljZS5GZWVkYmFja1Jlc3BvbnNlIgBCD1oNcHJvdG8vc2VydmljZWIGcHJv",
            "dG8z"));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Service.ArkitBlendShapesReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(new[] {typeof(global::Service.FaceModel), }, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.AudioConfig), global::Service.AudioConfig.Parser, new[]{ "SampleRateHertz", "DisableAudio", "EnableFacialData", "FaceModel", "EnableFacialEmotionData" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.TriggerConfig), global::Service.TriggerConfig.Parser, new[]{ "TriggerName", "TriggerMessage" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.ActionConfig), global::Service.ActionConfig.Parser, new[]{ "Actions", "Characters", "Objects", "Classification", "ContextLevel", "CurrentAttentionObject" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Service.ActionConfig.Types.Character), global::Service.ActionConfig.Types.Character.Parser, new[]{ "Name", "Bio" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.ActionConfig.Types.Object), global::Service.ActionConfig.Types.Object.Parser, new[]{ "Name", "Description" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.STTRequest), global::Service.STTRequest.Parser, new[]{ "AudioConfig", "AudioChunk" }, new[]{ "RequestType" }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.STTResponse), global::Service.STTResponse.Parser, new[]{ "Text" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.DynamicInfoConfig), global::Service.DynamicInfoConfig.Parser, new[]{ "Text" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseRequest), global::Service.GetResponseRequest.Parser, new[]{ "GetResponseConfig", "GetResponseData" }, new[]{ "RequestType" }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseRequest.Types.GetResponseConfig), global::Service.GetResponseRequest.Types.GetResponseConfig.Parser, new[]{ "CharacterId", "ApiKey", "SessionId", "AudioConfig", "ActionConfig", "Speaker", "LanguageCode", "SpeakerId", "ApiAuthToken", "NarrativeTemplateKeys", "DynamicInfoConfig" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, }),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseRequest.Types.GetResponseData), global::Service.GetResponseRequest.Types.GetResponseData.Parser, new[]{ "AudioData", "TextData", "TriggerData" }, new[]{ "InputType" }, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseRequestSingle), global::Service.GetResponseRequestSingle.Parser, new[]{ "ResponseConfig", "ResponseData" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseResponse), global::Service.GetResponseResponse.Parser, new[]{ "SessionId", "ActionResponse", "AudioResponse", "DebugLog", "UserQuery", "BtResponse", "EmotionResponse", "InteractionId" }, new[]{ "ResponseType" }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseResponse.Types.AudioResponse), global::Service.GetResponseResponse.Types.AudioResponse.Parser, new[]{ "AudioData", "AudioConfig", "TextData", "EndOfResponse", "FaceData", "VisemesData", "BlendshapesData", "FaceEmotion", "EmotionResponse" }, new[]{ "FaceDataType" }, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseResponse.Types.ActionResponse), global::Service.GetResponseResponse.Types.ActionResponse.Parser, new[]{ "Action" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseResponse.Types.BehaviorTreeResponse), global::Service.GetResponseResponse.Types.BehaviorTreeResponse.Parser, new[]{ "BtCode", "BtConstants", "NarrativeSectionId" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.GetResponseResponse.Types.UserTranscript), global::Service.GetResponseResponse.Types.UserTranscript.Parser, new[]{ "TextData", "IsFinal", "EndOfResponse" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.VisemesData), global::Service.VisemesData.Parser, new[]{ "Visemes" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.EmotionResponse), global::Service.EmotionResponse.Parser, new[]{ "Emotion", "Scale" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.Viseme), global::Service.Viseme.Parser, new[]{ "Sil", "Pp", "Ff", "Th", "Dd", "Kk", "Ch", "Ss", "Nn", "Rr", "Aa", "E", "Ih", "Oh", "Ou" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.BlendShapesData), global::Service.BlendShapesData.Parser, new[]{ "BlendshapeData" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.HelloRequest), global::Service.HelloRequest.Parser, new[]{ "Name" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.HelloResponse), global::Service.HelloResponse.Parser, new[]{ "Message" }, null, null, null),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.FeedbackRequest), global::Service.FeedbackRequest.Parser, new[]{ "InteractionId", "CharacterId", "SessionId", "TextFeedback", "UserQuery", "Response" }, null, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Service.FeedbackRequest.Types.Feedback), global::Service.FeedbackRequest.Types.Feedback.Parser, new[]{ "ThumbsUp", "FeedbackText", "Tags", "IsTestCase" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Service.FeedbackResponse), global::Service.FeedbackResponse.Parser, new[]{ "FeedbackResponse_" }, null, null, null)
          }));
    }
    #endregion

  }
  #region Enums
  public enum FaceModel {
    [pbr::OriginalName("FACE_MODEL_UNSPECIFIED")] Unspecified = 0,
    [pbr::OriginalName("FACE_MODEL_A_2F_MODEL_NAME")] A2FModelName = 1,
    [pbr::OriginalName("FACE_MODEL_PHONEMES_MODEL_NAME")] PhonemesModelName = 2,
    [pbr::OriginalName("FACE_MODEL_OVR_MODEL_NAME")] OvrModelName = 3,
  }

  #endregion

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[0]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public AudioConfig(AudioConfig other) : this() {
      sampleRateHertz_ = other.sampleRateHertz_;
      disableAudio_ = other.disableAudio_;
      enableFacialData_ = other.enableFacialData_;
      faceModel_ = other.faceModel_;
      enableFacialEmotionData_ = other.enableFacialEmotionData_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "sample_rate_hertz" field.</summary>
    public const int SampleRateHertzFieldNumber = 1;
    private int sampleRateHertz_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int SampleRateHertz {
      get { return sampleRateHertz_; }
      set {
        sampleRateHertz_ = value;
      }
    }

    /// <summary>Field number for the "disable_audio" field.</summary>
    public const int DisableAudioFieldNumber = 2;
    private bool disableAudio_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool DisableAudio {
      get { return disableAudio_; }
      set {
        disableAudio_ = value;
      }
    }

    /// <summary>Field number for the "enable_facial_data" field.</summary>
    public const int EnableFacialDataFieldNumber = 3;
    private bool enableFacialData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool EnableFacialData {
      get { return enableFacialData_; }
      set {
        enableFacialData_ = value;
      }
    }

    /// <summary>Field number for the "face_model" field.</summary>
    public const int FaceModelFieldNumber = 4;
    private global::Service.FaceModel faceModel_ = 0;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.FaceModel FaceModel {
      get { return faceModel_; }
      set {
        faceModel_ = value;
      }
    }

    /// <summary>Field number for the "enable_facial_emotion_data" field.</summary>
    public const int EnableFacialEmotionDataFieldNumber = 5;
    private bool enableFacialEmotionData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool EnableFacialEmotionData {
      get { return enableFacialEmotionData_; }
      set {
        enableFacialEmotionData_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(AudioConfig other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SampleRateHertz != other.SampleRateHertz) return false;
      if (DisableAudio != other.DisableAudio) return false;
      if (EnableFacialData != other.EnableFacialData) return false;
      if (FaceModel != other.FaceModel) return false;
      if (EnableFacialEmotionData != other.EnableFacialEmotionData) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (SampleRateHertz != 0) hash ^= SampleRateHertz.GetHashCode();
      if (DisableAudio != false) hash ^= DisableAudio.GetHashCode();
      if (EnableFacialData != false) hash ^= EnableFacialData.GetHashCode();
      if (FaceModel != 0) hash ^= FaceModel.GetHashCode();
      if (EnableFacialEmotionData != false) hash ^= EnableFacialEmotionData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (SampleRateHertz != 0) {
        output.WriteRawTag(8);
        output.WriteInt32(SampleRateHertz);
      }
      if (DisableAudio != false) {
        output.WriteRawTag(16);
        output.WriteBool(DisableAudio);
      }
      if (EnableFacialData != false) {
        output.WriteRawTag(24);
        output.WriteBool(EnableFacialData);
      }
      if (FaceModel != 0) {
        output.WriteRawTag(32);
        output.WriteEnum((int) FaceModel);
      }
      if (EnableFacialEmotionData != false) {
        output.WriteRawTag(40);
        output.WriteBool(EnableFacialEmotionData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (SampleRateHertz != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(SampleRateHertz);
      }
      if (DisableAudio != false) {
        size += 1 + 1;
      }
      if (EnableFacialData != false) {
        size += 1 + 1;
      }
      if (FaceModel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) FaceModel);
      }
      if (EnableFacialEmotionData != false) {
        size += 1 + 1;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(AudioConfig other) {
      if (other == null) {
        return;
      }
      if (other.SampleRateHertz != 0) {
        SampleRateHertz = other.SampleRateHertz;
      }
      if (other.DisableAudio != false) {
        DisableAudio = other.DisableAudio;
      }
      if (other.EnableFacialData != false) {
        EnableFacialData = other.EnableFacialData;
      }
      if (other.FaceModel != 0) {
        FaceModel = other.FaceModel;
      }
      if (other.EnableFacialEmotionData != false) {
        EnableFacialEmotionData = other.EnableFacialEmotionData;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 8: {
            SampleRateHertz = input.ReadInt32();
            break;
          }
          case 16: {
            DisableAudio = input.ReadBool();
            break;
          }
          case 24: {
            EnableFacialData = input.ReadBool();
            break;
          }
          case 32: {
            FaceModel = (global::Service.FaceModel) input.ReadEnum();
            break;
          }
          case 40: {
            EnableFacialEmotionData = input.ReadBool();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// The TriggerConfig message is a general container for various types of triggers.
  /// It includes the trigger type and message, as well as specific metadata based on the trigger type.
  /// 
  /// Fields:
  /// trigger_message: Specifies message related to the trigger: "5 Minutes have passed", "Player entered the palace".
  /// </summary>
  public sealed partial class TriggerConfig : pb::IMessage<TriggerConfig> {
    private static readonly pb::MessageParser<TriggerConfig> _parser = new pb::MessageParser<TriggerConfig>(() => new TriggerConfig());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<TriggerConfig> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[1]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public TriggerConfig(TriggerConfig other) : this() {
      triggerName_ = other.triggerName_;
      triggerMessage_ = other.triggerMessage_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "trigger_name" field.</summary>
    public const int TriggerNameFieldNumber = 1;
    private string triggerName_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string TriggerName {
      get { return triggerName_; }
      set {
        triggerName_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(TriggerConfig other) {
      if (other == null) {
        return;
      }
      if (other.TriggerName.Length != 0) {
        TriggerName = other.TriggerName;
      }
      if (other.TriggerMessage.Length != 0) {
        TriggerMessage = other.TriggerMessage;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            TriggerName = input.ReadString();
            break;
          }
          case 18: {
            TriggerMessage = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// NEXT ID: 7
  /// </summary>
  public sealed partial class ActionConfig : pb::IMessage<ActionConfig> {
    private static readonly pb::MessageParser<ActionConfig> _parser = new pb::MessageParser<ActionConfig>(() => new ActionConfig());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<ActionConfig> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[2]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ActionConfig(ActionConfig other) : this() {
      actions_ = other.actions_.Clone();
      characters_ = other.characters_.Clone();
      objects_ = other.objects_.Clone();
      classification_ = other.classification_;
      contextLevel_ = other.contextLevel_;
      currentAttentionObject_ = other.currentAttentionObject_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "actions" field.</summary>
    public const int ActionsFieldNumber = 1;
    private static readonly pb::FieldCodec<string> _repeated_actions_codec
        = pb::FieldCodec.ForString(10);
    private readonly pbc::RepeatedField<string> actions_ = new pbc::RepeatedField<string>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<string> Actions {
      get { return actions_; }
    }

    /// <summary>Field number for the "characters" field.</summary>
    public const int CharactersFieldNumber = 2;
    private static readonly pb::FieldCodec<global::Service.ActionConfig.Types.Character> _repeated_characters_codec
        = pb::FieldCodec.ForMessage(18, global::Service.ActionConfig.Types.Character.Parser);
    private readonly pbc::RepeatedField<global::Service.ActionConfig.Types.Character> characters_ = new pbc::RepeatedField<global::Service.ActionConfig.Types.Character>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Service.ActionConfig.Types.Character> Characters {
      get { return characters_; }
    }

    /// <summary>Field number for the "objects" field.</summary>
    public const int ObjectsFieldNumber = 3;
    private static readonly pb::FieldCodec<global::Service.ActionConfig.Types.Object> _repeated_objects_codec
        = pb::FieldCodec.ForMessage(26, global::Service.ActionConfig.Types.Object.Parser);
    private readonly pbc::RepeatedField<global::Service.ActionConfig.Types.Object> objects_ = new pbc::RepeatedField<global::Service.ActionConfig.Types.Object>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::RepeatedField<global::Service.ActionConfig.Types.Object> Objects {
      get { return objects_; }
    }

    /// <summary>Field number for the "classification" field.</summary>
    public const int ClassificationFieldNumber = 4;
    private string classification_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Classification {
      get { return classification_; }
      set {
        classification_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "context_level" field.</summary>
    public const int ContextLevelFieldNumber = 5;
    private int contextLevel_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int ContextLevel {
      get { return contextLevel_; }
      set {
        contextLevel_ = value;
      }
    }

    /// <summary>Field number for the "current_attention_object" field.</summary>
    public const int CurrentAttentionObjectFieldNumber = 6;
    private string currentAttentionObject_ = "";
    /// <summary>
    /// This should be equal to the name of one of the objects in the Objects field.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string CurrentAttentionObject {
      get { return currentAttentionObject_; }
      set {
        currentAttentionObject_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(ActionConfig other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if(!actions_.Equals(other.actions_)) return false;
      if(!characters_.Equals(other.characters_)) return false;
      if(!objects_.Equals(other.objects_)) return false;
      if (Classification != other.Classification) return false;
      if (ContextLevel != other.ContextLevel) return false;
      if (CurrentAttentionObject != other.CurrentAttentionObject) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      hash ^= actions_.GetHashCode();
      hash ^= characters_.GetHashCode();
      hash ^= objects_.GetHashCode();
      if (Classification.Length != 0) hash ^= Classification.GetHashCode();
      if (ContextLevel != 0) hash ^= ContextLevel.GetHashCode();
      if (CurrentAttentionObject.Length != 0) hash ^= CurrentAttentionObject.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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) {
      actions_.WriteTo(output, _repeated_actions_codec);
      characters_.WriteTo(output, _repeated_characters_codec);
      objects_.WriteTo(output, _repeated_objects_codec);
      if (Classification.Length != 0) {
        output.WriteRawTag(34);
        output.WriteString(Classification);
      }
      if (ContextLevel != 0) {
        output.WriteRawTag(40);
        output.WriteInt32(ContextLevel);
      }
      if (CurrentAttentionObject.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(CurrentAttentionObject);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      size += actions_.CalculateSize(_repeated_actions_codec);
      size += characters_.CalculateSize(_repeated_characters_codec);
      size += objects_.CalculateSize(_repeated_objects_codec);
      if (Classification.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Classification);
      }
      if (ContextLevel != 0) {
        size += 1 + pb::CodedOutputStream.ComputeInt32Size(ContextLevel);
      }
      if (CurrentAttentionObject.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CurrentAttentionObject);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(ActionConfig other) {
      if (other == null) {
        return;
      }
      actions_.Add(other.actions_);
      characters_.Add(other.characters_);
      objects_.Add(other.objects_);
      if (other.Classification.Length != 0) {
        Classification = other.Classification;
      }
      if (other.ContextLevel != 0) {
        ContextLevel = other.ContextLevel;
      }
      if (other.CurrentAttentionObject.Length != 0) {
        CurrentAttentionObject = other.CurrentAttentionObject;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            actions_.AddEntriesFrom(input, _repeated_actions_codec);
            break;
          }
          case 18: {
            characters_.AddEntriesFrom(input, _repeated_characters_codec);
            break;
          }
          case 26: {
            objects_.AddEntriesFrom(input, _repeated_objects_codec);
            break;
          }
          case 34: {
            Classification = input.ReadString();
            break;
          }
          case 40: {
            ContextLevel = input.ReadInt32();
            break;
          }
          case 50: {
            CurrentAttentionObject = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the ActionConfig message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class Character : pb::IMessage<Character> {
        private static readonly pb::MessageParser<Character> _parser = new pb::MessageParser<Character>(() => new Character());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Character> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.ActionConfig.Descriptor.NestedTypes[0]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Character(Character other) : this() {
          name_ = other.name_;
          bio_ = other.bio_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 1;
        private string name_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

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

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

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

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

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Character other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Bio.Length != 0) {
            Bio = other.Bio;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Name = input.ReadString();
                break;
              }
              case 18: {
                Bio = input.ReadString();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.ActionConfig.Descriptor.NestedTypes[1]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Object(Object other) : this() {
          name_ = other.name_;
          description_ = other.description_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "name" field.</summary>
        public const int NameFieldNumber = 1;
        private string name_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Name {
          get { return name_; }
          set {
            name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

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

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

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

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

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Object other) {
          if (other == null) {
            return;
          }
          if (other.Name.Length != 0) {
            Name = other.Name;
          }
          if (other.Description.Length != 0) {
            Description = other.Description;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Name = input.ReadString();
                break;
              }
              case 18: {
                Description = input.ReadString();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[3]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public STTRequest(STTRequest other) : this() {
      switch (other.RequestTypeCase) {
        case RequestTypeOneofCase.AudioConfig:
          AudioConfig = other.AudioConfig.Clone();
          break;
        case RequestTypeOneofCase.AudioChunk:
          AudioChunk = other.AudioChunk;
          break;
      }

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

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

    /// <summary>Field number for the "audio_config" field.</summary>
    public const int AudioConfigFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.AudioConfig AudioConfig {
      get { return requestTypeCase_ == RequestTypeOneofCase.AudioConfig ? (global::Service.AudioConfig) requestType_ : null; }
      set {
        requestType_ = value;
        requestTypeCase_ = value == null ? RequestTypeOneofCase.None : RequestTypeOneofCase.AudioConfig;
      }
    }

    /// <summary>Field number for the "audio_chunk" field.</summary>
    public const int AudioChunkFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString AudioChunk {
      get { return requestTypeCase_ == RequestTypeOneofCase.AudioChunk ? (pb::ByteString) requestType_ : pb::ByteString.Empty; }
      set {
        requestType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        requestTypeCase_ = RequestTypeOneofCase.AudioChunk;
      }
    }

    private object requestType_;
    /// <summary>Enum of possible cases for the "request_type" oneof.</summary>
    public enum RequestTypeOneofCase {
      None = 0,
      AudioConfig = 1,
      AudioChunk = 2,
    }
    private RequestTypeOneofCase requestTypeCase_ = RequestTypeOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RequestTypeOneofCase RequestTypeCase {
      get { return requestTypeCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearRequestType() {
      requestTypeCase_ = RequestTypeOneofCase.None;
      requestType_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(STTRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(AudioConfig, other.AudioConfig)) return false;
      if (AudioChunk != other.AudioChunk) return false;
      if (RequestTypeCase != other.RequestTypeCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (requestTypeCase_ == RequestTypeOneofCase.AudioConfig) hash ^= AudioConfig.GetHashCode();
      if (requestTypeCase_ == RequestTypeOneofCase.AudioChunk) hash ^= AudioChunk.GetHashCode();
      hash ^= (int) requestTypeCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (requestTypeCase_ == RequestTypeOneofCase.AudioConfig) {
        output.WriteRawTag(10);
        output.WriteMessage(AudioConfig);
      }
      if (requestTypeCase_ == RequestTypeOneofCase.AudioChunk) {
        output.WriteRawTag(18);
        output.WriteBytes(AudioChunk);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (requestTypeCase_ == RequestTypeOneofCase.AudioConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AudioConfig);
      }
      if (requestTypeCase_ == RequestTypeOneofCase.AudioChunk) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(AudioChunk);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(STTRequest other) {
      if (other == null) {
        return;
      }
      switch (other.RequestTypeCase) {
        case RequestTypeOneofCase.AudioConfig:
          if (AudioConfig == null) {
            AudioConfig = new global::Service.AudioConfig();
          }
          AudioConfig.MergeFrom(other.AudioConfig);
          break;
        case RequestTypeOneofCase.AudioChunk:
          AudioChunk = other.AudioChunk;
          break;
      }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Service.AudioConfig subBuilder = new global::Service.AudioConfig();
            if (requestTypeCase_ == RequestTypeOneofCase.AudioConfig) {
              subBuilder.MergeFrom(AudioConfig);
            }
            input.ReadMessage(subBuilder);
            AudioConfig = subBuilder;
            break;
          }
          case 18: {
            AudioChunk = input.ReadBytes();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[4]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public STTResponse(STTResponse other) : this() {
      text_ = other.text_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "text" field.</summary>
    public const int TextFieldNumber = 1;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(STTResponse other) {
      if (other == null) {
        return;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Text = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[5]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public DynamicInfoConfig(DynamicInfoConfig other) : this() {
      text_ = other.text_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "text" field.</summary>
    public const int TextFieldNumber = 1;
    private string text_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Text {
      get { return text_; }
      set {
        text_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(DynamicInfoConfig other) {
      if (other == null) {
        return;
      }
      if (other.Text.Length != 0) {
        Text = other.Text;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Text = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[6]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GetResponseRequest(GetResponseRequest other) : this() {
      switch (other.RequestTypeCase) {
        case RequestTypeOneofCase.GetResponseConfig:
          GetResponseConfig = other.GetResponseConfig.Clone();
          break;
        case RequestTypeOneofCase.GetResponseData:
          GetResponseData = other.GetResponseData.Clone();
          break;
      }

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

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

    /// <summary>Field number for the "get_response_config" field.</summary>
    public const int GetResponseConfigFieldNumber = 1;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseRequest.Types.GetResponseConfig GetResponseConfig {
      get { return requestTypeCase_ == RequestTypeOneofCase.GetResponseConfig ? (global::Service.GetResponseRequest.Types.GetResponseConfig) requestType_ : null; }
      set {
        requestType_ = value;
        requestTypeCase_ = value == null ? RequestTypeOneofCase.None : RequestTypeOneofCase.GetResponseConfig;
      }
    }

    /// <summary>Field number for the "get_response_data" field.</summary>
    public const int GetResponseDataFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseRequest.Types.GetResponseData GetResponseData {
      get { return requestTypeCase_ == RequestTypeOneofCase.GetResponseData ? (global::Service.GetResponseRequest.Types.GetResponseData) requestType_ : null; }
      set {
        requestType_ = value;
        requestTypeCase_ = value == null ? RequestTypeOneofCase.None : RequestTypeOneofCase.GetResponseData;
      }
    }

    private object requestType_;
    /// <summary>Enum of possible cases for the "request_type" oneof.</summary>
    public enum RequestTypeOneofCase {
      None = 0,
      GetResponseConfig = 1,
      GetResponseData = 2,
    }
    private RequestTypeOneofCase requestTypeCase_ = RequestTypeOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public RequestTypeOneofCase RequestTypeCase {
      get { return requestTypeCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearRequestType() {
      requestTypeCase_ = RequestTypeOneofCase.None;
      requestType_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GetResponseRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(GetResponseConfig, other.GetResponseConfig)) return false;
      if (!object.Equals(GetResponseData, other.GetResponseData)) return false;
      if (RequestTypeCase != other.RequestTypeCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (requestTypeCase_ == RequestTypeOneofCase.GetResponseConfig) hash ^= GetResponseConfig.GetHashCode();
      if (requestTypeCase_ == RequestTypeOneofCase.GetResponseData) hash ^= GetResponseData.GetHashCode();
      hash ^= (int) requestTypeCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (requestTypeCase_ == RequestTypeOneofCase.GetResponseConfig) {
        output.WriteRawTag(10);
        output.WriteMessage(GetResponseConfig);
      }
      if (requestTypeCase_ == RequestTypeOneofCase.GetResponseData) {
        output.WriteRawTag(18);
        output.WriteMessage(GetResponseData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (requestTypeCase_ == RequestTypeOneofCase.GetResponseConfig) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetResponseConfig);
      }
      if (requestTypeCase_ == RequestTypeOneofCase.GetResponseData) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(GetResponseData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetResponseRequest other) {
      if (other == null) {
        return;
      }
      switch (other.RequestTypeCase) {
        case RequestTypeOneofCase.GetResponseConfig:
          if (GetResponseConfig == null) {
            GetResponseConfig = new global::Service.GetResponseRequest.Types.GetResponseConfig();
          }
          GetResponseConfig.MergeFrom(other.GetResponseConfig);
          break;
        case RequestTypeOneofCase.GetResponseData:
          if (GetResponseData == null) {
            GetResponseData = new global::Service.GetResponseRequest.Types.GetResponseData();
          }
          GetResponseData.MergeFrom(other.GetResponseData);
          break;
      }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Service.GetResponseRequest.Types.GetResponseConfig subBuilder = new global::Service.GetResponseRequest.Types.GetResponseConfig();
            if (requestTypeCase_ == RequestTypeOneofCase.GetResponseConfig) {
              subBuilder.MergeFrom(GetResponseConfig);
            }
            input.ReadMessage(subBuilder);
            GetResponseConfig = subBuilder;
            break;
          }
          case 18: {
            global::Service.GetResponseRequest.Types.GetResponseData subBuilder = new global::Service.GetResponseRequest.Types.GetResponseData();
            if (requestTypeCase_ == RequestTypeOneofCase.GetResponseData) {
              subBuilder.MergeFrom(GetResponseData);
            }
            input.ReadMessage(subBuilder);
            GetResponseData = subBuilder;
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the GetResponseRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class GetResponseConfig : pb::IMessage<GetResponseConfig> {
        private static readonly pb::MessageParser<GetResponseConfig> _parser = new pb::MessageParser<GetResponseConfig>(() => new GetResponseConfig());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<GetResponseConfig> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseRequest.Descriptor.NestedTypes[0]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public GetResponseConfig(GetResponseConfig other) : this() {
          characterId_ = other.characterId_;
          apiKey_ = other.apiKey_;
          sessionId_ = other.sessionId_;
          audioConfig_ = other.audioConfig_ != null ? other.audioConfig_.Clone() : null;
          actionConfig_ = other.actionConfig_ != null ? other.actionConfig_.Clone() : null;
          speaker_ = other.speaker_;
          languageCode_ = other.languageCode_;
          speakerId_ = other.speakerId_;
          apiAuthToken_ = other.apiAuthToken_;
          narrativeTemplateKeys_ = other.narrativeTemplateKeys_.Clone();
          dynamicInfoConfig_ = other.dynamicInfoConfig_ != null ? other.dynamicInfoConfig_.Clone() : null;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

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

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

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

        /// <summary>Field number for the "audio_config" field.</summary>
        public const int AudioConfigFieldNumber = 5;
        private global::Service.AudioConfig audioConfig_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.AudioConfig AudioConfig {
          get { return audioConfig_; }
          set {
            audioConfig_ = value;
          }
        }

        /// <summary>Field number for the "action_config" field.</summary>
        public const int ActionConfigFieldNumber = 6;
        private global::Service.ActionConfig actionConfig_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.ActionConfig ActionConfig {
          get { return actionConfig_; }
          set {
            actionConfig_ = value;
          }
        }

        /// <summary>Field number for the "speaker" field.</summary>
        public const int SpeakerFieldNumber = 7;
        private string speaker_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Speaker {
          get { return speaker_; }
          set {
            speaker_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "language_code" field.</summary>
        public const int LanguageCodeFieldNumber = 8;
        private string languageCode_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string LanguageCode {
          get { return languageCode_; }
          set {
            languageCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "speaker_id" field.</summary>
        public const int SpeakerIdFieldNumber = 9;
        private string speakerId_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string SpeakerId {
          get { return speakerId_; }
          set {
            speakerId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "api_auth_token" field.</summary>
        public const int ApiAuthTokenFieldNumber = 10;
        private string apiAuthToken_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string ApiAuthToken {
          get { return apiAuthToken_; }
          set {
            apiAuthToken_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "narrative_template_keys" field.</summary>
        public const int NarrativeTemplateKeysFieldNumber = 11;
        private static readonly pbc::MapField<string, string>.Codec _map_narrativeTemplateKeys_codec
            = new pbc::MapField<string, string>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForString(18), 90);
        private readonly pbc::MapField<string, string> narrativeTemplateKeys_ = new pbc::MapField<string, string>();
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::MapField<string, string> NarrativeTemplateKeys {
          get { return narrativeTemplateKeys_; }
        }

        /// <summary>Field number for the "dynamic_info_config" field.</summary>
        public const int DynamicInfoConfigFieldNumber = 12;
        private global::Service.DynamicInfoConfig dynamicInfoConfig_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.DynamicInfoConfig DynamicInfoConfig {
          get { return dynamicInfoConfig_; }
          set {
            dynamicInfoConfig_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(GetResponseConfig other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (CharacterId != other.CharacterId) return false;
          if (ApiKey != other.ApiKey) return false;
          if (SessionId != other.SessionId) return false;
          if (!object.Equals(AudioConfig, other.AudioConfig)) return false;
          if (!object.Equals(ActionConfig, other.ActionConfig)) return false;
          if (Speaker != other.Speaker) return false;
          if (LanguageCode != other.LanguageCode) return false;
          if (SpeakerId != other.SpeakerId) return false;
          if (ApiAuthToken != other.ApiAuthToken) return false;
          if (!NarrativeTemplateKeys.Equals(other.NarrativeTemplateKeys)) return false;
          if (!object.Equals(DynamicInfoConfig, other.DynamicInfoConfig)) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (CharacterId.Length != 0) hash ^= CharacterId.GetHashCode();
          if (ApiKey.Length != 0) hash ^= ApiKey.GetHashCode();
          if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
          if (audioConfig_ != null) hash ^= AudioConfig.GetHashCode();
          if (actionConfig_ != null) hash ^= ActionConfig.GetHashCode();
          if (Speaker.Length != 0) hash ^= Speaker.GetHashCode();
          if (LanguageCode.Length != 0) hash ^= LanguageCode.GetHashCode();
          if (SpeakerId.Length != 0) hash ^= SpeakerId.GetHashCode();
          if (ApiAuthToken.Length != 0) hash ^= ApiAuthToken.GetHashCode();
          hash ^= NarrativeTemplateKeys.GetHashCode();
          if (dynamicInfoConfig_ != null) hash ^= DynamicInfoConfig.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.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 (CharacterId.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(CharacterId);
          }
          if (ApiKey.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(ApiKey);
          }
          if (SessionId.Length != 0) {
            output.WriteRawTag(34);
            output.WriteString(SessionId);
          }
          if (audioConfig_ != null) {
            output.WriteRawTag(42);
            output.WriteMessage(AudioConfig);
          }
          if (actionConfig_ != null) {
            output.WriteRawTag(50);
            output.WriteMessage(ActionConfig);
          }
          if (Speaker.Length != 0) {
            output.WriteRawTag(58);
            output.WriteString(Speaker);
          }
          if (LanguageCode.Length != 0) {
            output.WriteRawTag(66);
            output.WriteString(LanguageCode);
          }
          if (SpeakerId.Length != 0) {
            output.WriteRawTag(74);
            output.WriteString(SpeakerId);
          }
          if (ApiAuthToken.Length != 0) {
            output.WriteRawTag(82);
            output.WriteString(ApiAuthToken);
          }
          narrativeTemplateKeys_.WriteTo(output, _map_narrativeTemplateKeys_codec);
          if (dynamicInfoConfig_ != null) {
            output.WriteRawTag(98);
            output.WriteMessage(DynamicInfoConfig);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (CharacterId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(CharacterId);
          }
          if (ApiKey.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiKey);
          }
          if (SessionId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
          }
          if (audioConfig_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(AudioConfig);
          }
          if (actionConfig_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActionConfig);
          }
          if (Speaker.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(Speaker);
          }
          if (LanguageCode.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(LanguageCode);
          }
          if (SpeakerId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(SpeakerId);
          }
          if (ApiAuthToken.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(ApiAuthToken);
          }
          size += narrativeTemplateKeys_.CalculateSize(_map_narrativeTemplateKeys_codec);
          if (dynamicInfoConfig_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(DynamicInfoConfig);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(GetResponseConfig other) {
          if (other == null) {
            return;
          }
          if (other.CharacterId.Length != 0) {
            CharacterId = other.CharacterId;
          }
          if (other.ApiKey.Length != 0) {
            ApiKey = other.ApiKey;
          }
          if (other.SessionId.Length != 0) {
            SessionId = other.SessionId;
          }
          if (other.audioConfig_ != null) {
            if (audioConfig_ == null) {
              AudioConfig = new global::Service.AudioConfig();
            }
            AudioConfig.MergeFrom(other.AudioConfig);
          }
          if (other.actionConfig_ != null) {
            if (actionConfig_ == null) {
              ActionConfig = new global::Service.ActionConfig();
            }
            ActionConfig.MergeFrom(other.ActionConfig);
          }
          if (other.Speaker.Length != 0) {
            Speaker = other.Speaker;
          }
          if (other.LanguageCode.Length != 0) {
            LanguageCode = other.LanguageCode;
          }
          if (other.SpeakerId.Length != 0) {
            SpeakerId = other.SpeakerId;
          }
          if (other.ApiAuthToken.Length != 0) {
            ApiAuthToken = other.ApiAuthToken;
          }
          narrativeTemplateKeys_.Add(other.narrativeTemplateKeys_);
          if (other.dynamicInfoConfig_ != null) {
            if (dynamicInfoConfig_ == null) {
              DynamicInfoConfig = new global::Service.DynamicInfoConfig();
            }
            DynamicInfoConfig.MergeFrom(other.DynamicInfoConfig);
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 18: {
                CharacterId = input.ReadString();
                break;
              }
              case 26: {
                ApiKey = input.ReadString();
                break;
              }
              case 34: {
                SessionId = input.ReadString();
                break;
              }
              case 42: {
                if (audioConfig_ == null) {
                  AudioConfig = new global::Service.AudioConfig();
                }
                input.ReadMessage(AudioConfig);
                break;
              }
              case 50: {
                if (actionConfig_ == null) {
                  ActionConfig = new global::Service.ActionConfig();
                }
                input.ReadMessage(ActionConfig);
                break;
              }
              case 58: {
                Speaker = input.ReadString();
                break;
              }
              case 66: {
                LanguageCode = input.ReadString();
                break;
              }
              case 74: {
                SpeakerId = input.ReadString();
                break;
              }
              case 82: {
                ApiAuthToken = input.ReadString();
                break;
              }
              case 90: {
                narrativeTemplateKeys_.AddEntriesFrom(input, _map_narrativeTemplateKeys_codec);
                break;
              }
              case 98: {
                if (dynamicInfoConfig_ == null) {
                  DynamicInfoConfig = new global::Service.DynamicInfoConfig();
                }
                input.ReadMessage(DynamicInfoConfig);
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseRequest.Descriptor.NestedTypes[1]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public GetResponseData(GetResponseData other) : this() {
          switch (other.InputTypeCase) {
            case InputTypeOneofCase.AudioData:
              AudioData = other.AudioData;
              break;
            case InputTypeOneofCase.TextData:
              TextData = other.TextData;
              break;
            case InputTypeOneofCase.TriggerData:
              TriggerData = other.TriggerData.Clone();
              break;
          }

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

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

        /// <summary>Field number for the "audio_data" field.</summary>
        public const int AudioDataFieldNumber = 1;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pb::ByteString AudioData {
          get { return inputTypeCase_ == InputTypeOneofCase.AudioData ? (pb::ByteString) inputType_ : pb::ByteString.Empty; }
          set {
            inputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            inputTypeCase_ = InputTypeOneofCase.AudioData;
          }
        }

        /// <summary>Field number for the "text_data" field.</summary>
        public const int TextDataFieldNumber = 2;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string TextData {
          get { return inputTypeCase_ == InputTypeOneofCase.TextData ? (string) inputType_ : ""; }
          set {
            inputType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
            inputTypeCase_ = InputTypeOneofCase.TextData;
          }
        }

        /// <summary>Field number for the "trigger_data" field.</summary>
        public const int TriggerDataFieldNumber = 3;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.TriggerConfig TriggerData {
          get { return inputTypeCase_ == InputTypeOneofCase.TriggerData ? (global::Service.TriggerConfig) inputType_ : null; }
          set {
            inputType_ = value;
            inputTypeCase_ = value == null ? InputTypeOneofCase.None : InputTypeOneofCase.TriggerData;
          }
        }

        private object inputType_;
        /// <summary>Enum of possible cases for the "input_type" oneof.</summary>
        public enum InputTypeOneofCase {
          None = 0,
          AudioData = 1,
          TextData = 2,
          TriggerData = 3,
        }
        private InputTypeOneofCase inputTypeCase_ = InputTypeOneofCase.None;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public InputTypeOneofCase InputTypeCase {
          get { return inputTypeCase_; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void ClearInputType() {
          inputTypeCase_ = InputTypeOneofCase.None;
          inputType_ = null;
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(GetResponseData other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (AudioData != other.AudioData) return false;
          if (TextData != other.TextData) return false;
          if (!object.Equals(TriggerData, other.TriggerData)) return false;
          if (InputTypeCase != other.InputTypeCase) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (inputTypeCase_ == InputTypeOneofCase.AudioData) hash ^= AudioData.GetHashCode();
          if (inputTypeCase_ == InputTypeOneofCase.TextData) hash ^= TextData.GetHashCode();
          if (inputTypeCase_ == InputTypeOneofCase.TriggerData) hash ^= TriggerData.GetHashCode();
          hash ^= (int) inputTypeCase_;
          if (_unknownFields != null) {
            hash ^= _unknownFields.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 (inputTypeCase_ == InputTypeOneofCase.AudioData) {
            output.WriteRawTag(10);
            output.WriteBytes(AudioData);
          }
          if (inputTypeCase_ == InputTypeOneofCase.TextData) {
            output.WriteRawTag(18);
            output.WriteString(TextData);
          }
          if (inputTypeCase_ == InputTypeOneofCase.TriggerData) {
            output.WriteRawTag(26);
            output.WriteMessage(TriggerData);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (inputTypeCase_ == InputTypeOneofCase.AudioData) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(AudioData);
          }
          if (inputTypeCase_ == InputTypeOneofCase.TextData) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(TextData);
          }
          if (inputTypeCase_ == InputTypeOneofCase.TriggerData) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(TriggerData);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(GetResponseData other) {
          if (other == null) {
            return;
          }
          switch (other.InputTypeCase) {
            case InputTypeOneofCase.AudioData:
              AudioData = other.AudioData;
              break;
            case InputTypeOneofCase.TextData:
              TextData = other.TextData;
              break;
            case InputTypeOneofCase.TriggerData:
              if (TriggerData == null) {
                TriggerData = new global::Service.TriggerConfig();
              }
              TriggerData.MergeFrom(other.TriggerData);
              break;
          }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                AudioData = input.ReadBytes();
                break;
              }
              case 18: {
                TextData = input.ReadString();
                break;
              }
              case 26: {
                global::Service.TriggerConfig subBuilder = new global::Service.TriggerConfig();
                if (inputTypeCase_ == InputTypeOneofCase.TriggerData) {
                  subBuilder.MergeFrom(TriggerData);
                }
                input.ReadMessage(subBuilder);
                TriggerData = subBuilder;
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[7]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GetResponseRequestSingle(GetResponseRequestSingle other) : this() {
      responseConfig_ = other.responseConfig_ != null ? other.responseConfig_.Clone() : null;
      responseData_ = other.responseData_ != null ? other.responseData_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "response_config" field.</summary>
    public const int ResponseConfigFieldNumber = 1;
    private global::Service.GetResponseRequest responseConfig_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseRequest ResponseConfig {
      get { return responseConfig_; }
      set {
        responseConfig_ = value;
      }
    }

    /// <summary>Field number for the "response_data" field.</summary>
    public const int ResponseDataFieldNumber = 2;
    private global::Service.GetResponseRequest responseData_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseRequest ResponseData {
      get { return responseData_; }
      set {
        responseData_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GetResponseRequestSingle other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(ResponseConfig, other.ResponseConfig)) return false;
      if (!object.Equals(ResponseData, other.ResponseData)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (responseConfig_ != null) hash ^= ResponseConfig.GetHashCode();
      if (responseData_ != null) hash ^= ResponseData.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (responseConfig_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(ResponseConfig);
      }
      if (responseData_ != null) {
        output.WriteRawTag(18);
        output.WriteMessage(ResponseData);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (responseConfig_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ResponseConfig);
      }
      if (responseData_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ResponseData);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetResponseRequestSingle other) {
      if (other == null) {
        return;
      }
      if (other.responseConfig_ != null) {
        if (responseConfig_ == null) {
          ResponseConfig = new global::Service.GetResponseRequest();
        }
        ResponseConfig.MergeFrom(other.ResponseConfig);
      }
      if (other.responseData_ != null) {
        if (responseData_ == null) {
          ResponseData = new global::Service.GetResponseRequest();
        }
        ResponseData.MergeFrom(other.ResponseData);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (responseConfig_ == null) {
              ResponseConfig = new global::Service.GetResponseRequest();
            }
            input.ReadMessage(ResponseConfig);
            break;
          }
          case 18: {
            if (responseData_ == null) {
              ResponseData = new global::Service.GetResponseRequest();
            }
            input.ReadMessage(ResponseData);
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[8]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public GetResponseResponse(GetResponseResponse other) : this() {
      sessionId_ = other.sessionId_;
      switch (other.ResponseTypeCase) {
        case ResponseTypeOneofCase.ActionResponse:
          ActionResponse = other.ActionResponse.Clone();
          break;
        case ResponseTypeOneofCase.AudioResponse:
          AudioResponse = other.AudioResponse.Clone();
          break;
        case ResponseTypeOneofCase.DebugLog:
          DebugLog = other.DebugLog;
          break;
        case ResponseTypeOneofCase.UserQuery:
          UserQuery = other.UserQuery.Clone();
          break;
        case ResponseTypeOneofCase.BtResponse:
          BtResponse = other.BtResponse.Clone();
          break;
        case ResponseTypeOneofCase.EmotionResponse:
          EmotionResponse = other.EmotionResponse;
          break;
        case ResponseTypeOneofCase.InteractionId:
          InteractionId = other.InteractionId;
          break;
      }

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

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

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

    /// <summary>Field number for the "action_response" field.</summary>
    public const int ActionResponseFieldNumber = 2;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseResponse.Types.ActionResponse ActionResponse {
      get { return responseTypeCase_ == ResponseTypeOneofCase.ActionResponse ? (global::Service.GetResponseResponse.Types.ActionResponse) responseType_ : null; }
      set {
        responseType_ = value;
        responseTypeCase_ = value == null ? ResponseTypeOneofCase.None : ResponseTypeOneofCase.ActionResponse;
      }
    }

    /// <summary>Field number for the "audio_response" field.</summary>
    public const int AudioResponseFieldNumber = 3;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseResponse.Types.AudioResponse AudioResponse {
      get { return responseTypeCase_ == ResponseTypeOneofCase.AudioResponse ? (global::Service.GetResponseResponse.Types.AudioResponse) responseType_ : null; }
      set {
        responseType_ = value;
        responseTypeCase_ = value == null ? ResponseTypeOneofCase.None : ResponseTypeOneofCase.AudioResponse;
      }
    }

    /// <summary>Field number for the "debug_log" field.</summary>
    public const int DebugLogFieldNumber = 4;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string DebugLog {
      get { return responseTypeCase_ == ResponseTypeOneofCase.DebugLog ? (string) responseType_ : ""; }
      set {
        responseType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        responseTypeCase_ = ResponseTypeOneofCase.DebugLog;
      }
    }

    /// <summary>Field number for the "user_query" field.</summary>
    public const int UserQueryFieldNumber = 5;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseResponse.Types.UserTranscript UserQuery {
      get { return responseTypeCase_ == ResponseTypeOneofCase.UserQuery ? (global::Service.GetResponseResponse.Types.UserTranscript) responseType_ : null; }
      set {
        responseType_ = value;
        responseTypeCase_ = value == null ? ResponseTypeOneofCase.None : ResponseTypeOneofCase.UserQuery;
      }
    }

    /// <summary>Field number for the "bt_response" field.</summary>
    public const int BtResponseFieldNumber = 6;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.GetResponseResponse.Types.BehaviorTreeResponse BtResponse {
      get { return responseTypeCase_ == ResponseTypeOneofCase.BtResponse ? (global::Service.GetResponseResponse.Types.BehaviorTreeResponse) responseType_ : null; }
      set {
        responseType_ = value;
        responseTypeCase_ = value == null ? ResponseTypeOneofCase.None : ResponseTypeOneofCase.BtResponse;
      }
    }

    /// <summary>Field number for the "emotion_response" field.</summary>
    public const int EmotionResponseFieldNumber = 7;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string EmotionResponse {
      get { return responseTypeCase_ == ResponseTypeOneofCase.EmotionResponse ? (string) responseType_ : ""; }
      set {
        responseType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        responseTypeCase_ = ResponseTypeOneofCase.EmotionResponse;
      }
    }

    /// <summary>Field number for the "interaction_id" field.</summary>
    public const int InteractionIdFieldNumber = 8;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string InteractionId {
      get { return responseTypeCase_ == ResponseTypeOneofCase.InteractionId ? (string) responseType_ : ""; }
      set {
        responseType_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        responseTypeCase_ = ResponseTypeOneofCase.InteractionId;
      }
    }

    private object responseType_;
    /// <summary>Enum of possible cases for the "response_type" oneof.</summary>
    public enum ResponseTypeOneofCase {
      None = 0,
      ActionResponse = 2,
      AudioResponse = 3,
      DebugLog = 4,
      UserQuery = 5,
      BtResponse = 6,
      EmotionResponse = 7,
      InteractionId = 8,
    }
    private ResponseTypeOneofCase responseTypeCase_ = ResponseTypeOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ResponseTypeOneofCase ResponseTypeCase {
      get { return responseTypeCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearResponseType() {
      responseTypeCase_ = ResponseTypeOneofCase.None;
      responseType_ = null;
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(GetResponseResponse other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (SessionId != other.SessionId) return false;
      if (!object.Equals(ActionResponse, other.ActionResponse)) return false;
      if (!object.Equals(AudioResponse, other.AudioResponse)) return false;
      if (DebugLog != other.DebugLog) return false;
      if (!object.Equals(UserQuery, other.UserQuery)) return false;
      if (!object.Equals(BtResponse, other.BtResponse)) return false;
      if (EmotionResponse != other.EmotionResponse) return false;
      if (InteractionId != other.InteractionId) return false;
      if (ResponseTypeCase != other.ResponseTypeCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.ActionResponse) hash ^= ActionResponse.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.AudioResponse) hash ^= AudioResponse.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.DebugLog) hash ^= DebugLog.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.UserQuery) hash ^= UserQuery.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.BtResponse) hash ^= BtResponse.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.EmotionResponse) hash ^= EmotionResponse.GetHashCode();
      if (responseTypeCase_ == ResponseTypeOneofCase.InteractionId) hash ^= InteractionId.GetHashCode();
      hash ^= (int) responseTypeCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (SessionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(SessionId);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.ActionResponse) {
        output.WriteRawTag(18);
        output.WriteMessage(ActionResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.AudioResponse) {
        output.WriteRawTag(26);
        output.WriteMessage(AudioResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.DebugLog) {
        output.WriteRawTag(34);
        output.WriteString(DebugLog);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.UserQuery) {
        output.WriteRawTag(42);
        output.WriteMessage(UserQuery);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.BtResponse) {
        output.WriteRawTag(50);
        output.WriteMessage(BtResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.EmotionResponse) {
        output.WriteRawTag(58);
        output.WriteString(EmotionResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.InteractionId) {
        output.WriteRawTag(66);
        output.WriteString(InteractionId);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.ActionResponse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(ActionResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.AudioResponse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(AudioResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.DebugLog) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(DebugLog);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.UserQuery) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(UserQuery);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.BtResponse) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(BtResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.EmotionResponse) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(EmotionResponse);
      }
      if (responseTypeCase_ == ResponseTypeOneofCase.InteractionId) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InteractionId);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(GetResponseResponse other) {
      if (other == null) {
        return;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      switch (other.ResponseTypeCase) {
        case ResponseTypeOneofCase.ActionResponse:
          if (ActionResponse == null) {
            ActionResponse = new global::Service.GetResponseResponse.Types.ActionResponse();
          }
          ActionResponse.MergeFrom(other.ActionResponse);
          break;
        case ResponseTypeOneofCase.AudioResponse:
          if (AudioResponse == null) {
            AudioResponse = new global::Service.GetResponseResponse.Types.AudioResponse();
          }
          AudioResponse.MergeFrom(other.AudioResponse);
          break;
        case ResponseTypeOneofCase.DebugLog:
          DebugLog = other.DebugLog;
          break;
        case ResponseTypeOneofCase.UserQuery:
          if (UserQuery == null) {
            UserQuery = new global::Service.GetResponseResponse.Types.UserTranscript();
          }
          UserQuery.MergeFrom(other.UserQuery);
          break;
        case ResponseTypeOneofCase.BtResponse:
          if (BtResponse == null) {
            BtResponse = new global::Service.GetResponseResponse.Types.BehaviorTreeResponse();
          }
          BtResponse.MergeFrom(other.BtResponse);
          break;
        case ResponseTypeOneofCase.EmotionResponse:
          EmotionResponse = other.EmotionResponse;
          break;
        case ResponseTypeOneofCase.InteractionId:
          InteractionId = other.InteractionId;
          break;
      }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            SessionId = input.ReadString();
            break;
          }
          case 18: {
            global::Service.GetResponseResponse.Types.ActionResponse subBuilder = new global::Service.GetResponseResponse.Types.ActionResponse();
            if (responseTypeCase_ == ResponseTypeOneofCase.ActionResponse) {
              subBuilder.MergeFrom(ActionResponse);
            }
            input.ReadMessage(subBuilder);
            ActionResponse = subBuilder;
            break;
          }
          case 26: {
            global::Service.GetResponseResponse.Types.AudioResponse subBuilder = new global::Service.GetResponseResponse.Types.AudioResponse();
            if (responseTypeCase_ == ResponseTypeOneofCase.AudioResponse) {
              subBuilder.MergeFrom(AudioResponse);
            }
            input.ReadMessage(subBuilder);
            AudioResponse = subBuilder;
            break;
          }
          case 34: {
            DebugLog = input.ReadString();
            break;
          }
          case 42: {
            global::Service.GetResponseResponse.Types.UserTranscript subBuilder = new global::Service.GetResponseResponse.Types.UserTranscript();
            if (responseTypeCase_ == ResponseTypeOneofCase.UserQuery) {
              subBuilder.MergeFrom(UserQuery);
            }
            input.ReadMessage(subBuilder);
            UserQuery = subBuilder;
            break;
          }
          case 50: {
            global::Service.GetResponseResponse.Types.BehaviorTreeResponse subBuilder = new global::Service.GetResponseResponse.Types.BehaviorTreeResponse();
            if (responseTypeCase_ == ResponseTypeOneofCase.BtResponse) {
              subBuilder.MergeFrom(BtResponse);
            }
            input.ReadMessage(subBuilder);
            BtResponse = subBuilder;
            break;
          }
          case 58: {
            EmotionResponse = input.ReadString();
            break;
          }
          case 66: {
            InteractionId = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the GetResponseResponse message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class AudioResponse : pb::IMessage<AudioResponse> {
        private static readonly pb::MessageParser<AudioResponse> _parser = new pb::MessageParser<AudioResponse>(() => new AudioResponse());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<AudioResponse> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseResponse.Descriptor.NestedTypes[0]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public AudioResponse(AudioResponse other) : this() {
          audioData_ = other.audioData_;
          audioConfig_ = other.audioConfig_ != null ? other.audioConfig_.Clone() : null;
          textData_ = other.textData_;
          endOfResponse_ = other.endOfResponse_;
          faceData_ = other.faceData_;
          faceEmotion_ = other.faceEmotion_ != null ? other.faceEmotion_.Clone() : null;
          emotionResponse_ = other.emotionResponse_ != null ? other.emotionResponse_.Clone() : null;
          switch (other.FaceDataTypeCase) {
            case FaceDataTypeOneofCase.VisemesData:
              VisemesData = other.VisemesData.Clone();
              break;
            case FaceDataTypeOneofCase.BlendshapesData:
              BlendshapesData = other.BlendshapesData.Clone();
              break;
          }

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

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

        /// <summary>Field number for the "audio_data" field.</summary>
        public const int AudioDataFieldNumber = 1;
        private pb::ByteString audioData_ = pb::ByteString.Empty;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pb::ByteString AudioData {
          get { return audioData_; }
          set {
            audioData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "audio_config" field.</summary>
        public const int AudioConfigFieldNumber = 2;
        private global::Service.AudioConfig audioConfig_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.AudioConfig AudioConfig {
          get { return audioConfig_; }
          set {
            audioConfig_ = value;
          }
        }

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

        /// <summary>Field number for the "end_of_response" field.</summary>
        public const int EndOfResponseFieldNumber = 4;
        private bool endOfResponse_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool EndOfResponse {
          get { return endOfResponse_; }
          set {
            endOfResponse_ = value;
          }
        }

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

        /// <summary>Field number for the "visemes_data" field.</summary>
        public const int VisemesDataFieldNumber = 6;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.VisemesData VisemesData {
          get { return faceDataTypeCase_ == FaceDataTypeOneofCase.VisemesData ? (global::Service.VisemesData) faceDataType_ : null; }
          set {
            faceDataType_ = value;
            faceDataTypeCase_ = value == null ? FaceDataTypeOneofCase.None : FaceDataTypeOneofCase.VisemesData;
          }
        }

        /// <summary>Field number for the "blendshapes_data" field.</summary>
        public const int BlendshapesDataFieldNumber = 7;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.BlendShapesData BlendshapesData {
          get { return faceDataTypeCase_ == FaceDataTypeOneofCase.BlendshapesData ? (global::Service.BlendShapesData) faceDataType_ : null; }
          set {
            faceDataType_ = value;
            faceDataTypeCase_ = value == null ? FaceDataTypeOneofCase.None : FaceDataTypeOneofCase.BlendshapesData;
          }
        }

        /// <summary>Field number for the "face_emotion" field.</summary>
        public const int FaceEmotionFieldNumber = 8;
        private global::Service.ARKitBlendShapesData faceEmotion_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.ARKitBlendShapesData FaceEmotion {
          get { return faceEmotion_; }
          set {
            faceEmotion_ = value;
          }
        }

        /// <summary>Field number for the "emotion_response" field.</summary>
        public const int EmotionResponseFieldNumber = 9;
        private global::Service.EmotionResponse emotionResponse_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public global::Service.EmotionResponse EmotionResponse {
          get { return emotionResponse_; }
          set {
            emotionResponse_ = value;
          }
        }

        private object faceDataType_;
        /// <summary>Enum of possible cases for the "face_data_type" oneof.</summary>
        public enum FaceDataTypeOneofCase {
          None = 0,
          VisemesData = 6,
          BlendshapesData = 7,
        }
        private FaceDataTypeOneofCase faceDataTypeCase_ = FaceDataTypeOneofCase.None;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public FaceDataTypeOneofCase FaceDataTypeCase {
          get { return faceDataTypeCase_; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void ClearFaceDataType() {
          faceDataTypeCase_ = FaceDataTypeOneofCase.None;
          faceDataType_ = null;
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(AudioResponse other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (AudioData != other.AudioData) return false;
          if (!object.Equals(AudioConfig, other.AudioConfig)) return false;
          if (TextData != other.TextData) return false;
          if (EndOfResponse != other.EndOfResponse) return false;
          if (FaceData != other.FaceData) return false;
          if (!object.Equals(VisemesData, other.VisemesData)) return false;
          if (!object.Equals(BlendshapesData, other.BlendshapesData)) return false;
          if (!object.Equals(FaceEmotion, other.FaceEmotion)) return false;
          if (!object.Equals(EmotionResponse, other.EmotionResponse)) return false;
          if (FaceDataTypeCase != other.FaceDataTypeCase) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (AudioData.Length != 0) hash ^= AudioData.GetHashCode();
          if (audioConfig_ != null) hash ^= AudioConfig.GetHashCode();
          if (TextData.Length != 0) hash ^= TextData.GetHashCode();
          if (EndOfResponse != false) hash ^= EndOfResponse.GetHashCode();
          if (FaceData.Length != 0) hash ^= FaceData.GetHashCode();
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.VisemesData) hash ^= VisemesData.GetHashCode();
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.BlendshapesData) hash ^= BlendshapesData.GetHashCode();
          if (faceEmotion_ != null) hash ^= FaceEmotion.GetHashCode();
          if (emotionResponse_ != null) hash ^= EmotionResponse.GetHashCode();
          hash ^= (int) faceDataTypeCase_;
          if (_unknownFields != null) {
            hash ^= _unknownFields.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 (AudioData.Length != 0) {
            output.WriteRawTag(10);
            output.WriteBytes(AudioData);
          }
          if (audioConfig_ != null) {
            output.WriteRawTag(18);
            output.WriteMessage(AudioConfig);
          }
          if (TextData.Length != 0) {
            output.WriteRawTag(26);
            output.WriteString(TextData);
          }
          if (EndOfResponse != false) {
            output.WriteRawTag(32);
            output.WriteBool(EndOfResponse);
          }
          if (FaceData.Length != 0) {
            output.WriteRawTag(42);
            output.WriteString(FaceData);
          }
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.VisemesData) {
            output.WriteRawTag(50);
            output.WriteMessage(VisemesData);
          }
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.BlendshapesData) {
            output.WriteRawTag(58);
            output.WriteMessage(BlendshapesData);
          }
          if (faceEmotion_ != null) {
            output.WriteRawTag(66);
            output.WriteMessage(FaceEmotion);
          }
          if (emotionResponse_ != null) {
            output.WriteRawTag(74);
            output.WriteMessage(EmotionResponse);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (AudioData.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeBytesSize(AudioData);
          }
          if (audioConfig_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(AudioConfig);
          }
          if (TextData.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(TextData);
          }
          if (EndOfResponse != false) {
            size += 1 + 1;
          }
          if (FaceData.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(FaceData);
          }
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.VisemesData) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(VisemesData);
          }
          if (faceDataTypeCase_ == FaceDataTypeOneofCase.BlendshapesData) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(BlendshapesData);
          }
          if (faceEmotion_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(FaceEmotion);
          }
          if (emotionResponse_ != null) {
            size += 1 + pb::CodedOutputStream.ComputeMessageSize(EmotionResponse);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(AudioResponse other) {
          if (other == null) {
            return;
          }
          if (other.AudioData.Length != 0) {
            AudioData = other.AudioData;
          }
          if (other.audioConfig_ != null) {
            if (audioConfig_ == null) {
              AudioConfig = new global::Service.AudioConfig();
            }
            AudioConfig.MergeFrom(other.AudioConfig);
          }
          if (other.TextData.Length != 0) {
            TextData = other.TextData;
          }
          if (other.EndOfResponse != false) {
            EndOfResponse = other.EndOfResponse;
          }
          if (other.FaceData.Length != 0) {
            FaceData = other.FaceData;
          }
          if (other.faceEmotion_ != null) {
            if (faceEmotion_ == null) {
              FaceEmotion = new global::Service.ARKitBlendShapesData();
            }
            FaceEmotion.MergeFrom(other.FaceEmotion);
          }
          if (other.emotionResponse_ != null) {
            if (emotionResponse_ == null) {
              EmotionResponse = new global::Service.EmotionResponse();
            }
            EmotionResponse.MergeFrom(other.EmotionResponse);
          }
          switch (other.FaceDataTypeCase) {
            case FaceDataTypeOneofCase.VisemesData:
              if (VisemesData == null) {
                VisemesData = new global::Service.VisemesData();
              }
              VisemesData.MergeFrom(other.VisemesData);
              break;
            case FaceDataTypeOneofCase.BlendshapesData:
              if (BlendshapesData == null) {
                BlendshapesData = new global::Service.BlendShapesData();
              }
              BlendshapesData.MergeFrom(other.BlendshapesData);
              break;
          }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                AudioData = input.ReadBytes();
                break;
              }
              case 18: {
                if (audioConfig_ == null) {
                  AudioConfig = new global::Service.AudioConfig();
                }
                input.ReadMessage(AudioConfig);
                break;
              }
              case 26: {
                TextData = input.ReadString();
                break;
              }
              case 32: {
                EndOfResponse = input.ReadBool();
                break;
              }
              case 42: {
                FaceData = input.ReadString();
                break;
              }
              case 50: {
                global::Service.VisemesData subBuilder = new global::Service.VisemesData();
                if (faceDataTypeCase_ == FaceDataTypeOneofCase.VisemesData) {
                  subBuilder.MergeFrom(VisemesData);
                }
                input.ReadMessage(subBuilder);
                VisemesData = subBuilder;
                break;
              }
              case 58: {
                global::Service.BlendShapesData subBuilder = new global::Service.BlendShapesData();
                if (faceDataTypeCase_ == FaceDataTypeOneofCase.BlendshapesData) {
                  subBuilder.MergeFrom(BlendshapesData);
                }
                input.ReadMessage(subBuilder);
                BlendshapesData = subBuilder;
                break;
              }
              case 66: {
                if (faceEmotion_ == null) {
                  FaceEmotion = new global::Service.ARKitBlendShapesData();
                }
                input.ReadMessage(FaceEmotion);
                break;
              }
              case 74: {
                if (emotionResponse_ == null) {
                  EmotionResponse = new global::Service.EmotionResponse();
                }
                input.ReadMessage(EmotionResponse);
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseResponse.Descriptor.NestedTypes[1]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ActionResponse(ActionResponse other) : this() {
          action_ = other.action_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "action" field.</summary>
        public const int ActionFieldNumber = 1;
        private string action_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string Action {
          get { return action_; }
          set {
            action_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

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

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

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

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(ActionResponse other) {
          if (other == null) {
            return;
          }
          if (other.Action.Length != 0) {
            Action = other.Action;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                Action = input.ReadString();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseResponse.Descriptor.NestedTypes[2]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public BehaviorTreeResponse(BehaviorTreeResponse other) : this() {
          btCode_ = other.btCode_;
          btConstants_ = other.btConstants_;
          narrativeSectionId_ = other.narrativeSectionId_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "bt_code" field.</summary>
        public const int BtCodeFieldNumber = 1;
        private string btCode_ = "";
        /// <summary>
        /// Behavior tree code uploaded by user at the time of narration design.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string BtCode {
          get { return btCode_; }
          set {
            btCode_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "bt_constants" field.</summary>
        public const int BtConstantsFieldNumber = 2;
        private string btConstants_ = "";
        /// <summary>
        /// Json dump.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string BtConstants {
          get { return btConstants_; }
          set {
            btConstants_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "narrative_section_id" field.</summary>
        public const int NarrativeSectionIdFieldNumber = 3;
        private string narrativeSectionId_ = "";
        /// <summary>
        /// Current Narrative section-id for the character.
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string NarrativeSectionId {
          get { return narrativeSectionId_; }
          set {
            narrativeSectionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(BehaviorTreeResponse other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (BtCode != other.BtCode) return false;
          if (BtConstants != other.BtConstants) return false;
          if (NarrativeSectionId != other.NarrativeSectionId) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (BtCode.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(BtCode);
          }
          if (BtConstants.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(BtConstants);
          }
          if (NarrativeSectionId.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(NarrativeSectionId);
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(BehaviorTreeResponse other) {
          if (other == null) {
            return;
          }
          if (other.BtCode.Length != 0) {
            BtCode = other.BtCode;
          }
          if (other.BtConstants.Length != 0) {
            BtConstants = other.BtConstants;
          }
          if (other.NarrativeSectionId.Length != 0) {
            NarrativeSectionId = other.NarrativeSectionId;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                BtCode = input.ReadString();
                break;
              }
              case 18: {
                BtConstants = input.ReadString();
                break;
              }
              case 26: {
                NarrativeSectionId = input.ReadString();
                break;
              }
            }
          }
        }

      }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.GetResponseResponse.Descriptor.NestedTypes[3]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public UserTranscript(UserTranscript other) : this() {
          textData_ = other.textData_;
          isFinal_ = other.isFinal_;
          endOfResponse_ = other.endOfResponse_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "text_data" field.</summary>
        public const int TextDataFieldNumber = 1;
        private string textData_ = "";
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public string TextData {
          get { return textData_; }
          set {
            textData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
          }
        }

        /// <summary>Field number for the "is_final" field.</summary>
        public const int IsFinalFieldNumber = 2;
        private bool isFinal_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsFinal {
          get { return isFinal_; }
          set {
            isFinal_ = value;
          }
        }

        /// <summary>Field number for the "end_of_response" field.</summary>
        public const int EndOfResponseFieldNumber = 3;
        private bool endOfResponse_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool EndOfResponse {
          get { return endOfResponse_; }
          set {
            endOfResponse_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(UserTranscript other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (TextData != other.TextData) return false;
          if (IsFinal != other.IsFinal) return false;
          if (EndOfResponse != other.EndOfResponse) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (TextData.Length != 0) hash ^= TextData.GetHashCode();
          if (IsFinal != false) hash ^= IsFinal.GetHashCode();
          if (EndOfResponse != false) hash ^= EndOfResponse.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.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 (TextData.Length != 0) {
            output.WriteRawTag(10);
            output.WriteString(TextData);
          }
          if (IsFinal != false) {
            output.WriteRawTag(16);
            output.WriteBool(IsFinal);
          }
          if (EndOfResponse != false) {
            output.WriteRawTag(24);
            output.WriteBool(EndOfResponse);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (TextData.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(TextData);
          }
          if (IsFinal != false) {
            size += 1 + 1;
          }
          if (EndOfResponse != false) {
            size += 1 + 1;
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(UserTranscript other) {
          if (other == null) {
            return;
          }
          if (other.TextData.Length != 0) {
            TextData = other.TextData;
          }
          if (other.IsFinal != false) {
            IsFinal = other.IsFinal;
          }
          if (other.EndOfResponse != false) {
            EndOfResponse = other.EndOfResponse;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 10: {
                TextData = input.ReadString();
                break;
              }
              case 16: {
                IsFinal = input.ReadBool();
                break;
              }
              case 24: {
                EndOfResponse = input.ReadBool();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[9]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public VisemesData(VisemesData other) : this() {
      visemes_ = other.visemes_ != null ? other.visemes_.Clone() : null;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "visemes" field.</summary>
    public const int VisemesFieldNumber = 1;
    private global::Service.Viseme visemes_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.Viseme Visemes {
      get { return visemes_; }
      set {
        visemes_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(VisemesData other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!object.Equals(Visemes, other.Visemes)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (visemes_ != null) hash ^= Visemes.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (visemes_ != null) {
        output.WriteRawTag(10);
        output.WriteMessage(Visemes);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (visemes_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Visemes);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(VisemesData other) {
      if (other == null) {
        return;
      }
      if (other.visemes_ != null) {
        if (visemes_ == null) {
          Visemes = new global::Service.Viseme();
        }
        Visemes.MergeFrom(other.Visemes);
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            if (visemes_ == null) {
              Visemes = new global::Service.Viseme();
            }
            input.ReadMessage(Visemes);
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[10]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public EmotionResponse(EmotionResponse other) : this() {
      emotion_ = other.emotion_;
      scale_ = other.scale_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "emotion" field.</summary>
    public const int EmotionFieldNumber = 1;
    private string emotion_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Emotion {
      get { return emotion_; }
      set {
        emotion_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(EmotionResponse other) {
      if (other == null) {
        return;
      }
      if (other.Emotion.Length != 0) {
        Emotion = other.Emotion;
      }
      if (other.Scale.Length != 0) {
        Scale = other.Scale;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Emotion = input.ReadString();
            break;
          }
          case 18: {
            Scale = input.ReadString();
            break;
          }
        }
      }
    }

  }

  /// <summary>
  /// Define the Viseme message with all the individual viseme values
  /// </summary>
  public sealed partial class Viseme : pb::IMessage<Viseme> {
    private static readonly pb::MessageParser<Viseme> _parser = new pb::MessageParser<Viseme>(() => new Viseme());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<Viseme> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[11]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public Viseme(Viseme other) : this() {
      sil_ = other.sil_;
      pp_ = other.pp_;
      ff_ = other.ff_;
      th_ = other.th_;
      dd_ = other.dd_;
      kk_ = other.kk_;
      ch_ = other.ch_;
      ss_ = other.ss_;
      nn_ = other.nn_;
      rr_ = other.rr_;
      aa_ = other.aa_;
      e_ = other.e_;
      ih_ = other.ih_;
      oh_ = other.oh_;
      ou_ = other.ou_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "sil" field.</summary>
    public const int SilFieldNumber = 1;
    private float sil_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Sil {
      get { return sil_; }
      set {
        sil_ = value;
      }
    }

    /// <summary>Field number for the "pp" field.</summary>
    public const int PpFieldNumber = 2;
    private float pp_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Pp {
      get { return pp_; }
      set {
        pp_ = value;
      }
    }

    /// <summary>Field number for the "ff" field.</summary>
    public const int FfFieldNumber = 3;
    private float ff_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Ff {
      get { return ff_; }
      set {
        ff_ = value;
      }
    }

    /// <summary>Field number for the "th" field.</summary>
    public const int ThFieldNumber = 4;
    private float th_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Th {
      get { return th_; }
      set {
        th_ = value;
      }
    }

    /// <summary>Field number for the "dd" field.</summary>
    public const int DdFieldNumber = 5;
    private float dd_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Dd {
      get { return dd_; }
      set {
        dd_ = value;
      }
    }

    /// <summary>Field number for the "kk" field.</summary>
    public const int KkFieldNumber = 6;
    private float kk_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Kk {
      get { return kk_; }
      set {
        kk_ = value;
      }
    }

    /// <summary>Field number for the "ch" field.</summary>
    public const int ChFieldNumber = 7;
    private float ch_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Ch {
      get { return ch_; }
      set {
        ch_ = value;
      }
    }

    /// <summary>Field number for the "ss" field.</summary>
    public const int SsFieldNumber = 8;
    private float ss_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Ss {
      get { return ss_; }
      set {
        ss_ = value;
      }
    }

    /// <summary>Field number for the "nn" field.</summary>
    public const int NnFieldNumber = 9;
    private float nn_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Nn {
      get { return nn_; }
      set {
        nn_ = value;
      }
    }

    /// <summary>Field number for the "rr" field.</summary>
    public const int RrFieldNumber = 10;
    private float rr_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Rr {
      get { return rr_; }
      set {
        rr_ = value;
      }
    }

    /// <summary>Field number for the "aa" field.</summary>
    public const int AaFieldNumber = 11;
    private float aa_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Aa {
      get { return aa_; }
      set {
        aa_ = value;
      }
    }

    /// <summary>Field number for the "e" field.</summary>
    public const int EFieldNumber = 12;
    private float e_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float E {
      get { return e_; }
      set {
        e_ = value;
      }
    }

    /// <summary>Field number for the "ih" field.</summary>
    public const int IhFieldNumber = 13;
    private float ih_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Ih {
      get { return ih_; }
      set {
        ih_ = value;
      }
    }

    /// <summary>Field number for the "oh" field.</summary>
    public const int OhFieldNumber = 14;
    private float oh_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Oh {
      get { return oh_; }
      set {
        oh_ = value;
      }
    }

    /// <summary>Field number for the "ou" field.</summary>
    public const int OuFieldNumber = 15;
    private float ou_;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float Ou {
      get { return ou_; }
      set {
        ou_ = value;
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(Viseme other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Sil, other.Sil)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Pp, other.Pp)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Ff, other.Ff)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Th, other.Th)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Dd, other.Dd)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Kk, other.Kk)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Ch, other.Ch)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Ss, other.Ss)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Nn, other.Nn)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Rr, other.Rr)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Aa, other.Aa)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(E, other.E)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Ih, other.Ih)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Oh, other.Oh)) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(Ou, other.Ou)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Sil != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Sil);
      if (Pp != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Pp);
      if (Ff != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Ff);
      if (Th != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Th);
      if (Dd != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Dd);
      if (Kk != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Kk);
      if (Ch != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Ch);
      if (Ss != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Ss);
      if (Nn != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Nn);
      if (Rr != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Rr);
      if (Aa != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Aa);
      if (E != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(E);
      if (Ih != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Ih);
      if (Oh != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Oh);
      if (Ou != 0F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(Ou);
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (Sil != 0F) {
        output.WriteRawTag(13);
        output.WriteFloat(Sil);
      }
      if (Pp != 0F) {
        output.WriteRawTag(21);
        output.WriteFloat(Pp);
      }
      if (Ff != 0F) {
        output.WriteRawTag(29);
        output.WriteFloat(Ff);
      }
      if (Th != 0F) {
        output.WriteRawTag(37);
        output.WriteFloat(Th);
      }
      if (Dd != 0F) {
        output.WriteRawTag(45);
        output.WriteFloat(Dd);
      }
      if (Kk != 0F) {
        output.WriteRawTag(53);
        output.WriteFloat(Kk);
      }
      if (Ch != 0F) {
        output.WriteRawTag(61);
        output.WriteFloat(Ch);
      }
      if (Ss != 0F) {
        output.WriteRawTag(69);
        output.WriteFloat(Ss);
      }
      if (Nn != 0F) {
        output.WriteRawTag(77);
        output.WriteFloat(Nn);
      }
      if (Rr != 0F) {
        output.WriteRawTag(85);
        output.WriteFloat(Rr);
      }
      if (Aa != 0F) {
        output.WriteRawTag(93);
        output.WriteFloat(Aa);
      }
      if (E != 0F) {
        output.WriteRawTag(101);
        output.WriteFloat(E);
      }
      if (Ih != 0F) {
        output.WriteRawTag(109);
        output.WriteFloat(Ih);
      }
      if (Oh != 0F) {
        output.WriteRawTag(117);
        output.WriteFloat(Oh);
      }
      if (Ou != 0F) {
        output.WriteRawTag(125);
        output.WriteFloat(Ou);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Sil != 0F) {
        size += 1 + 4;
      }
      if (Pp != 0F) {
        size += 1 + 4;
      }
      if (Ff != 0F) {
        size += 1 + 4;
      }
      if (Th != 0F) {
        size += 1 + 4;
      }
      if (Dd != 0F) {
        size += 1 + 4;
      }
      if (Kk != 0F) {
        size += 1 + 4;
      }
      if (Ch != 0F) {
        size += 1 + 4;
      }
      if (Ss != 0F) {
        size += 1 + 4;
      }
      if (Nn != 0F) {
        size += 1 + 4;
      }
      if (Rr != 0F) {
        size += 1 + 4;
      }
      if (Aa != 0F) {
        size += 1 + 4;
      }
      if (E != 0F) {
        size += 1 + 4;
      }
      if (Ih != 0F) {
        size += 1 + 4;
      }
      if (Oh != 0F) {
        size += 1 + 4;
      }
      if (Ou != 0F) {
        size += 1 + 4;
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(Viseme other) {
      if (other == null) {
        return;
      }
      if (other.Sil != 0F) {
        Sil = other.Sil;
      }
      if (other.Pp != 0F) {
        Pp = other.Pp;
      }
      if (other.Ff != 0F) {
        Ff = other.Ff;
      }
      if (other.Th != 0F) {
        Th = other.Th;
      }
      if (other.Dd != 0F) {
        Dd = other.Dd;
      }
      if (other.Kk != 0F) {
        Kk = other.Kk;
      }
      if (other.Ch != 0F) {
        Ch = other.Ch;
      }
      if (other.Ss != 0F) {
        Ss = other.Ss;
      }
      if (other.Nn != 0F) {
        Nn = other.Nn;
      }
      if (other.Rr != 0F) {
        Rr = other.Rr;
      }
      if (other.Aa != 0F) {
        Aa = other.Aa;
      }
      if (other.E != 0F) {
        E = other.E;
      }
      if (other.Ih != 0F) {
        Ih = other.Ih;
      }
      if (other.Oh != 0F) {
        Oh = other.Oh;
      }
      if (other.Ou != 0F) {
        Ou = other.Ou;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 13: {
            Sil = input.ReadFloat();
            break;
          }
          case 21: {
            Pp = input.ReadFloat();
            break;
          }
          case 29: {
            Ff = input.ReadFloat();
            break;
          }
          case 37: {
            Th = input.ReadFloat();
            break;
          }
          case 45: {
            Dd = input.ReadFloat();
            break;
          }
          case 53: {
            Kk = input.ReadFloat();
            break;
          }
          case 61: {
            Ch = input.ReadFloat();
            break;
          }
          case 69: {
            Ss = input.ReadFloat();
            break;
          }
          case 77: {
            Nn = input.ReadFloat();
            break;
          }
          case 85: {
            Rr = input.ReadFloat();
            break;
          }
          case 93: {
            Aa = input.ReadFloat();
            break;
          }
          case 101: {
            E = input.ReadFloat();
            break;
          }
          case 109: {
            Ih = input.ReadFloat();
            break;
          }
          case 117: {
            Oh = input.ReadFloat();
            break;
          }
          case 125: {
            Ou = input.ReadFloat();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[12]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public BlendShapesData(BlendShapesData other) : this() {
      blendshapeData_ = other.blendshapeData_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "blendshape_data" field.</summary>
    public const int BlendshapeDataFieldNumber = 1;
    private string blendshapeData_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string BlendshapeData {
      get { return blendshapeData_; }
      set {
        blendshapeData_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(BlendShapesData other) {
      if (other == null) {
        return;
      }
      if (other.BlendshapeData.Length != 0) {
        BlendshapeData = other.BlendshapeData;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            BlendshapeData = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[13]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public HelloRequest(HelloRequest other) : this() {
      name_ = other.name_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(HelloRequest other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[14]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public HelloResponse(HelloResponse other) : this() {
      message_ = other.message_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "message" field.</summary>
    public const int MessageFieldNumber = 1;
    private string message_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Message {
      get { return message_; }
      set {
        message_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Message.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Message);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(HelloResponse other) {
      if (other == null) {
        return;
      }
      if (other.Message.Length != 0) {
        Message = other.Message;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Message = input.ReadString();
            break;
          }
        }
      }
    }

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[15]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FeedbackRequest(FeedbackRequest other) : this() {
      interactionId_ = other.interactionId_;
      characterId_ = other.characterId_;
      sessionId_ = other.sessionId_;
      textFeedback_ = other.textFeedback_ != null ? other.textFeedback_.Clone() : null;
      userQuery_ = other.userQuery_;
      response_ = other.response_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "interaction_id" field.</summary>
    public const int InteractionIdFieldNumber = 1;
    private string interactionId_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string InteractionId {
      get { return interactionId_; }
      set {
        interactionId_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

    /// <summary>Field number for the "text_feedback" field.</summary>
    public const int TextFeedbackFieldNumber = 5;
    private global::Service.FeedbackRequest.Types.Feedback textFeedback_;
    /// <summary>
    /// Feedback for the Text Response.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Service.FeedbackRequest.Types.Feedback TextFeedback {
      get { return textFeedback_; }
      set {
        textFeedback_ = value;
      }
    }

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

    /// <summary>Field number for the "response" field.</summary>
    public const int ResponseFieldNumber = 7;
    private string response_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Response {
      get { return response_; }
      set {
        response_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(FeedbackRequest other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (InteractionId != other.InteractionId) return false;
      if (CharacterId != other.CharacterId) return false;
      if (SessionId != other.SessionId) return false;
      if (!object.Equals(TextFeedback, other.TextFeedback)) return false;
      if (UserQuery != other.UserQuery) return false;
      if (Response != other.Response) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (InteractionId.Length != 0) hash ^= InteractionId.GetHashCode();
      if (CharacterId.Length != 0) hash ^= CharacterId.GetHashCode();
      if (SessionId.Length != 0) hash ^= SessionId.GetHashCode();
      if (textFeedback_ != null) hash ^= TextFeedback.GetHashCode();
      if (UserQuery.Length != 0) hash ^= UserQuery.GetHashCode();
      if (Response.Length != 0) hash ^= Response.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.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 (InteractionId.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(InteractionId);
      }
      if (CharacterId.Length != 0) {
        output.WriteRawTag(18);
        output.WriteString(CharacterId);
      }
      if (SessionId.Length != 0) {
        output.WriteRawTag(26);
        output.WriteString(SessionId);
      }
      if (textFeedback_ != null) {
        output.WriteRawTag(42);
        output.WriteMessage(TextFeedback);
      }
      if (UserQuery.Length != 0) {
        output.WriteRawTag(50);
        output.WriteString(UserQuery);
      }
      if (Response.Length != 0) {
        output.WriteRawTag(58);
        output.WriteString(Response);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (InteractionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(InteractionId);
      }
      if (CharacterId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(CharacterId);
      }
      if (SessionId.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(SessionId);
      }
      if (textFeedback_ != null) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(TextFeedback);
      }
      if (UserQuery.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(UserQuery);
      }
      if (Response.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Response);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FeedbackRequest other) {
      if (other == null) {
        return;
      }
      if (other.InteractionId.Length != 0) {
        InteractionId = other.InteractionId;
      }
      if (other.CharacterId.Length != 0) {
        CharacterId = other.CharacterId;
      }
      if (other.SessionId.Length != 0) {
        SessionId = other.SessionId;
      }
      if (other.textFeedback_ != null) {
        if (textFeedback_ == null) {
          TextFeedback = new global::Service.FeedbackRequest.Types.Feedback();
        }
        TextFeedback.MergeFrom(other.TextFeedback);
      }
      if (other.UserQuery.Length != 0) {
        UserQuery = other.UserQuery;
      }
      if (other.Response.Length != 0) {
        Response = other.Response;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            InteractionId = input.ReadString();
            break;
          }
          case 18: {
            CharacterId = input.ReadString();
            break;
          }
          case 26: {
            SessionId = input.ReadString();
            break;
          }
          case 42: {
            if (textFeedback_ == null) {
              TextFeedback = new global::Service.FeedbackRequest.Types.Feedback();
            }
            input.ReadMessage(TextFeedback);
            break;
          }
          case 50: {
            UserQuery = input.ReadString();
            break;
          }
          case 58: {
            Response = input.ReadString();
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the FeedbackRequest message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      public sealed partial class Feedback : pb::IMessage<Feedback> {
        private static readonly pb::MessageParser<Feedback> _parser = new pb::MessageParser<Feedback>(() => new Feedback());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<Feedback> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Service.FeedbackRequest.Descriptor.NestedTypes[0]; }
        }

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

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

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public Feedback(Feedback other) : this() {
          thumbsUp_ = other.thumbsUp_;
          feedbackText_ = other.feedbackText_;
          tags_ = other.tags_.Clone();
          isTestCase_ = other.isTestCase_;
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

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

        /// <summary>Field number for the "thumbs_up" field.</summary>
        public const int ThumbsUpFieldNumber = 1;
        private bool thumbsUp_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool ThumbsUp {
          get { return thumbsUp_; }
          set {
            thumbsUp_ = value;
          }
        }

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

        /// <summary>Field number for the "tags" field.</summary>
        public const int TagsFieldNumber = 3;
        private static readonly pb::FieldCodec<string> _repeated_tags_codec
            = pb::FieldCodec.ForString(26);
        private readonly pbc::RepeatedField<string> tags_ = new pbc::RepeatedField<string>();
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<string> Tags {
          get { return tags_; }
        }

        /// <summary>Field number for the "is_test_case" field.</summary>
        public const int IsTestCaseFieldNumber = 4;
        private bool isTestCase_;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool IsTestCase {
          get { return isTestCase_; }
          set {
            isTestCase_ = value;
          }
        }

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

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(Feedback other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if (ThumbsUp != other.ThumbsUp) return false;
          if (FeedbackText != other.FeedbackText) return false;
          if(!tags_.Equals(other.tags_)) return false;
          if (IsTestCase != other.IsTestCase) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          if (ThumbsUp != false) hash ^= ThumbsUp.GetHashCode();
          if (FeedbackText.Length != 0) hash ^= FeedbackText.GetHashCode();
          hash ^= tags_.GetHashCode();
          if (IsTestCase != false) hash ^= IsTestCase.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.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 (ThumbsUp != false) {
            output.WriteRawTag(8);
            output.WriteBool(ThumbsUp);
          }
          if (FeedbackText.Length != 0) {
            output.WriteRawTag(18);
            output.WriteString(FeedbackText);
          }
          tags_.WriteTo(output, _repeated_tags_codec);
          if (IsTestCase != false) {
            output.WriteRawTag(32);
            output.WriteBool(IsTestCase);
          }
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          if (ThumbsUp != false) {
            size += 1 + 1;
          }
          if (FeedbackText.Length != 0) {
            size += 1 + pb::CodedOutputStream.ComputeStringSize(FeedbackText);
          }
          size += tags_.CalculateSize(_repeated_tags_codec);
          if (IsTestCase != false) {
            size += 1 + 1;
          }
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(Feedback other) {
          if (other == null) {
            return;
          }
          if (other.ThumbsUp != false) {
            ThumbsUp = other.ThumbsUp;
          }
          if (other.FeedbackText.Length != 0) {
            FeedbackText = other.FeedbackText;
          }
          tags_.Add(other.tags_);
          if (other.IsTestCase != false) {
            IsTestCase = other.IsTestCase;
          }
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 8: {
                ThumbsUp = input.ReadBool();
                break;
              }
              case 18: {
                FeedbackText = input.ReadString();
                break;
              }
              case 26: {
                tags_.AddEntriesFrom(input, _repeated_tags_codec);
                break;
              }
              case 32: {
                IsTestCase = input.ReadBool();
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Service.ServiceReflection.Descriptor.MessageTypes[16]; }
    }

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

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

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public FeedbackResponse(FeedbackResponse other) : this() {
      feedbackResponse_ = other.feedbackResponse_;
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

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

    /// <summary>Field number for the "feedback_response" field.</summary>
    public const int FeedbackResponse_FieldNumber = 1;
    private string feedbackResponse_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string FeedbackResponse_ {
      get { return feedbackResponse_; }
      set {
        feedbackResponse_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

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

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

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

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

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(FeedbackResponse other) {
      if (other == null) {
        return;
      }
      if (other.FeedbackResponse_.Length != 0) {
        FeedbackResponse_ = other.FeedbackResponse_;
      }
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            FeedbackResponse_ = input.ReadString();
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
