// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: audit.proto

package com.cloudera.thunderhead.service.audit;

public final class AuditProto {
  private AuditProto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }

  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistry registry) {
    registerAllExtensions(
        (com.google.protobuf.ExtensionRegistryLite) registry);
  }
  public interface ArchivingConfigInfoOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ArchivingConfigInfo)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The storageLocation.
     */
    java.lang.String getStorageLocation();
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The bytes for storageLocation.
     */
    com.google.protobuf.ByteString
        getStorageLocationBytes();

    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The credentialName.
     */
    java.lang.String getCredentialName();
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The bytes for credentialName.
     */
    com.google.protobuf.ByteString
        getCredentialNameBytes();

    /**
     * <pre>
     * Flag to enable/disable the archiving process
     * </pre>
     *
     * <code>bool enabled = 3;</code>
     * @return The enabled.
     */
    boolean getEnabled();

    /**
     * <pre>
     * The region to work with when accessing the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The storageRegion.
     */
    java.lang.String getStorageRegion();
    /**
     * <pre>
     * The region to work with when accessing the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The bytes for storageRegion.
     */
    com.google.protobuf.ByteString
        getStorageRegionBytes();
  }
  /**
   * <pre>
   * Object for holding archiving configuration information for the audit service.
   * [API analog: ArchivingConfigInfo]
   * </pre>
   *
   * Protobuf type {@code audit.ArchivingConfigInfo}
   */
  public static final class ArchivingConfigInfo extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ArchivingConfigInfo)
      ArchivingConfigInfoOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArchivingConfigInfo.newBuilder() to construct.
    private ArchivingConfigInfo(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ArchivingConfigInfo() {
      storageLocation_ = "";
      credentialName_ = "";
      storageRegion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArchivingConfigInfo();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchivingConfigInfo_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchivingConfigInfo_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder.class);
    }

    public static final int STORAGELOCATION_FIELD_NUMBER = 1;
    private volatile java.lang.Object storageLocation_;
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The storageLocation.
     */
    @java.lang.Override
    public java.lang.String getStorageLocation() {
      java.lang.Object ref = storageLocation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        storageLocation_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The bytes for storageLocation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageLocationBytes() {
      java.lang.Object ref = storageLocation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageLocation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CREDENTIALNAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object credentialName_;
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The credentialName.
     */
    @java.lang.Override
    public java.lang.String getCredentialName() {
      java.lang.Object ref = credentialName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        credentialName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The bytes for credentialName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCredentialNameBytes() {
      java.lang.Object ref = credentialName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        credentialName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENABLED_FIELD_NUMBER = 3;
    private boolean enabled_;
    /**
     * <pre>
     * Flag to enable/disable the archiving process
     * </pre>
     *
     * <code>bool enabled = 3;</code>
     * @return The enabled.
     */
    @java.lang.Override
    public boolean getEnabled() {
      return enabled_;
    }

    public static final int STORAGEREGION_FIELD_NUMBER = 4;
    private volatile java.lang.Object storageRegion_;
    /**
     * <pre>
     * The region to work with when accessing the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The storageRegion.
     */
    @java.lang.Override
    public java.lang.String getStorageRegion() {
      java.lang.Object ref = storageRegion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        storageRegion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The region to work with when accessing the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The bytes for storageRegion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageRegionBytes() {
      java.lang.Object ref = storageRegion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageRegion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageLocation_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storageLocation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(credentialName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, credentialName_);
      }
      if (enabled_ != false) {
        output.writeBool(3, enabled_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageRegion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, storageRegion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageLocation_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storageLocation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(credentialName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, credentialName_);
      }
      if (enabled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, enabled_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageRegion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, storageRegion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo other = (com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo) obj;

      if (!getStorageLocation()
          .equals(other.getStorageLocation())) return false;
      if (!getCredentialName()
          .equals(other.getCredentialName())) return false;
      if (getEnabled()
          != other.getEnabled()) return false;
      if (!getStorageRegion()
          .equals(other.getStorageRegion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STORAGELOCATION_FIELD_NUMBER;
      hash = (53 * hash) + getStorageLocation().hashCode();
      hash = (37 * hash) + CREDENTIALNAME_FIELD_NUMBER;
      hash = (53 * hash) + getCredentialName().hashCode();
      hash = (37 * hash) + ENABLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getEnabled());
      hash = (37 * hash) + STORAGEREGION_FIELD_NUMBER;
      hash = (53 * hash) + getStorageRegion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Object for holding archiving configuration information for the audit service.
     * [API analog: ArchivingConfigInfo]
     * </pre>
     *
     * Protobuf type {@code audit.ArchivingConfigInfo}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ArchivingConfigInfo)
        com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchivingConfigInfo_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchivingConfigInfo_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        storageLocation_ = "";

        credentialName_ = "";

        enabled_ = false;

        storageRegion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchivingConfigInfo_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo result = new com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo(this);
        result.storageLocation_ = storageLocation_;
        result.credentialName_ = credentialName_;
        result.enabled_ = enabled_;
        result.storageRegion_ = storageRegion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance()) return this;
        if (!other.getStorageLocation().isEmpty()) {
          storageLocation_ = other.storageLocation_;
          onChanged();
        }
        if (!other.getCredentialName().isEmpty()) {
          credentialName_ = other.credentialName_;
          onChanged();
        }
        if (other.getEnabled() != false) {
          setEnabled(other.getEnabled());
        }
        if (!other.getStorageRegion().isEmpty()) {
          storageRegion_ = other.storageRegion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                storageLocation_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                credentialName_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 24: {
                enabled_ = input.readBool();

                break;
              } // case 24
              case 34: {
                storageRegion_ = input.readStringRequireUtf8();

                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object storageLocation_ = "";
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return The storageLocation.
       */
      public java.lang.String getStorageLocation() {
        java.lang.Object ref = storageLocation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          storageLocation_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return The bytes for storageLocation.
       */
      public com.google.protobuf.ByteString
          getStorageLocationBytes() {
        java.lang.Object ref = storageLocation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageLocation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @param value The storageLocation to set.
       * @return This builder for chaining.
       */
      public Builder setStorageLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        storageLocation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageLocation() {
        
        storageLocation_ = getDefaultInstance().getStorageLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @param value The bytes for storageLocation to set.
       * @return This builder for chaining.
       */
      public Builder setStorageLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        storageLocation_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object credentialName_ = "";
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return The credentialName.
       */
      public java.lang.String getCredentialName() {
        java.lang.Object ref = credentialName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          credentialName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return The bytes for credentialName.
       */
      public com.google.protobuf.ByteString
          getCredentialNameBytes() {
        java.lang.Object ref = credentialName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          credentialName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @param value The credentialName to set.
       * @return This builder for chaining.
       */
      public Builder setCredentialName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        credentialName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCredentialName() {
        
        credentialName_ = getDefaultInstance().getCredentialName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @param value The bytes for credentialName to set.
       * @return This builder for chaining.
       */
      public Builder setCredentialNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        credentialName_ = value;
        onChanged();
        return this;
      }

      private boolean enabled_ ;
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @return The enabled.
       */
      @java.lang.Override
      public boolean getEnabled() {
        return enabled_;
      }
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @param value The enabled to set.
       * @return This builder for chaining.
       */
      public Builder setEnabled(boolean value) {
        
        enabled_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnabled() {
        
        enabled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object storageRegion_ = "";
      /**
       * <pre>
       * The region to work with when accessing the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return The storageRegion.
       */
      public java.lang.String getStorageRegion() {
        java.lang.Object ref = storageRegion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          storageRegion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The region to work with when accessing the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return The bytes for storageRegion.
       */
      public com.google.protobuf.ByteString
          getStorageRegionBytes() {
        java.lang.Object ref = storageRegion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageRegion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The region to work with when accessing the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @param value The storageRegion to set.
       * @return This builder for chaining.
       */
      public Builder setStorageRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        storageRegion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The region to work with when accessing the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageRegion() {
        
        storageRegion_ = getDefaultInstance().getStorageRegion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The region to work with when accessing the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @param value The bytes for storageRegion to set.
       * @return This builder for chaining.
       */
      public Builder setStorageRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        storageRegion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ArchivingConfigInfo)
    }

    // @@protoc_insertion_point(class_scope:audit.ArchivingConfigInfo)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ArchivingConfigInfo>
        PARSER = new com.google.protobuf.AbstractParser<ArchivingConfigInfo>() {
      @java.lang.Override
      public ArchivingConfigInfo parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ArchivingConfigInfo> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ArchivingConfigInfo> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigureArchivingRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ConfigureArchivingRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The storageLocation.
     */
    java.lang.String getStorageLocation();
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The bytes for storageLocation.
     */
    com.google.protobuf.ByteString
        getStorageLocationBytes();

    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The credentialName.
     */
    java.lang.String getCredentialName();
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The bytes for credentialName.
     */
    com.google.protobuf.ByteString
        getCredentialNameBytes();

    /**
     * <pre>
     * Flag to enable/disable the archiving process
     * </pre>
     *
     * <code>bool enabled = 3;</code>
     * @return The enabled.
     */
    boolean getEnabled();

    /**
     * <pre>
     * The region for the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The storageRegion.
     */
    java.lang.String getStorageRegion();
    /**
     * <pre>
     * The region for the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The bytes for storageRegion.
     */
    com.google.protobuf.ByteString
        getStorageRegionBytes();

    /**
     * <pre>
     * Whether to only verify the configuration, and not update it.
     * </pre>
     *
     * <code>bool verifyOnly = 5;</code>
     * @return The verifyOnly.
     */
    boolean getVerifyOnly();
  }
  /**
   * <pre>
   * Request object for the ConfigureArchiving method.
   * [API analog: ConfigureArchivingRequest]
   * </pre>
   *
   * Protobuf type {@code audit.ConfigureArchivingRequest}
   */
  public static final class ConfigureArchivingRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ConfigureArchivingRequest)
      ConfigureArchivingRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigureArchivingRequest.newBuilder() to construct.
    private ConfigureArchivingRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigureArchivingRequest() {
      storageLocation_ = "";
      credentialName_ = "";
      storageRegion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigureArchivingRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.Builder.class);
    }

    public static final int STORAGELOCATION_FIELD_NUMBER = 1;
    private volatile java.lang.Object storageLocation_;
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The storageLocation.
     */
    @java.lang.Override
    public java.lang.String getStorageLocation() {
      java.lang.Object ref = storageLocation_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        storageLocation_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The destination for the logs, e.g. S3 bucket name
     * </pre>
     *
     * <code>string storageLocation = 1;</code>
     * @return The bytes for storageLocation.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageLocationBytes() {
      java.lang.Object ref = storageLocation_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageLocation_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CREDENTIALNAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object credentialName_;
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The credentialName.
     */
    @java.lang.Override
    public java.lang.String getCredentialName() {
      java.lang.Object ref = credentialName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        credentialName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The credential name or CRN to use
     * </pre>
     *
     * <code>string credentialName = 2;</code>
     * @return The bytes for credentialName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCredentialNameBytes() {
      java.lang.Object ref = credentialName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        credentialName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ENABLED_FIELD_NUMBER = 3;
    private boolean enabled_;
    /**
     * <pre>
     * Flag to enable/disable the archiving process
     * </pre>
     *
     * <code>bool enabled = 3;</code>
     * @return The enabled.
     */
    @java.lang.Override
    public boolean getEnabled() {
      return enabled_;
    }

    public static final int STORAGEREGION_FIELD_NUMBER = 4;
    private volatile java.lang.Object storageRegion_;
    /**
     * <pre>
     * The region for the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The storageRegion.
     */
    @java.lang.Override
    public java.lang.String getStorageRegion() {
      java.lang.Object ref = storageRegion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        storageRegion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The region for the logs, e.g. S3 region
     * </pre>
     *
     * <code>string storageRegion = 4;</code>
     * @return The bytes for storageRegion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getStorageRegionBytes() {
      java.lang.Object ref = storageRegion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        storageRegion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int VERIFYONLY_FIELD_NUMBER = 5;
    private boolean verifyOnly_;
    /**
     * <pre>
     * Whether to only verify the configuration, and not update it.
     * </pre>
     *
     * <code>bool verifyOnly = 5;</code>
     * @return The verifyOnly.
     */
    @java.lang.Override
    public boolean getVerifyOnly() {
      return verifyOnly_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageLocation_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, storageLocation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(credentialName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, credentialName_);
      }
      if (enabled_ != false) {
        output.writeBool(3, enabled_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageRegion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, storageRegion_);
      }
      if (verifyOnly_ != false) {
        output.writeBool(5, verifyOnly_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageLocation_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, storageLocation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(credentialName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, credentialName_);
      }
      if (enabled_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, enabled_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(storageRegion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, storageRegion_);
      }
      if (verifyOnly_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(5, verifyOnly_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest) obj;

      if (!getStorageLocation()
          .equals(other.getStorageLocation())) return false;
      if (!getCredentialName()
          .equals(other.getCredentialName())) return false;
      if (getEnabled()
          != other.getEnabled()) return false;
      if (!getStorageRegion()
          .equals(other.getStorageRegion())) return false;
      if (getVerifyOnly()
          != other.getVerifyOnly()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + STORAGELOCATION_FIELD_NUMBER;
      hash = (53 * hash) + getStorageLocation().hashCode();
      hash = (37 * hash) + CREDENTIALNAME_FIELD_NUMBER;
      hash = (53 * hash) + getCredentialName().hashCode();
      hash = (37 * hash) + ENABLED_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getEnabled());
      hash = (37 * hash) + STORAGEREGION_FIELD_NUMBER;
      hash = (53 * hash) + getStorageRegion().hashCode();
      hash = (37 * hash) + VERIFYONLY_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getVerifyOnly());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request object for the ConfigureArchiving method.
     * [API analog: ConfigureArchivingRequest]
     * </pre>
     *
     * Protobuf type {@code audit.ConfigureArchivingRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ConfigureArchivingRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        storageLocation_ = "";

        credentialName_ = "";

        enabled_ = false;

        storageRegion_ = "";

        verifyOnly_ = false;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest(this);
        result.storageLocation_ = storageLocation_;
        result.credentialName_ = credentialName_;
        result.enabled_ = enabled_;
        result.storageRegion_ = storageRegion_;
        result.verifyOnly_ = verifyOnly_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest.getDefaultInstance()) return this;
        if (!other.getStorageLocation().isEmpty()) {
          storageLocation_ = other.storageLocation_;
          onChanged();
        }
        if (!other.getCredentialName().isEmpty()) {
          credentialName_ = other.credentialName_;
          onChanged();
        }
        if (other.getEnabled() != false) {
          setEnabled(other.getEnabled());
        }
        if (!other.getStorageRegion().isEmpty()) {
          storageRegion_ = other.storageRegion_;
          onChanged();
        }
        if (other.getVerifyOnly() != false) {
          setVerifyOnly(other.getVerifyOnly());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                storageLocation_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                credentialName_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 24: {
                enabled_ = input.readBool();

                break;
              } // case 24
              case 34: {
                storageRegion_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 40: {
                verifyOnly_ = input.readBool();

                break;
              } // case 40
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object storageLocation_ = "";
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return The storageLocation.
       */
      public java.lang.String getStorageLocation() {
        java.lang.Object ref = storageLocation_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          storageLocation_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return The bytes for storageLocation.
       */
      public com.google.protobuf.ByteString
          getStorageLocationBytes() {
        java.lang.Object ref = storageLocation_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageLocation_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @param value The storageLocation to set.
       * @return This builder for chaining.
       */
      public Builder setStorageLocation(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        storageLocation_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageLocation() {
        
        storageLocation_ = getDefaultInstance().getStorageLocation();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The destination for the logs, e.g. S3 bucket name
       * </pre>
       *
       * <code>string storageLocation = 1;</code>
       * @param value The bytes for storageLocation to set.
       * @return This builder for chaining.
       */
      public Builder setStorageLocationBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        storageLocation_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object credentialName_ = "";
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return The credentialName.
       */
      public java.lang.String getCredentialName() {
        java.lang.Object ref = credentialName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          credentialName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return The bytes for credentialName.
       */
      public com.google.protobuf.ByteString
          getCredentialNameBytes() {
        java.lang.Object ref = credentialName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          credentialName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @param value The credentialName to set.
       * @return This builder for chaining.
       */
      public Builder setCredentialName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        credentialName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearCredentialName() {
        
        credentialName_ = getDefaultInstance().getCredentialName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The credential name or CRN to use
       * </pre>
       *
       * <code>string credentialName = 2;</code>
       * @param value The bytes for credentialName to set.
       * @return This builder for chaining.
       */
      public Builder setCredentialNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        credentialName_ = value;
        onChanged();
        return this;
      }

      private boolean enabled_ ;
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @return The enabled.
       */
      @java.lang.Override
      public boolean getEnabled() {
        return enabled_;
      }
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @param value The enabled to set.
       * @return This builder for chaining.
       */
      public Builder setEnabled(boolean value) {
        
        enabled_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Flag to enable/disable the archiving process
       * </pre>
       *
       * <code>bool enabled = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEnabled() {
        
        enabled_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object storageRegion_ = "";
      /**
       * <pre>
       * The region for the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return The storageRegion.
       */
      public java.lang.String getStorageRegion() {
        java.lang.Object ref = storageRegion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          storageRegion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The region for the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return The bytes for storageRegion.
       */
      public com.google.protobuf.ByteString
          getStorageRegionBytes() {
        java.lang.Object ref = storageRegion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          storageRegion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The region for the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @param value The storageRegion to set.
       * @return This builder for chaining.
       */
      public Builder setStorageRegion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        storageRegion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The region for the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearStorageRegion() {
        
        storageRegion_ = getDefaultInstance().getStorageRegion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The region for the logs, e.g. S3 region
       * </pre>
       *
       * <code>string storageRegion = 4;</code>
       * @param value The bytes for storageRegion to set.
       * @return This builder for chaining.
       */
      public Builder setStorageRegionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        storageRegion_ = value;
        onChanged();
        return this;
      }

      private boolean verifyOnly_ ;
      /**
       * <pre>
       * Whether to only verify the configuration, and not update it.
       * </pre>
       *
       * <code>bool verifyOnly = 5;</code>
       * @return The verifyOnly.
       */
      @java.lang.Override
      public boolean getVerifyOnly() {
        return verifyOnly_;
      }
      /**
       * <pre>
       * Whether to only verify the configuration, and not update it.
       * </pre>
       *
       * <code>bool verifyOnly = 5;</code>
       * @param value The verifyOnly to set.
       * @return This builder for chaining.
       */
      public Builder setVerifyOnly(boolean value) {
        
        verifyOnly_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether to only verify the configuration, and not update it.
       * </pre>
       *
       * <code>bool verifyOnly = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearVerifyOnly() {
        
        verifyOnly_ = false;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ConfigureArchivingRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.ConfigureArchivingRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConfigureArchivingRequest>
        PARSER = new com.google.protobuf.AbstractParser<ConfigureArchivingRequest>() {
      @java.lang.Override
      public ConfigureArchivingRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ConfigureArchivingRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConfigureArchivingRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ConfigureArchivingResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ConfigureArchivingResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return Whether the configuration field is set.
     */
    boolean hasConfiguration();
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return The configuration.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration();
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder();
  }
  /**
   * <pre>
   * Response object for the ConfigureArchiving method.
   * [API analog: ConfigureArchivingResponse]
   * </pre>
   *
   * Protobuf type {@code audit.ConfigureArchivingResponse}
   */
  public static final class ConfigureArchivingResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ConfigureArchivingResponse)
      ConfigureArchivingResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ConfigureArchivingResponse.newBuilder() to construct.
    private ConfigureArchivingResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ConfigureArchivingResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ConfigureArchivingResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.Builder.class);
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo configuration_;
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return Whether the configuration field is set.
     */
    @java.lang.Override
    public boolean hasConfiguration() {
      return configuration_ != null;
    }
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return The configuration.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration() {
      return configuration_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
    }
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder() {
      return getConfiguration();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (configuration_ != null) {
        output.writeMessage(1, getConfiguration());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (configuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConfiguration());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse) obj;

      if (hasConfiguration() != other.hasConfiguration()) return false;
      if (hasConfiguration()) {
        if (!getConfiguration()
            .equals(other.getConfiguration())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasConfiguration()) {
        hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
        hash = (53 * hash) + getConfiguration().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response object for the ConfigureArchiving method.
     * [API analog: ConfigureArchivingResponse]
     * </pre>
     *
     * Protobuf type {@code audit.ConfigureArchivingResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ConfigureArchivingResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (configurationBuilder_ == null) {
          configuration_ = null;
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ConfigureArchivingResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse(this);
        if (configurationBuilder_ == null) {
          result.configuration_ = configuration_;
        } else {
          result.configuration_ = configurationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse.getDefaultInstance()) return this;
        if (other.hasConfiguration()) {
          mergeConfiguration(other.getConfiguration());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getConfigurationFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo configuration_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder> configurationBuilder_;
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       * @return Whether the configuration field is set.
       */
      public boolean hasConfiguration() {
        return configurationBuilder_ != null || configuration_ != null;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       * @return The configuration.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration() {
        if (configurationBuilder_ == null) {
          return configuration_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
        } else {
          return configurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder setConfiguration(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configuration_ = value;
          onChanged();
        } else {
          configurationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder setConfiguration(
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          configuration_ = builderForValue.build();
          onChanged();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder mergeConfiguration(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo value) {
        if (configurationBuilder_ == null) {
          if (configuration_ != null) {
            configuration_ =
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.newBuilder(configuration_).mergeFrom(value).buildPartial();
          } else {
            configuration_ = value;
          }
          onChanged();
        } else {
          configurationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          configuration_ = null;
          onChanged();
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder getConfigurationBuilder() {
        
        onChanged();
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder() {
        if (configurationBuilder_ != null) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          return configuration_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
        }
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder>(
                  getConfiguration(),
                  getParentForChildren(),
                  isClean());
          configuration_ = null;
        }
        return configurationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ConfigureArchivingResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.ConfigureArchivingResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ConfigureArchivingResponse>
        PARSER = new com.google.protobuf.AbstractParser<ConfigureArchivingResponse>() {
      @java.lang.Override
      public ConfigureArchivingResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ConfigureArchivingResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ConfigureArchivingResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ConfigureArchivingResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetArchivingConfigRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.GetArchivingConfigRequest)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Request object for the GetArchivingConfig method.
   * [API analog: GetArchivingConfigRequest]
   * </pre>
   *
   * Protobuf type {@code audit.GetArchivingConfigRequest}
   */
  public static final class GetArchivingConfigRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.GetArchivingConfigRequest)
      GetArchivingConfigRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetArchivingConfigRequest.newBuilder() to construct.
    private GetArchivingConfigRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetArchivingConfigRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetArchivingConfigRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request object for the GetArchivingConfig method.
     * [API analog: GetArchivingConfigRequest]
     * </pre>
     *
     * Protobuf type {@code audit.GetArchivingConfigRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.GetArchivingConfigRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.GetArchivingConfigRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.GetArchivingConfigRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetArchivingConfigRequest>
        PARSER = new com.google.protobuf.AbstractParser<GetArchivingConfigRequest>() {
      @java.lang.Override
      public GetArchivingConfigRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetArchivingConfigRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetArchivingConfigRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GetArchivingConfigResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.GetArchivingConfigResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return Whether the configuration field is set.
     */
    boolean hasConfiguration();
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return The configuration.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration();
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder();
  }
  /**
   * <pre>
   * Response object for the GetArchivingConfig method.
   * [API analog: GetArchivingConfigResponse]
   * </pre>
   *
   * Protobuf type {@code audit.GetArchivingConfigResponse}
   */
  public static final class GetArchivingConfigResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.GetArchivingConfigResponse)
      GetArchivingConfigResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GetArchivingConfigResponse.newBuilder() to construct.
    private GetArchivingConfigResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private GetArchivingConfigResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new GetArchivingConfigResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.Builder.class);
    }

    public static final int CONFIGURATION_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo configuration_;
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return Whether the configuration field is set.
     */
    @java.lang.Override
    public boolean hasConfiguration() {
      return configuration_ != null;
    }
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     * @return The configuration.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration() {
      return configuration_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
    }
    /**
     * <pre>
     * The configuration information
     * </pre>
     *
     * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder() {
      return getConfiguration();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (configuration_ != null) {
        output.writeMessage(1, getConfiguration());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (configuration_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getConfiguration());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse) obj;

      if (hasConfiguration() != other.hasConfiguration()) return false;
      if (hasConfiguration()) {
        if (!getConfiguration()
            .equals(other.getConfiguration())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasConfiguration()) {
        hash = (37 * hash) + CONFIGURATION_FIELD_NUMBER;
        hash = (53 * hash) + getConfiguration().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response object for the GetArchivingConfig method.
     * [API analog: GetArchivingConfigResponse]
     * </pre>
     *
     * Protobuf type {@code audit.GetArchivingConfigResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.GetArchivingConfigResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (configurationBuilder_ == null) {
          configuration_ = null;
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_GetArchivingConfigResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse(this);
        if (configurationBuilder_ == null) {
          result.configuration_ = configuration_;
        } else {
          result.configuration_ = configurationBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse.getDefaultInstance()) return this;
        if (other.hasConfiguration()) {
          mergeConfiguration(other.getConfiguration());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getConfigurationFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo configuration_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder> configurationBuilder_;
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       * @return Whether the configuration field is set.
       */
      public boolean hasConfiguration() {
        return configurationBuilder_ != null || configuration_ != null;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       * @return The configuration.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo getConfiguration() {
        if (configurationBuilder_ == null) {
          return configuration_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
        } else {
          return configurationBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder setConfiguration(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo value) {
        if (configurationBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          configuration_ = value;
          onChanged();
        } else {
          configurationBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder setConfiguration(
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder builderForValue) {
        if (configurationBuilder_ == null) {
          configuration_ = builderForValue.build();
          onChanged();
        } else {
          configurationBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder mergeConfiguration(com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo value) {
        if (configurationBuilder_ == null) {
          if (configuration_ != null) {
            configuration_ =
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.newBuilder(configuration_).mergeFrom(value).buildPartial();
          } else {
            configuration_ = value;
          }
          onChanged();
        } else {
          configurationBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public Builder clearConfiguration() {
        if (configurationBuilder_ == null) {
          configuration_ = null;
          onChanged();
        } else {
          configuration_ = null;
          configurationBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder getConfigurationBuilder() {
        
        onChanged();
        return getConfigurationFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder getConfigurationOrBuilder() {
        if (configurationBuilder_ != null) {
          return configurationBuilder_.getMessageOrBuilder();
        } else {
          return configuration_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.getDefaultInstance() : configuration_;
        }
      }
      /**
       * <pre>
       * The configuration information
       * </pre>
       *
       * <code>.audit.ArchivingConfigInfo configuration = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder> 
          getConfigurationFieldBuilder() {
        if (configurationBuilder_ == null) {
          configurationBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfo.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchivingConfigInfoOrBuilder>(
                  getConfiguration(),
                  getParentForChildren(),
                  isClean());
          configuration_ = null;
        }
        return configurationBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.GetArchivingConfigResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.GetArchivingConfigResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<GetArchivingConfigResponse>
        PARSER = new com.google.protobuf.AbstractParser<GetArchivingConfigResponse>() {
      @java.lang.Override
      public GetArchivingConfigResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<GetArchivingConfigResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<GetArchivingConfigResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.GetArchivingConfigResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateAuditEventRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CreateAuditEventRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return Whether the auditEvent field is set.
     */
    boolean hasAuditEvent();
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return The auditEvent.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent();
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder();
  }
  /**
   * <pre>
   * Request to create a standalone audit event.
   * </pre>
   *
   * Protobuf type {@code audit.CreateAuditEventRequest}
   */
  public static final class CreateAuditEventRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CreateAuditEventRequest)
      CreateAuditEventRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CreateAuditEventRequest.newBuilder() to construct.
    private CreateAuditEventRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateAuditEventRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CreateAuditEventRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.Builder.class);
    }

    public static final int AUDITEVENT_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent auditEvent_;
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return Whether the auditEvent field is set.
     */
    @java.lang.Override
    public boolean hasAuditEvent() {
      return auditEvent_ != null;
    }
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return The auditEvent.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent() {
      return auditEvent_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
    }
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder() {
      return getAuditEvent();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (auditEvent_ != null) {
        output.writeMessage(1, getAuditEvent());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (auditEvent_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAuditEvent());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest) obj;

      if (hasAuditEvent() != other.hasAuditEvent()) return false;
      if (hasAuditEvent()) {
        if (!getAuditEvent()
            .equals(other.getAuditEvent())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAuditEvent()) {
        hash = (37 * hash) + AUDITEVENT_FIELD_NUMBER;
        hash = (53 * hash) + getAuditEvent().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request to create a standalone audit event.
     * </pre>
     *
     * Protobuf type {@code audit.CreateAuditEventRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CreateAuditEventRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (auditEventBuilder_ == null) {
          auditEvent_ = null;
        } else {
          auditEvent_ = null;
          auditEventBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest(this);
        if (auditEventBuilder_ == null) {
          result.auditEvent_ = auditEvent_;
        } else {
          result.auditEvent_ = auditEventBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest.getDefaultInstance()) return this;
        if (other.hasAuditEvent()) {
          mergeAuditEvent(other.getAuditEvent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAuditEventFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent auditEvent_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder> auditEventBuilder_;
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       * @return Whether the auditEvent field is set.
       */
      public boolean hasAuditEvent() {
        return auditEventBuilder_ != null || auditEvent_ != null;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       * @return The auditEvent.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent() {
        if (auditEventBuilder_ == null) {
          return auditEvent_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
        } else {
          return auditEventBuilder_.getMessage();
        }
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          auditEvent_ = value;
          onChanged();
        } else {
          auditEventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder builderForValue) {
        if (auditEventBuilder_ == null) {
          auditEvent_ = builderForValue.build();
          onChanged();
        } else {
          auditEventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder mergeAuditEvent(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (auditEvent_ != null) {
            auditEvent_ =
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.newBuilder(auditEvent_).mergeFrom(value).buildPartial();
          } else {
            auditEvent_ = value;
          }
          onChanged();
        } else {
          auditEventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder clearAuditEvent() {
        if (auditEventBuilder_ == null) {
          auditEvent_ = null;
          onChanged();
        } else {
          auditEvent_ = null;
          auditEventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder getAuditEventBuilder() {
        
        onChanged();
        return getAuditEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder() {
        if (auditEventBuilder_ != null) {
          return auditEventBuilder_.getMessageOrBuilder();
        } else {
          return auditEvent_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
        }
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder> 
          getAuditEventFieldBuilder() {
        if (auditEventBuilder_ == null) {
          auditEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder>(
                  getAuditEvent(),
                  getParentForChildren(),
                  isClean());
          auditEvent_ = null;
        }
        return auditEventBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CreateAuditEventRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.CreateAuditEventRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CreateAuditEventRequest>
        PARSER = new com.google.protobuf.AbstractParser<CreateAuditEventRequest>() {
      @java.lang.Override
      public CreateAuditEventRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CreateAuditEventRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CreateAuditEventRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateAuditEventResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CreateAuditEventResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Response from creating a standalone audit event.
   * </pre>
   *
   * Protobuf type {@code audit.CreateAuditEventResponse}
   */
  public static final class CreateAuditEventResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CreateAuditEventResponse)
      CreateAuditEventResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CreateAuditEventResponse.newBuilder() to construct.
    private CreateAuditEventResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateAuditEventResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CreateAuditEventResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response from creating a standalone audit event.
     * </pre>
     *
     * Protobuf type {@code audit.CreateAuditEventResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CreateAuditEventResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAuditEventResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CreateAuditEventResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.CreateAuditEventResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CreateAuditEventResponse>
        PARSER = new com.google.protobuf.AbstractParser<CreateAuditEventResponse>() {
      @java.lang.Override
      public CreateAuditEventResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CreateAuditEventResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CreateAuditEventResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CreateAuditEventResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateAttemptAuditEventRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CreateAttemptAuditEventRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return Whether the auditEvent field is set.
     */
    boolean hasAuditEvent();
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return The auditEvent.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent();
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder();
  }
  /**
   * <pre>
   * Request to create an attempt audit event.
   * </pre>
   *
   * Protobuf type {@code audit.CreateAttemptAuditEventRequest}
   */
  public static final class CreateAttemptAuditEventRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CreateAttemptAuditEventRequest)
      CreateAttemptAuditEventRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CreateAttemptAuditEventRequest.newBuilder() to construct.
    private CreateAttemptAuditEventRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateAttemptAuditEventRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CreateAttemptAuditEventRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.Builder.class);
    }

    public static final int AUDITEVENT_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent auditEvent_;
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return Whether the auditEvent field is set.
     */
    @java.lang.Override
    public boolean hasAuditEvent() {
      return auditEvent_ != null;
    }
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     * @return The auditEvent.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent() {
      return auditEvent_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
    }
    /**
     * <code>.audit.AuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder() {
      return getAuditEvent();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (auditEvent_ != null) {
        output.writeMessage(1, getAuditEvent());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (auditEvent_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getAuditEvent());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest) obj;

      if (hasAuditEvent() != other.hasAuditEvent()) return false;
      if (hasAuditEvent()) {
        if (!getAuditEvent()
            .equals(other.getAuditEvent())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasAuditEvent()) {
        hash = (37 * hash) + AUDITEVENT_FIELD_NUMBER;
        hash = (53 * hash) + getAuditEvent().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request to create an attempt audit event.
     * </pre>
     *
     * Protobuf type {@code audit.CreateAttemptAuditEventRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CreateAttemptAuditEventRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (auditEventBuilder_ == null) {
          auditEvent_ = null;
        } else {
          auditEvent_ = null;
          auditEventBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest(this);
        if (auditEventBuilder_ == null) {
          result.auditEvent_ = auditEvent_;
        } else {
          result.auditEvent_ = auditEventBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest.getDefaultInstance()) return this;
        if (other.hasAuditEvent()) {
          mergeAuditEvent(other.getAuditEvent());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getAuditEventFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent auditEvent_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder> auditEventBuilder_;
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       * @return Whether the auditEvent field is set.
       */
      public boolean hasAuditEvent() {
        return auditEventBuilder_ != null || auditEvent_ != null;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       * @return The auditEvent.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getAuditEvent() {
        if (auditEventBuilder_ == null) {
          return auditEvent_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
        } else {
          return auditEventBuilder_.getMessage();
        }
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          auditEvent_ = value;
          onChanged();
        } else {
          auditEventBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder builderForValue) {
        if (auditEventBuilder_ == null) {
          auditEvent_ = builderForValue.build();
          onChanged();
        } else {
          auditEventBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder mergeAuditEvent(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (auditEvent_ != null) {
            auditEvent_ =
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.newBuilder(auditEvent_).mergeFrom(value).buildPartial();
          } else {
            auditEvent_ = value;
          }
          onChanged();
        } else {
          auditEventBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public Builder clearAuditEvent() {
        if (auditEventBuilder_ == null) {
          auditEvent_ = null;
          onChanged();
        } else {
          auditEvent_ = null;
          auditEventBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder getAuditEventBuilder() {
        
        onChanged();
        return getAuditEventFieldBuilder().getBuilder();
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder getAuditEventOrBuilder() {
        if (auditEventBuilder_ != null) {
          return auditEventBuilder_.getMessageOrBuilder();
        } else {
          return auditEvent_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance() : auditEvent_;
        }
      }
      /**
       * <code>.audit.AuditEvent auditEvent = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder> 
          getAuditEventFieldBuilder() {
        if (auditEventBuilder_ == null) {
          auditEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder>(
                  getAuditEvent(),
                  getParentForChildren(),
                  isClean());
          auditEvent_ = null;
        }
        return auditEventBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CreateAttemptAuditEventRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.CreateAttemptAuditEventRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CreateAttemptAuditEventRequest>
        PARSER = new com.google.protobuf.AbstractParser<CreateAttemptAuditEventRequest>() {
      @java.lang.Override
      public CreateAttemptAuditEventRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CreateAttemptAuditEventRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CreateAttemptAuditEventRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CreateAttemptAuditEventResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CreateAttemptAuditEventResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Response from creating an attempt audit event.
   * </pre>
   *
   * Protobuf type {@code audit.CreateAttemptAuditEventResponse}
   */
  public static final class CreateAttemptAuditEventResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CreateAttemptAuditEventResponse)
      CreateAttemptAuditEventResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CreateAttemptAuditEventResponse.newBuilder() to construct.
    private CreateAttemptAuditEventResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CreateAttemptAuditEventResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CreateAttemptAuditEventResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response from creating an attempt audit event.
     * </pre>
     *
     * Protobuf type {@code audit.CreateAttemptAuditEventResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CreateAttemptAuditEventResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CreateAttemptAuditEventResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CreateAttemptAuditEventResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.CreateAttemptAuditEventResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CreateAttemptAuditEventResponse>
        PARSER = new com.google.protobuf.AbstractParser<CreateAttemptAuditEventResponse>() {
      @java.lang.Override
      public CreateAttemptAuditEventResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CreateAttemptAuditEventResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CreateAttemptAuditEventResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CreateAttemptAuditEventResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UpdateAttemptAuditEventWithResultRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.UpdateAttemptAuditEventWithResultRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     * @return Whether the result field is set.
     */
    boolean hasResult();
    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     * @return The result.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getResult();
    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder getResultOrBuilder();
  }
  /**
   * <pre>
   * Request to update an existing attempt audit event with result data.
   * </pre>
   *
   * Protobuf type {@code audit.UpdateAttemptAuditEventWithResultRequest}
   */
  public static final class UpdateAttemptAuditEventWithResultRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.UpdateAttemptAuditEventWithResultRequest)
      UpdateAttemptAuditEventWithResultRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UpdateAttemptAuditEventWithResultRequest.newBuilder() to construct.
    private UpdateAttemptAuditEventWithResultRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UpdateAttemptAuditEventWithResultRequest() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UpdateAttemptAuditEventWithResultRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.Builder.class);
    }

    public static final int RESULT_FIELD_NUMBER = 1;
    private com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult result_;
    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     * @return Whether the result field is set.
     */
    @java.lang.Override
    public boolean hasResult() {
      return result_ != null;
    }
    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     * @return The result.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getResult() {
      return result_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.getDefaultInstance() : result_;
    }
    /**
     * <code>.audit.AttemptAuditEventResult result = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder getResultOrBuilder() {
      return getResult();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (result_ != null) {
        output.writeMessage(1, getResult());
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (result_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, getResult());
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest) obj;

      if (hasResult() != other.hasResult()) return false;
      if (hasResult()) {
        if (!getResult()
            .equals(other.getResult())) return false;
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (hasResult()) {
        hash = (37 * hash) + RESULT_FIELD_NUMBER;
        hash = (53 * hash) + getResult().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request to update an existing attempt audit event with result data.
     * </pre>
     *
     * Protobuf type {@code audit.UpdateAttemptAuditEventWithResultRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.UpdateAttemptAuditEventWithResultRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (resultBuilder_ == null) {
          result_ = null;
        } else {
          result_ = null;
          resultBuilder_ = null;
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest(this);
        if (resultBuilder_ == null) {
          result.result_ = result_;
        } else {
          result.result_ = resultBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest.getDefaultInstance()) return this;
        if (other.hasResult()) {
          mergeResult(other.getResult());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                input.readMessage(
                    getResultFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult result_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder> resultBuilder_;
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       * @return Whether the result field is set.
       */
      public boolean hasResult() {
        return resultBuilder_ != null || result_ != null;
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       * @return The result.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getResult() {
        if (resultBuilder_ == null) {
          return result_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.getDefaultInstance() : result_;
        } else {
          return resultBuilder_.getMessage();
        }
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public Builder setResult(com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult value) {
        if (resultBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          result_ = value;
          onChanged();
        } else {
          resultBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public Builder setResult(
          com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder builderForValue) {
        if (resultBuilder_ == null) {
          result_ = builderForValue.build();
          onChanged();
        } else {
          resultBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public Builder mergeResult(com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult value) {
        if (resultBuilder_ == null) {
          if (result_ != null) {
            result_ =
              com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.newBuilder(result_).mergeFrom(value).buildPartial();
          } else {
            result_ = value;
          }
          onChanged();
        } else {
          resultBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public Builder clearResult() {
        if (resultBuilder_ == null) {
          result_ = null;
          onChanged();
        } else {
          result_ = null;
          resultBuilder_ = null;
        }

        return this;
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder getResultBuilder() {
        
        onChanged();
        return getResultFieldBuilder().getBuilder();
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder getResultOrBuilder() {
        if (resultBuilder_ != null) {
          return resultBuilder_.getMessageOrBuilder();
        } else {
          return result_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.getDefaultInstance() : result_;
        }
      }
      /**
       * <code>.audit.AttemptAuditEventResult result = 1;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder> 
          getResultFieldBuilder() {
        if (resultBuilder_ == null) {
          resultBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder>(
                  getResult(),
                  getParentForChildren(),
                  isClean());
          result_ = null;
        }
        return resultBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.UpdateAttemptAuditEventWithResultRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.UpdateAttemptAuditEventWithResultRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultRequest>
        PARSER = new com.google.protobuf.AbstractParser<UpdateAttemptAuditEventWithResultRequest>() {
      @java.lang.Override
      public UpdateAttemptAuditEventWithResultRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UpdateAttemptAuditEventWithResultResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.UpdateAttemptAuditEventWithResultResponse)
      com.google.protobuf.MessageOrBuilder {
  }
  /**
   * <pre>
   * Response from updating an existing attempt audit event with result data.
   * </pre>
   *
   * Protobuf type {@code audit.UpdateAttemptAuditEventWithResultResponse}
   */
  public static final class UpdateAttemptAuditEventWithResultResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.UpdateAttemptAuditEventWithResultResponse)
      UpdateAttemptAuditEventWithResultResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UpdateAttemptAuditEventWithResultResponse.newBuilder() to construct.
    private UpdateAttemptAuditEventWithResultResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private UpdateAttemptAuditEventWithResultResponse() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new UpdateAttemptAuditEventWithResultResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.Builder.class);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse) obj;

      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response from updating an existing attempt audit event with result data.
     * </pre>
     *
     * Protobuf type {@code audit.UpdateAttemptAuditEventWithResultResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.UpdateAttemptAuditEventWithResultResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse(this);
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse.getDefaultInstance()) return this;
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.UpdateAttemptAuditEventWithResultResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.UpdateAttemptAuditEventWithResultResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultResponse>
        PARSER = new com.google.protobuf.AbstractParser<UpdateAttemptAuditEventWithResultResponse>() {
      @java.lang.Override
      public UpdateAttemptAuditEventWithResultResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<UpdateAttemptAuditEventWithResultResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.UpdateAttemptAuditEventWithResultResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ListEventsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ListEventsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The beginning POSIX epoch time, in milliseconds, for the search range
     * (inclusive).
     * </pre>
     *
     * <code>int64 fromTimestamp = 1;</code>
     * @return The fromTimestamp.
     */
    long getFromTimestamp();

    /**
     * <pre>
     * The ending POSIX epoch time, in milliseconds, for the search range
     * (exclusive).
     * </pre>
     *
     * <code>int64 toTimestamp = 2;</code>
     * @return The toTimestamp.
     */
    long getToTimestamp();

    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    java.lang.String getAccountId();
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    com.google.protobuf.ByteString
        getAccountIdBytes();

    /**
     * <pre>
     * The page size.
     * </pre>
     *
     * <code>int32 pageSize = 4;</code>
     * @return The pageSize.
     */
    int getPageSize();

    /**
     * <pre>
     * The page token.
     * </pre>
     *
     * <code>string pageToken = 5;</code>
     * @return The pageToken.
     */
    java.lang.String getPageToken();
    /**
     * <pre>
     * The page token.
     * </pre>
     *
     * <code>string pageToken = 5;</code>
     * @return The bytes for pageToken.
     */
    com.google.protobuf.ByteString
        getPageTokenBytes();

    /**
     * <pre>
     * The optional request ID. If specified, only events associated with this
     * request ID are returned.
     * </pre>
     *
     * <code>string requestId = 6;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * The optional request ID. If specified, only events associated with this
     * request ID are returned.
     * </pre>
     *
     * <code>string requestId = 6;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * The optional source service. If specified, only events associated with this
     * event source are returned. The source must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 7;</code>
     * @return The eventSource.
     */
    java.lang.String getEventSource();
    /**
     * <pre>
     * The optional source service. If specified, only events associated with this
     * event source are returned. The source must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 7;</code>
     * @return The bytes for eventSource.
     */
    com.google.protobuf.ByteString
        getEventSourceBytes();
  }
  /**
   * <pre>
   * Request to list audit events. [API analog: ListEventsRequest]
   * </pre>
   *
   * Protobuf type {@code audit.ListEventsRequest}
   */
  public static final class ListEventsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ListEventsRequest)
      ListEventsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ListEventsRequest.newBuilder() to construct.
    private ListEventsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ListEventsRequest() {
      accountId_ = "";
      pageToken_ = "";
      requestId_ = "";
      eventSource_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ListEventsRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.Builder.class);
    }

    public static final int FROMTIMESTAMP_FIELD_NUMBER = 1;
    private long fromTimestamp_;
    /**
     * <pre>
     * The beginning POSIX epoch time, in milliseconds, for the search range
     * (inclusive).
     * </pre>
     *
     * <code>int64 fromTimestamp = 1;</code>
     * @return The fromTimestamp.
     */
    @java.lang.Override
    public long getFromTimestamp() {
      return fromTimestamp_;
    }

    public static final int TOTIMESTAMP_FIELD_NUMBER = 2;
    private long toTimestamp_;
    /**
     * <pre>
     * The ending POSIX epoch time, in milliseconds, for the search range
     * (exclusive).
     * </pre>
     *
     * <code>int64 toTimestamp = 2;</code>
     * @return The toTimestamp.
     */
    @java.lang.Override
    public long getToTimestamp() {
      return toTimestamp_;
    }

    public static final int ACCOUNTID_FIELD_NUMBER = 3;
    private volatile java.lang.Object accountId_;
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    @java.lang.Override
    public java.lang.String getAccountId() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        accountId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountIdBytes() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accountId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PAGESIZE_FIELD_NUMBER = 4;
    private int pageSize_;
    /**
     * <pre>
     * The page size.
     * </pre>
     *
     * <code>int32 pageSize = 4;</code>
     * @return The pageSize.
     */
    @java.lang.Override
    public int getPageSize() {
      return pageSize_;
    }

    public static final int PAGETOKEN_FIELD_NUMBER = 5;
    private volatile java.lang.Object pageToken_;
    /**
     * <pre>
     * The page token.
     * </pre>
     *
     * <code>string pageToken = 5;</code>
     * @return The pageToken.
     */
    @java.lang.Override
    public java.lang.String getPageToken() {
      java.lang.Object ref = pageToken_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        pageToken_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The page token.
     * </pre>
     *
     * <code>string pageToken = 5;</code>
     * @return The bytes for pageToken.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPageTokenBytes() {
      java.lang.Object ref = pageToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        pageToken_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUESTID_FIELD_NUMBER = 6;
    private volatile java.lang.Object requestId_;
    /**
     * <pre>
     * The optional request ID. If specified, only events associated with this
     * request ID are returned.
     * </pre>
     *
     * <code>string requestId = 6;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The optional request ID. If specified, only events associated with this
     * request ID are returned.
     * </pre>
     *
     * <code>string requestId = 6;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTSOURCE_FIELD_NUMBER = 7;
    private volatile java.lang.Object eventSource_;
    /**
     * <pre>
     * The optional source service. If specified, only events associated with this
     * event source are returned. The source must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 7;</code>
     * @return The eventSource.
     */
    @java.lang.Override
    public java.lang.String getEventSource() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventSource_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The optional source service. If specified, only events associated with this
     * event source are returned. The source must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 7;</code>
     * @return The bytes for eventSource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventSourceBytes() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventSource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (fromTimestamp_ != 0L) {
        output.writeInt64(1, fromTimestamp_);
      }
      if (toTimestamp_ != 0L) {
        output.writeInt64(2, toTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, accountId_);
      }
      if (pageSize_ != 0) {
        output.writeInt32(4, pageSize_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pageToken_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, pageToken_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, eventSource_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (fromTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, fromTimestamp_);
      }
      if (toTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, toTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, accountId_);
      }
      if (pageSize_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, pageSize_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(pageToken_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, pageToken_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, eventSource_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest) obj;

      if (getFromTimestamp()
          != other.getFromTimestamp()) return false;
      if (getToTimestamp()
          != other.getToTimestamp()) return false;
      if (!getAccountId()
          .equals(other.getAccountId())) return false;
      if (getPageSize()
          != other.getPageSize()) return false;
      if (!getPageToken()
          .equals(other.getPageToken())) return false;
      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (!getEventSource()
          .equals(other.getEventSource())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FROMTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFromTimestamp());
      hash = (37 * hash) + TOTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getToTimestamp());
      hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
      hash = (53 * hash) + getAccountId().hashCode();
      hash = (37 * hash) + PAGESIZE_FIELD_NUMBER;
      hash = (53 * hash) + getPageSize();
      hash = (37 * hash) + PAGETOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getPageToken().hashCode();
      hash = (37 * hash) + REQUESTID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      hash = (37 * hash) + EVENTSOURCE_FIELD_NUMBER;
      hash = (53 * hash) + getEventSource().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request to list audit events. [API analog: ListEventsRequest]
     * </pre>
     *
     * Protobuf type {@code audit.ListEventsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ListEventsRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        fromTimestamp_ = 0L;

        toTimestamp_ = 0L;

        accountId_ = "";

        pageSize_ = 0;

        pageToken_ = "";

        requestId_ = "";

        eventSource_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest(this);
        result.fromTimestamp_ = fromTimestamp_;
        result.toTimestamp_ = toTimestamp_;
        result.accountId_ = accountId_;
        result.pageSize_ = pageSize_;
        result.pageToken_ = pageToken_;
        result.requestId_ = requestId_;
        result.eventSource_ = eventSource_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest.getDefaultInstance()) return this;
        if (other.getFromTimestamp() != 0L) {
          setFromTimestamp(other.getFromTimestamp());
        }
        if (other.getToTimestamp() != 0L) {
          setToTimestamp(other.getToTimestamp());
        }
        if (!other.getAccountId().isEmpty()) {
          accountId_ = other.accountId_;
          onChanged();
        }
        if (other.getPageSize() != 0) {
          setPageSize(other.getPageSize());
        }
        if (!other.getPageToken().isEmpty()) {
          pageToken_ = other.pageToken_;
          onChanged();
        }
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          onChanged();
        }
        if (!other.getEventSource().isEmpty()) {
          eventSource_ = other.eventSource_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                fromTimestamp_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                toTimestamp_ = input.readInt64();

                break;
              } // case 16
              case 26: {
                accountId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                pageSize_ = input.readInt32();

                break;
              } // case 32
              case 42: {
                pageToken_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                requestId_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 58: {
                eventSource_ = input.readStringRequireUtf8();

                break;
              } // case 58
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long fromTimestamp_ ;
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range
       * (inclusive).
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @return The fromTimestamp.
       */
      @java.lang.Override
      public long getFromTimestamp() {
        return fromTimestamp_;
      }
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range
       * (inclusive).
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @param value The fromTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setFromTimestamp(long value) {
        
        fromTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range
       * (inclusive).
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFromTimestamp() {
        
        fromTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private long toTimestamp_ ;
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range
       * (exclusive).
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @return The toTimestamp.
       */
      @java.lang.Override
      public long getToTimestamp() {
        return toTimestamp_;
      }
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range
       * (exclusive).
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @param value The toTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setToTimestamp(long value) {
        
        toTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range
       * (exclusive).
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearToTimestamp() {
        
        toTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object accountId_ = "";
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The accountId.
       */
      public java.lang.String getAccountId() {
        java.lang.Object ref = accountId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accountId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The bytes for accountId.
       */
      public com.google.protobuf.ByteString
          getAccountIdBytes() {
        java.lang.Object ref = accountId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accountId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountId() {
        
        accountId_ = getDefaultInstance().getAccountId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The bytes for accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accountId_ = value;
        onChanged();
        return this;
      }

      private int pageSize_ ;
      /**
       * <pre>
       * The page size.
       * </pre>
       *
       * <code>int32 pageSize = 4;</code>
       * @return The pageSize.
       */
      @java.lang.Override
      public int getPageSize() {
        return pageSize_;
      }
      /**
       * <pre>
       * The page size.
       * </pre>
       *
       * <code>int32 pageSize = 4;</code>
       * @param value The pageSize to set.
       * @return This builder for chaining.
       */
      public Builder setPageSize(int value) {
        
        pageSize_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The page size.
       * </pre>
       *
       * <code>int32 pageSize = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPageSize() {
        
        pageSize_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object pageToken_ = "";
      /**
       * <pre>
       * The page token.
       * </pre>
       *
       * <code>string pageToken = 5;</code>
       * @return The pageToken.
       */
      public java.lang.String getPageToken() {
        java.lang.Object ref = pageToken_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          pageToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The page token.
       * </pre>
       *
       * <code>string pageToken = 5;</code>
       * @return The bytes for pageToken.
       */
      public com.google.protobuf.ByteString
          getPageTokenBytes() {
        java.lang.Object ref = pageToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          pageToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The page token.
       * </pre>
       *
       * <code>string pageToken = 5;</code>
       * @param value The pageToken to set.
       * @return This builder for chaining.
       */
      public Builder setPageToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pageToken_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The page token.
       * </pre>
       *
       * <code>string pageToken = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearPageToken() {
        
        pageToken_ = getDefaultInstance().getPageToken();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The page token.
       * </pre>
       *
       * <code>string pageToken = 5;</code>
       * @param value The bytes for pageToken to set.
       * @return This builder for chaining.
       */
      public Builder setPageTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        pageToken_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * The optional request ID. If specified, only events associated with this
       * request ID are returned.
       * </pre>
       *
       * <code>string requestId = 6;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The optional request ID. If specified, only events associated with this
       * request ID are returned.
       * </pre>
       *
       * <code>string requestId = 6;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The optional request ID. If specified, only events associated with this
       * request ID are returned.
       * </pre>
       *
       * <code>string requestId = 6;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        requestId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The optional request ID. If specified, only events associated with this
       * request ID are returned.
       * </pre>
       *
       * <code>string requestId = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        
        requestId_ = getDefaultInstance().getRequestId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The optional request ID. If specified, only events associated with this
       * request ID are returned.
       * </pre>
       *
       * <code>string requestId = 6;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        requestId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventSource_ = "";
      /**
       * <pre>
       * The optional source service. If specified, only events associated with this
       * event source are returned. The source must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 7;</code>
       * @return The eventSource.
       */
      public java.lang.String getEventSource() {
        java.lang.Object ref = eventSource_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventSource_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The optional source service. If specified, only events associated with this
       * event source are returned. The source must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 7;</code>
       * @return The bytes for eventSource.
       */
      public com.google.protobuf.ByteString
          getEventSourceBytes() {
        java.lang.Object ref = eventSource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventSource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The optional source service. If specified, only events associated with this
       * event source are returned. The source must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 7;</code>
       * @param value The eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSource(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventSource_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The optional source service. If specified, only events associated with this
       * event source are returned. The source must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventSource() {
        
        eventSource_ = getDefaultInstance().getEventSource();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The optional source service. If specified, only events associated with this
       * event source are returned. The source must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 7;</code>
       * @param value The bytes for eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventSource_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ListEventsRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.ListEventsRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ListEventsRequest>
        PARSER = new com.google.protobuf.AbstractParser<ListEventsRequest>() {
      @java.lang.Override
      public ListEventsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ListEventsRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ListEventsRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ListEventsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ListEventsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> 
        getAuditEventList();
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getAuditEvent(int index);
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    int getAuditEventCount();
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder> 
        getAuditEventOrBuilderList();
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder getAuditEventOrBuilder(
        int index);

    /**
     * <pre>
     * The page token for requesting the next page of results.
     * </pre>
     *
     * <code>string nextPageToken = 2;</code>
     * @return The nextPageToken.
     */
    java.lang.String getNextPageToken();
    /**
     * <pre>
     * The page token for requesting the next page of results.
     * </pre>
     *
     * <code>string nextPageToken = 2;</code>
     * @return The bytes for nextPageToken.
     */
    com.google.protobuf.ByteString
        getNextPageTokenBytes();
  }
  /**
   * <pre>
   * The response from listing audit events. [API analog: ListEventsResponse]
   * </pre>
   *
   * Protobuf type {@code audit.ListEventsResponse}
   */
  public static final class ListEventsResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ListEventsResponse)
      ListEventsResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ListEventsResponse.newBuilder() to construct.
    private ListEventsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ListEventsResponse() {
      auditEvent_ = java.util.Collections.emptyList();
      nextPageToken_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ListEventsResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.Builder.class);
    }

    public static final int AUDITEVENT_FIELD_NUMBER = 1;
    private java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> auditEvent_;
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> getAuditEventList() {
      return auditEvent_;
    }
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder> 
        getAuditEventOrBuilderList() {
      return auditEvent_;
    }
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public int getAuditEventCount() {
      return auditEvent_.size();
    }
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getAuditEvent(int index) {
      return auditEvent_.get(index);
    }
    /**
     * <pre>
     * The audit events that satisfy the query.
     * </pre>
     *
     * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder getAuditEventOrBuilder(
        int index) {
      return auditEvent_.get(index);
    }

    public static final int NEXTPAGETOKEN_FIELD_NUMBER = 2;
    private volatile java.lang.Object nextPageToken_;
    /**
     * <pre>
     * The page token for requesting the next page of results.
     * </pre>
     *
     * <code>string nextPageToken = 2;</code>
     * @return The nextPageToken.
     */
    @java.lang.Override
    public java.lang.String getNextPageToken() {
      java.lang.Object ref = nextPageToken_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        nextPageToken_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The page token for requesting the next page of results.
     * </pre>
     *
     * <code>string nextPageToken = 2;</code>
     * @return The bytes for nextPageToken.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getNextPageTokenBytes() {
      java.lang.Object ref = nextPageToken_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nextPageToken_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < auditEvent_.size(); i++) {
        output.writeMessage(1, auditEvent_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPageToken_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, nextPageToken_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      for (int i = 0; i < auditEvent_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, auditEvent_.get(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(nextPageToken_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, nextPageToken_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse) obj;

      if (!getAuditEventList()
          .equals(other.getAuditEventList())) return false;
      if (!getNextPageToken()
          .equals(other.getNextPageToken())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getAuditEventCount() > 0) {
        hash = (37 * hash) + AUDITEVENT_FIELD_NUMBER;
        hash = (53 * hash) + getAuditEventList().hashCode();
      }
      hash = (37 * hash) + NEXTPAGETOKEN_FIELD_NUMBER;
      hash = (53 * hash) + getNextPageToken().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The response from listing audit events. [API analog: ListEventsResponse]
     * </pre>
     *
     * Protobuf type {@code audit.ListEventsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ListEventsResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (auditEventBuilder_ == null) {
          auditEvent_ = java.util.Collections.emptyList();
        } else {
          auditEvent_ = null;
          auditEventBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        nextPageToken_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ListEventsResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse(this);
        int from_bitField0_ = bitField0_;
        if (auditEventBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            auditEvent_ = java.util.Collections.unmodifiableList(auditEvent_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.auditEvent_ = auditEvent_;
        } else {
          result.auditEvent_ = auditEventBuilder_.build();
        }
        result.nextPageToken_ = nextPageToken_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse.getDefaultInstance()) return this;
        if (auditEventBuilder_ == null) {
          if (!other.auditEvent_.isEmpty()) {
            if (auditEvent_.isEmpty()) {
              auditEvent_ = other.auditEvent_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureAuditEventIsMutable();
              auditEvent_.addAll(other.auditEvent_);
            }
            onChanged();
          }
        } else {
          if (!other.auditEvent_.isEmpty()) {
            if (auditEventBuilder_.isEmpty()) {
              auditEventBuilder_.dispose();
              auditEventBuilder_ = null;
              auditEvent_ = other.auditEvent_;
              bitField0_ = (bitField0_ & ~0x00000001);
              auditEventBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getAuditEventFieldBuilder() : null;
            } else {
              auditEventBuilder_.addAllMessages(other.auditEvent_);
            }
          }
        }
        if (!other.getNextPageToken().isEmpty()) {
          nextPageToken_ = other.nextPageToken_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent m =
                    input.readMessage(
                        com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.parser(),
                        extensionRegistry);
                if (auditEventBuilder_ == null) {
                  ensureAuditEventIsMutable();
                  auditEvent_.add(m);
                } else {
                  auditEventBuilder_.addMessage(m);
                }
                break;
              } // case 10
              case 18: {
                nextPageToken_ = input.readStringRequireUtf8();

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> auditEvent_ =
        java.util.Collections.emptyList();
      private void ensureAuditEventIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          auditEvent_ = new java.util.ArrayList<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent>(auditEvent_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder> auditEventBuilder_;

      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> getAuditEventList() {
        if (auditEventBuilder_ == null) {
          return java.util.Collections.unmodifiableList(auditEvent_);
        } else {
          return auditEventBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public int getAuditEventCount() {
        if (auditEventBuilder_ == null) {
          return auditEvent_.size();
        } else {
          return auditEventBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getAuditEvent(int index) {
        if (auditEventBuilder_ == null) {
          return auditEvent_.get(index);
        } else {
          return auditEventBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAuditEventIsMutable();
          auditEvent_.set(index, value);
          onChanged();
        } else {
          auditEventBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder setAuditEvent(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder builderForValue) {
        if (auditEventBuilder_ == null) {
          ensureAuditEventIsMutable();
          auditEvent_.set(index, builderForValue.build());
          onChanged();
        } else {
          auditEventBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder addAuditEvent(com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAuditEventIsMutable();
          auditEvent_.add(value);
          onChanged();
        } else {
          auditEventBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder addAuditEvent(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent value) {
        if (auditEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureAuditEventIsMutable();
          auditEvent_.add(index, value);
          onChanged();
        } else {
          auditEventBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder addAuditEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder builderForValue) {
        if (auditEventBuilder_ == null) {
          ensureAuditEventIsMutable();
          auditEvent_.add(builderForValue.build());
          onChanged();
        } else {
          auditEventBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder addAuditEvent(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder builderForValue) {
        if (auditEventBuilder_ == null) {
          ensureAuditEventIsMutable();
          auditEvent_.add(index, builderForValue.build());
          onChanged();
        } else {
          auditEventBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder addAllAuditEvent(
          java.lang.Iterable<? extends com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent> values) {
        if (auditEventBuilder_ == null) {
          ensureAuditEventIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, auditEvent_);
          onChanged();
        } else {
          auditEventBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder clearAuditEvent() {
        if (auditEventBuilder_ == null) {
          auditEvent_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          auditEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public Builder removeAuditEvent(int index) {
        if (auditEventBuilder_ == null) {
          ensureAuditEventIsMutable();
          auditEvent_.remove(index);
          onChanged();
        } else {
          auditEventBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder getAuditEventBuilder(
          int index) {
        return getAuditEventFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder getAuditEventOrBuilder(
          int index) {
        if (auditEventBuilder_ == null) {
          return auditEvent_.get(index);  } else {
          return auditEventBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder> 
           getAuditEventOrBuilderList() {
        if (auditEventBuilder_ != null) {
          return auditEventBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(auditEvent_);
        }
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder addAuditEventBuilder() {
        return getAuditEventFieldBuilder().addBuilder(
            com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder addAuditEventBuilder(
          int index) {
        return getAuditEventFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.getDefaultInstance());
      }
      /**
       * <pre>
       * The audit events that satisfy the query.
       * </pre>
       *
       * <code>repeated .audit.CdpAuditEvent auditEvent = 1;</code>
       */
      public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder> 
           getAuditEventBuilderList() {
        return getAuditEventFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder> 
          getAuditEventFieldBuilder() {
        if (auditEventBuilder_ == null) {
          auditEventBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder>(
                  auditEvent_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          auditEvent_ = null;
        }
        return auditEventBuilder_;
      }

      private java.lang.Object nextPageToken_ = "";
      /**
       * <pre>
       * The page token for requesting the next page of results.
       * </pre>
       *
       * <code>string nextPageToken = 2;</code>
       * @return The nextPageToken.
       */
      public java.lang.String getNextPageToken() {
        java.lang.Object ref = nextPageToken_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          nextPageToken_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The page token for requesting the next page of results.
       * </pre>
       *
       * <code>string nextPageToken = 2;</code>
       * @return The bytes for nextPageToken.
       */
      public com.google.protobuf.ByteString
          getNextPageTokenBytes() {
        java.lang.Object ref = nextPageToken_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nextPageToken_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The page token for requesting the next page of results.
       * </pre>
       *
       * <code>string nextPageToken = 2;</code>
       * @param value The nextPageToken to set.
       * @return This builder for chaining.
       */
      public Builder setNextPageToken(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nextPageToken_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The page token for requesting the next page of results.
       * </pre>
       *
       * <code>string nextPageToken = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNextPageToken() {
        
        nextPageToken_ = getDefaultInstance().getNextPageToken();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The page token for requesting the next page of results.
       * </pre>
       *
       * <code>string nextPageToken = 2;</code>
       * @param value The bytes for nextPageToken to set.
       * @return This builder for chaining.
       */
      public Builder setNextPageTokenBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nextPageToken_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ListEventsResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.ListEventsResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ListEventsResponse>
        PARSER = new com.google.protobuf.AbstractParser<ListEventsResponse>() {
      @java.lang.Override
      public ListEventsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ListEventsResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ListEventsResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ListEventsResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AuditEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.AuditEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the event occurred.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * Account id in which this event occurred.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    java.lang.String getAccountId();
    /**
     * <pre>
     * Account id in which this event occurred.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    com.google.protobuf.ByteString
        getAccountIdBytes();

    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 5;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 5;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * The name of the event. Each service defines all its audit event names.
     * </pre>
     *
     * <code>string eventName = 6;</code>
     * @return The eventName.
     */
    java.lang.String getEventName();
    /**
     * <pre>
     * The name of the event. Each service defines all its audit event names.
     * </pre>
     *
     * <code>string eventName = 6;</code>
     * @return The bytes for eventName.
     */
    com.google.protobuf.ByteString
        getEventNameBytes();

    /**
     * <pre>
     * The source IP address of the request leading to this event. Optional.
     * </pre>
     *
     * <code>string sourceIPAddress = 8;</code>
     * @return The sourceIPAddress.
     */
    java.lang.String getSourceIPAddress();
    /**
     * <pre>
     * The source IP address of the request leading to this event. Optional.
     * </pre>
     *
     * <code>string sourceIPAddress = 8;</code>
     * @return The bytes for sourceIPAddress.
     */
    com.google.protobuf.ByteString
        getSourceIPAddressBytes();

    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 9;</code>
     * @return The eventSource.
     */
    java.lang.String getEventSource();
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 9;</code>
     * @return The bytes for eventSource.
     */
    com.google.protobuf.ByteString
        getEventSourceBytes();

    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return Whether the actorCrn field is set.
     */
    boolean hasActorCrn();
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return The actorCrn.
     */
    java.lang.String getActorCrn();
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return The bytes for actorCrn.
     */
    com.google.protobuf.ByteString
        getActorCrnBytes();

    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return Whether the actorServiceName field is set.
     */
    boolean hasActorServiceName();
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return The actorServiceName.
     */
    java.lang.String getActorServiceName();
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return The bytes for actorServiceName.
     */
    com.google.protobuf.ByteString
        getActorServiceNameBytes();

    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     * @return Whether the apiRequestData field is set.
     */
    boolean hasApiRequestData();
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     * @return The apiRequestData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getApiRequestData();
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder getApiRequestDataOrBuilder();

    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     * @return Whether the serviceEventData field is set.
     */
    boolean hasServiceEventData();
    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     * @return The serviceEventData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getServiceEventData();
    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder getServiceEventDataOrBuilder();

    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     * @return Whether the interactiveLoginEventData field is set.
     */
    boolean hasInteractiveLoginEventData();
    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     * @return The interactiveLoginEventData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getInteractiveLoginEventData();
    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder getInteractiveLoginEventDataOrBuilder();

    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.ActorCase getActorCase();

    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.EventTypeCase getEventTypeCase();
  }
  /**
   * <pre>
   * Recorded information about an action, as submitted to the audit service.
   * This message is used to represent either a standalone audit event or an
   * attempt audit event, for which a corresponding result should be submitted
   * later. Control plane services use this message to submit audit data.
   * [Public model analog: CdpAuditEvent]
   * </pre>
   *
   * Protobuf type {@code audit.AuditEvent}
   */
  public static final class AuditEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.AuditEvent)
      AuditEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AuditEvent.newBuilder() to construct.
    private AuditEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AuditEvent() {
      id_ = "";
      accountId_ = "";
      requestId_ = "";
      eventName_ = "";
      sourceIPAddress_ = "";
      eventSource_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AuditEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AuditEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AuditEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder.class);
    }

    private int actorCase_ = 0;
    private java.lang.Object actor_;
    public enum ActorCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ACTORCRN(4),
      ACTORSERVICENAME(10),
      ACTOR_NOT_SET(0);
      private final int value;
      private ActorCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ActorCase valueOf(int value) {
        return forNumber(value);
      }

      public static ActorCase forNumber(int value) {
        switch (value) {
          case 4: return ACTORCRN;
          case 10: return ACTORSERVICENAME;
          case 0: return ACTOR_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ActorCase
    getActorCase() {
      return ActorCase.forNumber(
          actorCase_);
    }

    private int eventTypeCase_ = 0;
    private java.lang.Object eventType_;
    public enum EventTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      APIREQUESTDATA(11),
      SERVICEEVENTDATA(12),
      INTERACTIVELOGINEVENTDATA(13),
      EVENTTYPE_NOT_SET(0);
      private final int value;
      private EventTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventTypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static EventTypeCase forNumber(int value) {
        switch (value) {
          case 11: return APIREQUESTDATA;
          case 12: return SERVICEEVENTDATA;
          case 13: return INTERACTIVELOGINEVENTDATA;
          case 0: return EVENTTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EventTypeCase
    getEventTypeCase() {
      return EventTypeCase.forNumber(
          eventTypeCase_);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 2;
    private long timestamp_;
    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the event occurred.
     * </pre>
     *
     * <code>int64 timestamp = 2;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int ACCOUNTID_FIELD_NUMBER = 3;
    private volatile java.lang.Object accountId_;
    /**
     * <pre>
     * Account id in which this event occurred.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    @java.lang.Override
    public java.lang.String getAccountId() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        accountId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Account id in which this event occurred.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountIdBytes() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accountId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUESTID_FIELD_NUMBER = 5;
    private volatile java.lang.Object requestId_;
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 5;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 5;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTNAME_FIELD_NUMBER = 6;
    private volatile java.lang.Object eventName_;
    /**
     * <pre>
     * The name of the event. Each service defines all its audit event names.
     * </pre>
     *
     * <code>string eventName = 6;</code>
     * @return The eventName.
     */
    @java.lang.Override
    public java.lang.String getEventName() {
      java.lang.Object ref = eventName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The name of the event. Each service defines all its audit event names.
     * </pre>
     *
     * <code>string eventName = 6;</code>
     * @return The bytes for eventName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventNameBytes() {
      java.lang.Object ref = eventName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCEIPADDRESS_FIELD_NUMBER = 8;
    private volatile java.lang.Object sourceIPAddress_;
    /**
     * <pre>
     * The source IP address of the request leading to this event. Optional.
     * </pre>
     *
     * <code>string sourceIPAddress = 8;</code>
     * @return The sourceIPAddress.
     */
    @java.lang.Override
    public java.lang.String getSourceIPAddress() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sourceIPAddress_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The source IP address of the request leading to this event. Optional.
     * </pre>
     *
     * <code>string sourceIPAddress = 8;</code>
     * @return The bytes for sourceIPAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSourceIPAddressBytes() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceIPAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTSOURCE_FIELD_NUMBER = 9;
    private volatile java.lang.Object eventSource_;
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 9;</code>
     * @return The eventSource.
     */
    @java.lang.Override
    public java.lang.String getEventSource() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventSource_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 9;</code>
     * @return The bytes for eventSource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventSourceBytes() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventSource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTORCRN_FIELD_NUMBER = 4;
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return Whether the actorCrn field is set.
     */
    public boolean hasActorCrn() {
      return actorCase_ == 4;
    }
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return The actorCrn.
     */
    public java.lang.String getActorCrn() {
      java.lang.Object ref = "";
      if (actorCase_ == 4) {
        ref = actor_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (actorCase_ == 4) {
          actor_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 4;</code>
     * @return The bytes for actorCrn.
     */
    public com.google.protobuf.ByteString
        getActorCrnBytes() {
      java.lang.Object ref = "";
      if (actorCase_ == 4) {
        ref = actor_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (actorCase_ == 4) {
          actor_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTORSERVICENAME_FIELD_NUMBER = 10;
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return Whether the actorServiceName field is set.
     */
    public boolean hasActorServiceName() {
      return actorCase_ == 10;
    }
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return The actorServiceName.
     */
    public java.lang.String getActorServiceName() {
      java.lang.Object ref = "";
      if (actorCase_ == 10) {
        ref = actor_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (actorCase_ == 10) {
          actor_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 10;</code>
     * @return The bytes for actorServiceName.
     */
    public com.google.protobuf.ByteString
        getActorServiceNameBytes() {
      java.lang.Object ref = "";
      if (actorCase_ == 10) {
        ref = actor_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (actorCase_ == 10) {
          actor_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APIREQUESTDATA_FIELD_NUMBER = 11;
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     * @return Whether the apiRequestData field is set.
     */
    @java.lang.Override
    public boolean hasApiRequestData() {
      return eventTypeCase_ == 11;
    }
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     * @return The apiRequestData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getApiRequestData() {
      if (eventTypeCase_ == 11) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestData apiRequestData = 11;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder getApiRequestDataOrBuilder() {
      if (eventTypeCase_ == 11) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
    }

    public static final int SERVICEEVENTDATA_FIELD_NUMBER = 12;
    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     * @return Whether the serviceEventData field is set.
     */
    @java.lang.Override
    public boolean hasServiceEventData() {
      return eventTypeCase_ == 12;
    }
    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     * @return The serviceEventData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getServiceEventData() {
      if (eventTypeCase_ == 12) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information specific to a service event.
     * </pre>
     *
     * <code>.audit.ServiceEventData serviceEventData = 12;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder getServiceEventDataOrBuilder() {
      if (eventTypeCase_ == 12) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
    }

    public static final int INTERACTIVELOGINEVENTDATA_FIELD_NUMBER = 13;
    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     * @return Whether the interactiveLoginEventData field is set.
     */
    @java.lang.Override
    public boolean hasInteractiveLoginEventData() {
      return eventTypeCase_ == 13;
    }
    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     * @return The interactiveLoginEventData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getInteractiveLoginEventData() {
      if (eventTypeCase_ == 13) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information specific to an interactive login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder getInteractiveLoginEventDataOrBuilder() {
      if (eventTypeCase_ == 13) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(2, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, accountId_);
      }
      if (actorCase_ == 4) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, actor_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, eventName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, eventSource_);
      }
      if (actorCase_ == 10) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, actor_);
      }
      if (eventTypeCase_ == 11) {
        output.writeMessage(11, (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_);
      }
      if (eventTypeCase_ == 12) {
        output.writeMessage(12, (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_);
      }
      if (eventTypeCase_ == 13) {
        output.writeMessage(13, (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, timestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, accountId_);
      }
      if (actorCase_ == 4) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, actor_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, eventName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, eventSource_);
      }
      if (actorCase_ == 10) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, actor_);
      }
      if (eventTypeCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_);
      }
      if (eventTypeCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_);
      }
      if (eventTypeCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent other = (com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (!getAccountId()
          .equals(other.getAccountId())) return false;
      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (!getEventName()
          .equals(other.getEventName())) return false;
      if (!getSourceIPAddress()
          .equals(other.getSourceIPAddress())) return false;
      if (!getEventSource()
          .equals(other.getEventSource())) return false;
      if (!getActorCase().equals(other.getActorCase())) return false;
      switch (actorCase_) {
        case 4:
          if (!getActorCrn()
              .equals(other.getActorCrn())) return false;
          break;
        case 10:
          if (!getActorServiceName()
              .equals(other.getActorServiceName())) return false;
          break;
        case 0:
        default:
      }
      if (!getEventTypeCase().equals(other.getEventTypeCase())) return false;
      switch (eventTypeCase_) {
        case 11:
          if (!getApiRequestData()
              .equals(other.getApiRequestData())) return false;
          break;
        case 12:
          if (!getServiceEventData()
              .equals(other.getServiceEventData())) return false;
          break;
        case 13:
          if (!getInteractiveLoginEventData()
              .equals(other.getInteractiveLoginEventData())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
      hash = (53 * hash) + getAccountId().hashCode();
      hash = (37 * hash) + REQUESTID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      hash = (37 * hash) + EVENTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getEventName().hashCode();
      hash = (37 * hash) + SOURCEIPADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getSourceIPAddress().hashCode();
      hash = (37 * hash) + EVENTSOURCE_FIELD_NUMBER;
      hash = (53 * hash) + getEventSource().hashCode();
      switch (actorCase_) {
        case 4:
          hash = (37 * hash) + ACTORCRN_FIELD_NUMBER;
          hash = (53 * hash) + getActorCrn().hashCode();
          break;
        case 10:
          hash = (37 * hash) + ACTORSERVICENAME_FIELD_NUMBER;
          hash = (53 * hash) + getActorServiceName().hashCode();
          break;
        case 0:
        default:
      }
      switch (eventTypeCase_) {
        case 11:
          hash = (37 * hash) + APIREQUESTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getApiRequestData().hashCode();
          break;
        case 12:
          hash = (37 * hash) + SERVICEEVENTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getServiceEventData().hashCode();
          break;
        case 13:
          hash = (37 * hash) + INTERACTIVELOGINEVENTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getInteractiveLoginEventData().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Recorded information about an action, as submitted to the audit service.
     * This message is used to represent either a standalone audit event or an
     * attempt audit event, for which a corresponding result should be submitted
     * later. Control plane services use this message to submit audit data.
     * [Public model analog: CdpAuditEvent]
     * </pre>
     *
     * Protobuf type {@code audit.AuditEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.AuditEvent)
        com.cloudera.thunderhead.service.audit.AuditProto.AuditEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AuditEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AuditEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        timestamp_ = 0L;

        accountId_ = "";

        requestId_ = "";

        eventName_ = "";

        sourceIPAddress_ = "";

        eventSource_ = "";

        if (apiRequestDataBuilder_ != null) {
          apiRequestDataBuilder_.clear();
        }
        if (serviceEventDataBuilder_ != null) {
          serviceEventDataBuilder_.clear();
        }
        if (interactiveLoginEventDataBuilder_ != null) {
          interactiveLoginEventDataBuilder_.clear();
        }
        actorCase_ = 0;
        actor_ = null;
        eventTypeCase_ = 0;
        eventType_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AuditEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent build() {
        com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent result = new com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent(this);
        result.id_ = id_;
        result.timestamp_ = timestamp_;
        result.accountId_ = accountId_;
        result.requestId_ = requestId_;
        result.eventName_ = eventName_;
        result.sourceIPAddress_ = sourceIPAddress_;
        result.eventSource_ = eventSource_;
        if (actorCase_ == 4) {
          result.actor_ = actor_;
        }
        if (actorCase_ == 10) {
          result.actor_ = actor_;
        }
        if (eventTypeCase_ == 11) {
          if (apiRequestDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = apiRequestDataBuilder_.build();
          }
        }
        if (eventTypeCase_ == 12) {
          if (serviceEventDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = serviceEventDataBuilder_.build();
          }
        }
        if (eventTypeCase_ == 13) {
          if (interactiveLoginEventDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = interactiveLoginEventDataBuilder_.build();
          }
        }
        result.actorCase_ = actorCase_;
        result.eventTypeCase_ = eventTypeCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (!other.getAccountId().isEmpty()) {
          accountId_ = other.accountId_;
          onChanged();
        }
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          onChanged();
        }
        if (!other.getEventName().isEmpty()) {
          eventName_ = other.eventName_;
          onChanged();
        }
        if (!other.getSourceIPAddress().isEmpty()) {
          sourceIPAddress_ = other.sourceIPAddress_;
          onChanged();
        }
        if (!other.getEventSource().isEmpty()) {
          eventSource_ = other.eventSource_;
          onChanged();
        }
        switch (other.getActorCase()) {
          case ACTORCRN: {
            actorCase_ = 4;
            actor_ = other.actor_;
            onChanged();
            break;
          }
          case ACTORSERVICENAME: {
            actorCase_ = 10;
            actor_ = other.actor_;
            onChanged();
            break;
          }
          case ACTOR_NOT_SET: {
            break;
          }
        }
        switch (other.getEventTypeCase()) {
          case APIREQUESTDATA: {
            mergeApiRequestData(other.getApiRequestData());
            break;
          }
          case SERVICEEVENTDATA: {
            mergeServiceEventData(other.getServiceEventData());
            break;
          }
          case INTERACTIVELOGINEVENTDATA: {
            mergeInteractiveLoginEventData(other.getInteractiveLoginEventData());
            break;
          }
          case EVENTTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                timestamp_ = input.readInt64();

                break;
              } // case 16
              case 26: {
                accountId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                java.lang.String s = input.readStringRequireUtf8();
                actorCase_ = 4;
                actor_ = s;
                break;
              } // case 34
              case 42: {
                requestId_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                eventName_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 66: {
                sourceIPAddress_ = input.readStringRequireUtf8();

                break;
              } // case 66
              case 74: {
                eventSource_ = input.readStringRequireUtf8();

                break;
              } // case 74
              case 82: {
                java.lang.String s = input.readStringRequireUtf8();
                actorCase_ = 10;
                actor_ = s;
                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getApiRequestDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 11;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getServiceEventDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 12;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getInteractiveLoginEventDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 13;
                break;
              } // case 106
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int actorCase_ = 0;
      private java.lang.Object actor_;
      public ActorCase
          getActorCase() {
        return ActorCase.forNumber(
            actorCase_);
      }

      public Builder clearActor() {
        actorCase_ = 0;
        actor_ = null;
        onChanged();
        return this;
      }

      private int eventTypeCase_ = 0;
      private java.lang.Object eventType_;
      public EventTypeCase
          getEventTypeCase() {
        return EventTypeCase.forNumber(
            eventTypeCase_);
      }

      public Builder clearEventType() {
        eventTypeCase_ = 0;
        eventType_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object id_ = "";
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object accountId_ = "";
      /**
       * <pre>
       * Account id in which this event occurred.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The accountId.
       */
      public java.lang.String getAccountId() {
        java.lang.Object ref = accountId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accountId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Account id in which this event occurred.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The bytes for accountId.
       */
      public com.google.protobuf.ByteString
          getAccountIdBytes() {
        java.lang.Object ref = accountId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accountId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Account id in which this event occurred.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Account id in which this event occurred.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountId() {
        
        accountId_ = getDefaultInstance().getAccountId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Account id in which this event occurred.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The bytes for accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accountId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 5;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 5;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 5;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        requestId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        
        requestId_ = getDefaultInstance().getRequestId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 5;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        requestId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventName_ = "";
      /**
       * <pre>
       * The name of the event. Each service defines all its audit event names.
       * </pre>
       *
       * <code>string eventName = 6;</code>
       * @return The eventName.
       */
      public java.lang.String getEventName() {
        java.lang.Object ref = eventName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the event. Each service defines all its audit event names.
       * </pre>
       *
       * <code>string eventName = 6;</code>
       * @return The bytes for eventName.
       */
      public com.google.protobuf.ByteString
          getEventNameBytes() {
        java.lang.Object ref = eventName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the event. Each service defines all its audit event names.
       * </pre>
       *
       * <code>string eventName = 6;</code>
       * @param value The eventName to set.
       * @return This builder for chaining.
       */
      public Builder setEventName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the event. Each service defines all its audit event names.
       * </pre>
       *
       * <code>string eventName = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventName() {
        
        eventName_ = getDefaultInstance().getEventName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the event. Each service defines all its audit event names.
       * </pre>
       *
       * <code>string eventName = 6;</code>
       * @param value The bytes for eventName to set.
       * @return This builder for chaining.
       */
      public Builder setEventNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourceIPAddress_ = "";
      /**
       * <pre>
       * The source IP address of the request leading to this event. Optional.
       * </pre>
       *
       * <code>string sourceIPAddress = 8;</code>
       * @return The sourceIPAddress.
       */
      public java.lang.String getSourceIPAddress() {
        java.lang.Object ref = sourceIPAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceIPAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The source IP address of the request leading to this event. Optional.
       * </pre>
       *
       * <code>string sourceIPAddress = 8;</code>
       * @return The bytes for sourceIPAddress.
       */
      public com.google.protobuf.ByteString
          getSourceIPAddressBytes() {
        java.lang.Object ref = sourceIPAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceIPAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The source IP address of the request leading to this event. Optional.
       * </pre>
       *
       * <code>string sourceIPAddress = 8;</code>
       * @param value The sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address of the request leading to this event. Optional.
       * </pre>
       *
       * <code>string sourceIPAddress = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceIPAddress() {
        
        sourceIPAddress_ = getDefaultInstance().getSourceIPAddress();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address of the request leading to this event. Optional.
       * </pre>
       *
       * <code>string sourceIPAddress = 8;</code>
       * @param value The bytes for sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventSource_ = "";
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 9;</code>
       * @return The eventSource.
       */
      public java.lang.String getEventSource() {
        java.lang.Object ref = eventSource_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventSource_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 9;</code>
       * @return The bytes for eventSource.
       */
      public com.google.protobuf.ByteString
          getEventSourceBytes() {
        java.lang.Object ref = eventSource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventSource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 9;</code>
       * @param value The eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSource(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventSource_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventSource() {
        
        eventSource_ = getDefaultInstance().getEventSource();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 9;</code>
       * @param value The bytes for eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventSource_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @return Whether the actorCrn field is set.
       */
      @java.lang.Override
      public boolean hasActorCrn() {
        return actorCase_ == 4;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @return The actorCrn.
       */
      @java.lang.Override
      public java.lang.String getActorCrn() {
        java.lang.Object ref = "";
        if (actorCase_ == 4) {
          ref = actor_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (actorCase_ == 4) {
            actor_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @return The bytes for actorCrn.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getActorCrnBytes() {
        java.lang.Object ref = "";
        if (actorCase_ == 4) {
          ref = actor_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (actorCase_ == 4) {
            actor_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @param value The actorCrn to set.
       * @return This builder for chaining.
       */
      public Builder setActorCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  actorCase_ = 4;
        actor_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearActorCrn() {
        if (actorCase_ == 4) {
          actorCase_ = 0;
          actor_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 4;</code>
       * @param value The bytes for actorCrn to set.
       * @return This builder for chaining.
       */
      public Builder setActorCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        actorCase_ = 4;
        actor_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @return Whether the actorServiceName field is set.
       */
      @java.lang.Override
      public boolean hasActorServiceName() {
        return actorCase_ == 10;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @return The actorServiceName.
       */
      @java.lang.Override
      public java.lang.String getActorServiceName() {
        java.lang.Object ref = "";
        if (actorCase_ == 10) {
          ref = actor_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (actorCase_ == 10) {
            actor_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @return The bytes for actorServiceName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getActorServiceNameBytes() {
        java.lang.Object ref = "";
        if (actorCase_ == 10) {
          ref = actor_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (actorCase_ == 10) {
            actor_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @param value The actorServiceName to set.
       * @return This builder for chaining.
       */
      public Builder setActorServiceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  actorCase_ = 10;
        actor_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearActorServiceName() {
        if (actorCase_ == 10) {
          actorCase_ = 0;
          actor_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 10;</code>
       * @param value The bytes for actorServiceName to set.
       * @return This builder for chaining.
       */
      public Builder setActorServiceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        actorCase_ = 10;
        actor_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder> apiRequestDataBuilder_;
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       * @return Whether the apiRequestData field is set.
       */
      @java.lang.Override
      public boolean hasApiRequestData() {
        return eventTypeCase_ == 11;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       * @return The apiRequestData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getApiRequestData() {
        if (apiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 11) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 11) {
            return apiRequestDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      public Builder setApiRequestData(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData value) {
        if (apiRequestDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          apiRequestDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      public Builder setApiRequestData(
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder builderForValue) {
        if (apiRequestDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          apiRequestDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      public Builder mergeApiRequestData(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData value) {
        if (apiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 11 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 11) {
            apiRequestDataBuilder_.mergeFrom(value);
          } else {
            apiRequestDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      public Builder clearApiRequestData() {
        if (apiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 11) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 11) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          apiRequestDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder getApiRequestDataBuilder() {
        return getApiRequestDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder getApiRequestDataOrBuilder() {
        if ((eventTypeCase_ == 11) && (apiRequestDataBuilder_ != null)) {
          return apiRequestDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 11) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestData apiRequestData = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder> 
          getApiRequestDataFieldBuilder() {
        if (apiRequestDataBuilder_ == null) {
          if (!(eventTypeCase_ == 11)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
          }
          apiRequestDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 11;
        onChanged();;
        return apiRequestDataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder> serviceEventDataBuilder_;
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       * @return Whether the serviceEventData field is set.
       */
      @java.lang.Override
      public boolean hasServiceEventData() {
        return eventTypeCase_ == 12;
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       * @return The serviceEventData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getServiceEventData() {
        if (serviceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 12) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 12) {
            return serviceEventDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      public Builder setServiceEventData(com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData value) {
        if (serviceEventDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          serviceEventDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      public Builder setServiceEventData(
          com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder builderForValue) {
        if (serviceEventDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          serviceEventDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      public Builder mergeServiceEventData(com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData value) {
        if (serviceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 12 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 12) {
            serviceEventDataBuilder_.mergeFrom(value);
          } else {
            serviceEventDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      public Builder clearServiceEventData() {
        if (serviceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 12) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 12) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          serviceEventDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder getServiceEventDataBuilder() {
        return getServiceEventDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder getServiceEventDataOrBuilder() {
        if ((eventTypeCase_ == 12) && (serviceEventDataBuilder_ != null)) {
          return serviceEventDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 12) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to a service event.
       * </pre>
       *
       * <code>.audit.ServiceEventData serviceEventData = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder> 
          getServiceEventDataFieldBuilder() {
        if (serviceEventDataBuilder_ == null) {
          if (!(eventTypeCase_ == 12)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
          }
          serviceEventDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 12;
        onChanged();;
        return serviceEventDataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder> interactiveLoginEventDataBuilder_;
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       * @return Whether the interactiveLoginEventData field is set.
       */
      @java.lang.Override
      public boolean hasInteractiveLoginEventData() {
        return eventTypeCase_ == 13;
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       * @return The interactiveLoginEventData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getInteractiveLoginEventData() {
        if (interactiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 13) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 13) {
            return interactiveLoginEventDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      public Builder setInteractiveLoginEventData(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData value) {
        if (interactiveLoginEventDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          interactiveLoginEventDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      public Builder setInteractiveLoginEventData(
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder builderForValue) {
        if (interactiveLoginEventDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          interactiveLoginEventDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      public Builder mergeInteractiveLoginEventData(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData value) {
        if (interactiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 13 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 13) {
            interactiveLoginEventDataBuilder_.mergeFrom(value);
          } else {
            interactiveLoginEventDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      public Builder clearInteractiveLoginEventData() {
        if (interactiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 13) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 13) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          interactiveLoginEventDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder getInteractiveLoginEventDataBuilder() {
        return getInteractiveLoginEventDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder getInteractiveLoginEventDataOrBuilder() {
        if ((eventTypeCase_ == 13) && (interactiveLoginEventDataBuilder_ != null)) {
          return interactiveLoginEventDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 13) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an interactive login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEventData interactiveLoginEventData = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder> 
          getInteractiveLoginEventDataFieldBuilder() {
        if (interactiveLoginEventDataBuilder_ == null) {
          if (!(eventTypeCase_ == 13)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
          }
          interactiveLoginEventDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 13;
        onChanged();;
        return interactiveLoginEventDataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.AuditEvent)
    }

    // @@protoc_insertion_point(class_scope:audit.AuditEvent)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AuditEvent>
        PARSER = new com.google.protobuf.AbstractParser<AuditEvent>() {
      @java.lang.Override
      public AuditEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<AuditEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AuditEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AuditEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ServiceEventDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ServiceEventData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The schema version of the event details for this service event. Maintained
     * by the service.
     * </pre>
     *
     * <code>string detailsVersion = 1;</code>
     * @return The detailsVersion.
     */
    java.lang.String getDetailsVersion();
    /**
     * <pre>
     * The schema version of the event details for this service event. Maintained
     * by the service.
     * </pre>
     *
     * <code>string detailsVersion = 1;</code>
     * @return The bytes for detailsVersion.
     */
    com.google.protobuf.ByteString
        getDetailsVersionBytes();

    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for an audit event.
     * Each service defines the structure of details for its audit events. It
     * is strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * </pre>
     *
     * <code>string eventDetails = 2;</code>
     * @return The eventDetails.
     */
    java.lang.String getEventDetails();
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for an audit event.
     * Each service defines the structure of details for its audit events. It
     * is strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * </pre>
     *
     * <code>string eventDetails = 2;</code>
     * @return The bytes for eventDetails.
     */
    com.google.protobuf.ByteString
        getEventDetailsBytes();
  }
  /**
   * <pre>
   * Additional information about an audit event sent by control plane services
   * which is not directly triggered by an API request. [Public model
   * analog: CdpServiceEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ServiceEventData}
   */
  public static final class ServiceEventData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ServiceEventData)
      ServiceEventDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ServiceEventData.newBuilder() to construct.
    private ServiceEventData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ServiceEventData() {
      detailsVersion_ = "";
      eventDetails_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ServiceEventData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ServiceEventData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ServiceEventData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder.class);
    }

    public static final int DETAILSVERSION_FIELD_NUMBER = 1;
    private volatile java.lang.Object detailsVersion_;
    /**
     * <pre>
     * The schema version of the event details for this service event. Maintained
     * by the service.
     * </pre>
     *
     * <code>string detailsVersion = 1;</code>
     * @return The detailsVersion.
     */
    @java.lang.Override
    public java.lang.String getDetailsVersion() {
      java.lang.Object ref = detailsVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        detailsVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The schema version of the event details for this service event. Maintained
     * by the service.
     * </pre>
     *
     * <code>string detailsVersion = 1;</code>
     * @return The bytes for detailsVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDetailsVersionBytes() {
      java.lang.Object ref = detailsVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        detailsVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTDETAILS_FIELD_NUMBER = 2;
    private volatile java.lang.Object eventDetails_;
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for an audit event.
     * Each service defines the structure of details for its audit events. It
     * is strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * </pre>
     *
     * <code>string eventDetails = 2;</code>
     * @return The eventDetails.
     */
    @java.lang.Override
    public java.lang.String getEventDetails() {
      java.lang.Object ref = eventDetails_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventDetails_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for an audit event.
     * Each service defines the structure of details for its audit events. It
     * is strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * </pre>
     *
     * <code>string eventDetails = 2;</code>
     * @return The bytes for eventDetails.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventDetailsBytes() {
      java.lang.Object ref = eventDetails_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventDetails_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(detailsVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, detailsVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventDetails_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, eventDetails_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(detailsVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, detailsVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventDetails_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, eventDetails_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData other = (com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) obj;

      if (!getDetailsVersion()
          .equals(other.getDetailsVersion())) return false;
      if (!getEventDetails()
          .equals(other.getEventDetails())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + DETAILSVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getDetailsVersion().hashCode();
      hash = (37 * hash) + EVENTDETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getEventDetails().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information about an audit event sent by control plane services
     * which is not directly triggered by an API request. [Public model
     * analog: CdpServiceEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ServiceEventData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ServiceEventData)
        com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ServiceEventData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ServiceEventData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        detailsVersion_ = "";

        eventDetails_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ServiceEventData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData result = new com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData(this);
        result.detailsVersion_ = detailsVersion_;
        result.eventDetails_ = eventDetails_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData.getDefaultInstance()) return this;
        if (!other.getDetailsVersion().isEmpty()) {
          detailsVersion_ = other.detailsVersion_;
          onChanged();
        }
        if (!other.getEventDetails().isEmpty()) {
          eventDetails_ = other.eventDetails_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                detailsVersion_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                eventDetails_ = input.readStringRequireUtf8();

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object detailsVersion_ = "";
      /**
       * <pre>
       * The schema version of the event details for this service event. Maintained
       * by the service.
       * </pre>
       *
       * <code>string detailsVersion = 1;</code>
       * @return The detailsVersion.
       */
      public java.lang.String getDetailsVersion() {
        java.lang.Object ref = detailsVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          detailsVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The schema version of the event details for this service event. Maintained
       * by the service.
       * </pre>
       *
       * <code>string detailsVersion = 1;</code>
       * @return The bytes for detailsVersion.
       */
      public com.google.protobuf.ByteString
          getDetailsVersionBytes() {
        java.lang.Object ref = detailsVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          detailsVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The schema version of the event details for this service event. Maintained
       * by the service.
       * </pre>
       *
       * <code>string detailsVersion = 1;</code>
       * @param value The detailsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDetailsVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        detailsVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema version of the event details for this service event. Maintained
       * by the service.
       * </pre>
       *
       * <code>string detailsVersion = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearDetailsVersion() {
        
        detailsVersion_ = getDefaultInstance().getDetailsVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema version of the event details for this service event. Maintained
       * by the service.
       * </pre>
       *
       * <code>string detailsVersion = 1;</code>
       * @param value The bytes for detailsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDetailsVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        detailsVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventDetails_ = "";
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for an audit event.
       * Each service defines the structure of details for its audit events. It
       * is strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * </pre>
       *
       * <code>string eventDetails = 2;</code>
       * @return The eventDetails.
       */
      public java.lang.String getEventDetails() {
        java.lang.Object ref = eventDetails_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventDetails_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for an audit event.
       * Each service defines the structure of details for its audit events. It
       * is strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * </pre>
       *
       * <code>string eventDetails = 2;</code>
       * @return The bytes for eventDetails.
       */
      public com.google.protobuf.ByteString
          getEventDetailsBytes() {
        java.lang.Object ref = eventDetails_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventDetails_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for an audit event.
       * Each service defines the structure of details for its audit events. It
       * is strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * </pre>
       *
       * <code>string eventDetails = 2;</code>
       * @param value The eventDetails to set.
       * @return This builder for chaining.
       */
      public Builder setEventDetails(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventDetails_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for an audit event.
       * Each service defines the structure of details for its audit events. It
       * is strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * </pre>
       *
       * <code>string eventDetails = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventDetails() {
        
        eventDetails_ = getDefaultInstance().getEventDetails();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for an audit event.
       * Each service defines the structure of details for its audit events. It
       * is strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * </pre>
       *
       * <code>string eventDetails = 2;</code>
       * @param value The bytes for eventDetails to set.
       * @return This builder for chaining.
       */
      public Builder setEventDetailsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventDetails_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ServiceEventData)
    }

    // @@protoc_insertion_point(class_scope:audit.ServiceEventData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ServiceEventData>
        PARSER = new com.google.protobuf.AbstractParser<ServiceEventData>() {
      @java.lang.Override
      public ServiceEventData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ServiceEventData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ServiceEventData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ServiceEventData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ApiRequestDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ApiRequestData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The requestParameters.
     */
    java.lang.String getRequestParameters();
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The bytes for requestParameters.
     */
    com.google.protobuf.ByteString
        getRequestParametersBytes();

    /**
     * <pre>
     * Whether the request mutates the state of resources.
     * </pre>
     *
     * <code>bool mutating = 2;</code>
     * @return The mutating.
     */
    boolean getMutating();

    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 3;</code>
     * @return The apiVersion.
     */
    java.lang.String getApiVersion();
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 3;</code>
     * @return The bytes for apiVersion.
     */
    com.google.protobuf.ByteString
        getApiVersionBytes();

    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 4;</code>
     * @return The userAgent.
     */
    java.lang.String getUserAgent();
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 4;</code>
     * @return The bytes for userAgent.
     */
    com.google.protobuf.ByteString
        getUserAgentBytes();
  }
  /**
   * <pre>
   * Additional information for an audit event for API requests. [Public model
   * analog: ApiRequestEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ApiRequestData}
   */
  public static final class ApiRequestData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ApiRequestData)
      ApiRequestDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ApiRequestData.newBuilder() to construct.
    private ApiRequestData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ApiRequestData() {
      requestParameters_ = "";
      apiVersion_ = "";
      userAgent_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ApiRequestData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.class, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder.class);
    }

    public static final int REQUESTPARAMETERS_FIELD_NUMBER = 1;
    private volatile java.lang.Object requestParameters_;
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The requestParameters.
     */
    @java.lang.Override
    public java.lang.String getRequestParameters() {
      java.lang.Object ref = requestParameters_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        requestParameters_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The bytes for requestParameters.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestParametersBytes() {
      java.lang.Object ref = requestParameters_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestParameters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MUTATING_FIELD_NUMBER = 2;
    private boolean mutating_;
    /**
     * <pre>
     * Whether the request mutates the state of resources.
     * </pre>
     *
     * <code>bool mutating = 2;</code>
     * @return The mutating.
     */
    @java.lang.Override
    public boolean getMutating() {
      return mutating_;
    }

    public static final int APIVERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object apiVersion_;
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 3;</code>
     * @return The apiVersion.
     */
    @java.lang.Override
    public java.lang.String getApiVersion() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        apiVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 3;</code>
     * @return The bytes for apiVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiVersionBytes() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USERAGENT_FIELD_NUMBER = 4;
    private volatile java.lang.Object userAgent_;
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 4;</code>
     * @return The userAgent.
     */
    @java.lang.Override
    public java.lang.String getUserAgent() {
      java.lang.Object ref = userAgent_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userAgent_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 4;</code>
     * @return The bytes for userAgent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserAgentBytes() {
      java.lang.Object ref = userAgent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userAgent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestParameters_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, requestParameters_);
      }
      if (mutating_ != false) {
        output.writeBool(2, mutating_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, apiVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAgent_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, userAgent_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestParameters_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, requestParameters_);
      }
      if (mutating_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(2, mutating_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, apiVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAgent_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, userAgent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData other = (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) obj;

      if (!getRequestParameters()
          .equals(other.getRequestParameters())) return false;
      if (getMutating()
          != other.getMutating()) return false;
      if (!getApiVersion()
          .equals(other.getApiVersion())) return false;
      if (!getUserAgent()
          .equals(other.getUserAgent())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REQUESTPARAMETERS_FIELD_NUMBER;
      hash = (53 * hash) + getRequestParameters().hashCode();
      hash = (37 * hash) + MUTATING_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getMutating());
      hash = (37 * hash) + APIVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getApiVersion().hashCode();
      hash = (37 * hash) + USERAGENT_FIELD_NUMBER;
      hash = (53 * hash) + getUserAgent().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information for an audit event for API requests. [Public model
     * analog: ApiRequestEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ApiRequestData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ApiRequestData)
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.class, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        requestParameters_ = "";

        mutating_ = false;

        apiVersion_ = "";

        userAgent_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData result = new com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData(this);
        result.requestParameters_ = requestParameters_;
        result.mutating_ = mutating_;
        result.apiVersion_ = apiVersion_;
        result.userAgent_ = userAgent_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData.getDefaultInstance()) return this;
        if (!other.getRequestParameters().isEmpty()) {
          requestParameters_ = other.requestParameters_;
          onChanged();
        }
        if (other.getMutating() != false) {
          setMutating(other.getMutating());
        }
        if (!other.getApiVersion().isEmpty()) {
          apiVersion_ = other.apiVersion_;
          onChanged();
        }
        if (!other.getUserAgent().isEmpty()) {
          userAgent_ = other.userAgent_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                requestParameters_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                mutating_ = input.readBool();

                break;
              } // case 16
              case 26: {
                apiVersion_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                userAgent_ = input.readStringRequireUtf8();

                break;
              } // case 34
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object requestParameters_ = "";
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return The requestParameters.
       */
      public java.lang.String getRequestParameters() {
        java.lang.Object ref = requestParameters_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestParameters_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return The bytes for requestParameters.
       */
      public com.google.protobuf.ByteString
          getRequestParametersBytes() {
        java.lang.Object ref = requestParameters_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestParameters_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @param value The requestParameters to set.
       * @return This builder for chaining.
       */
      public Builder setRequestParameters(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        requestParameters_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestParameters() {
        
        requestParameters_ = getDefaultInstance().getRequestParameters();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @param value The bytes for requestParameters to set.
       * @return This builder for chaining.
       */
      public Builder setRequestParametersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        requestParameters_ = value;
        onChanged();
        return this;
      }

      private boolean mutating_ ;
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 2;</code>
       * @return The mutating.
       */
      @java.lang.Override
      public boolean getMutating() {
        return mutating_;
      }
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 2;</code>
       * @param value The mutating to set.
       * @return This builder for chaining.
       */
      public Builder setMutating(boolean value) {
        
        mutating_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearMutating() {
        
        mutating_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object apiVersion_ = "";
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 3;</code>
       * @return The apiVersion.
       */
      public java.lang.String getApiVersion() {
        java.lang.Object ref = apiVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          apiVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 3;</code>
       * @return The bytes for apiVersion.
       */
      public com.google.protobuf.ByteString
          getApiVersionBytes() {
        java.lang.Object ref = apiVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 3;</code>
       * @param value The apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        apiVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiVersion() {
        
        apiVersion_ = getDefaultInstance().getApiVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 3;</code>
       * @param value The bytes for apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        apiVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object userAgent_ = "";
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 4;</code>
       * @return The userAgent.
       */
      public java.lang.String getUserAgent() {
        java.lang.Object ref = userAgent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userAgent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 4;</code>
       * @return The bytes for userAgent.
       */
      public com.google.protobuf.ByteString
          getUserAgentBytes() {
        java.lang.Object ref = userAgent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userAgent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 4;</code>
       * @param value The userAgent to set.
       * @return This builder for chaining.
       */
      public Builder setUserAgent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userAgent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserAgent() {
        
        userAgent_ = getDefaultInstance().getUserAgent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 4;</code>
       * @param value The bytes for userAgent to set.
       * @return This builder for chaining.
       */
      public Builder setUserAgentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userAgent_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ApiRequestData)
    }

    // @@protoc_insertion_point(class_scope:audit.ApiRequestData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ApiRequestData>
        PARSER = new com.google.protobuf.AbstractParser<ApiRequestData>() {
      @java.lang.Override
      public ApiRequestData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ApiRequestData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ApiRequestData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InteractiveLoginEventDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.InteractiveLoginEventData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The identityProviderCrn.
     */
    java.lang.String getIdentityProviderCrn();
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The bytes for identityProviderCrn.
     */
    com.google.protobuf.ByteString
        getIdentityProviderCrnBytes();

    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The identityProviderSessionId.
     */
    java.lang.String getIdentityProviderSessionId();
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The bytes for identityProviderSessionId.
     */
    com.google.protobuf.ByteString
        getIdentityProviderSessionIdBytes();

    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The identityProviderUserId.
     */
    java.lang.String getIdentityProviderUserId();
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The bytes for identityProviderUserId.
     */
    com.google.protobuf.ByteString
        getIdentityProviderUserIdBytes();

    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The email.
     */
    java.lang.String getEmail();
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The bytes for email.
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The firstName.
     */
    java.lang.String getFirstName();
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The bytes for firstName.
     */
    com.google.protobuf.ByteString
        getFirstNameBytes();

    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The lastName.
     */
    java.lang.String getLastName();
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The bytes for lastName.
     */
    com.google.protobuf.ByteString
        getLastNameBytes();

    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @return A list containing the groups.
     */
    java.util.List<java.lang.String>
        getGroupsList();
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @return The count of groups.
     */
    int getGroupsCount();
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @param index The index of the element to return.
     * @return The groups at the given index.
     */
    java.lang.String getGroups(int index);
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the groups at the given index.
     */
    com.google.protobuf.ByteString
        getGroupsBytes(int index);

    /**
     * <pre>
     * The Azure Object Id of the user, if provided.
     * </pre>
     *
     * <code>string azureObjectId = 9;</code>
     * @return The azureObjectId.
     */
    java.lang.String getAzureObjectId();
    /**
     * <pre>
     * The Azure Object Id of the user, if provided.
     * </pre>
     *
     * <code>string azureObjectId = 9;</code>
     * @return The bytes for azureObjectId.
     */
    com.google.protobuf.ByteString
        getAzureObjectIdBytes();
  }
  /**
   * <pre>
   * Additional information for an audit event for interactive login events.
   * [Public model analog: InteractiveLoginEvent]
   * </pre>
   *
   * Protobuf type {@code audit.InteractiveLoginEventData}
   */
  public static final class InteractiveLoginEventData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.InteractiveLoginEventData)
      InteractiveLoginEventDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InteractiveLoginEventData.newBuilder() to construct.
    private InteractiveLoginEventData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InteractiveLoginEventData() {
      identityProviderCrn_ = "";
      identityProviderSessionId_ = "";
      identityProviderUserId_ = "";
      email_ = "";
      firstName_ = "";
      lastName_ = "";
      groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      azureObjectId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new InteractiveLoginEventData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEventData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEventData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder.class);
    }

    public static final int IDENTITYPROVIDERCRN_FIELD_NUMBER = 1;
    private volatile java.lang.Object identityProviderCrn_;
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The identityProviderCrn.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderCrn() {
      java.lang.Object ref = identityProviderCrn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderCrn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The bytes for identityProviderCrn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderCrnBytes() {
      java.lang.Object ref = identityProviderCrn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderCrn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IDENTITYPROVIDERSESSIONID_FIELD_NUMBER = 2;
    private volatile java.lang.Object identityProviderSessionId_;
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The identityProviderSessionId.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderSessionId() {
      java.lang.Object ref = identityProviderSessionId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderSessionId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The bytes for identityProviderSessionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderSessionIdBytes() {
      java.lang.Object ref = identityProviderSessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderSessionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IDENTITYPROVIDERUSERID_FIELD_NUMBER = 3;
    private volatile java.lang.Object identityProviderUserId_;
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The identityProviderUserId.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderUserId() {
      java.lang.Object ref = identityProviderUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The bytes for identityProviderUserId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderUserIdBytes() {
      java.lang.Object ref = identityProviderUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EMAIL_FIELD_NUMBER = 4;
    private volatile java.lang.Object email_;
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The email.
     */
    @java.lang.Override
    public java.lang.String getEmail() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        email_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The bytes for email.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        email_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIRSTNAME_FIELD_NUMBER = 6;
    private volatile java.lang.Object firstName_;
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The firstName.
     */
    @java.lang.Override
    public java.lang.String getFirstName() {
      java.lang.Object ref = firstName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        firstName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The bytes for firstName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFirstNameBytes() {
      java.lang.Object ref = firstName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        firstName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LASTNAME_FIELD_NUMBER = 7;
    private volatile java.lang.Object lastName_;
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The lastName.
     */
    @java.lang.Override
    public java.lang.String getLastName() {
      java.lang.Object ref = lastName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lastName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The bytes for lastName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLastNameBytes() {
      java.lang.Object ref = lastName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lastName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int GROUPS_FIELD_NUMBER = 8;
    private com.google.protobuf.LazyStringList groups_;
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @return A list containing the groups.
     */
    public com.google.protobuf.ProtocolStringList
        getGroupsList() {
      return groups_;
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @return The count of groups.
     */
    public int getGroupsCount() {
      return groups_.size();
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @param index The index of the element to return.
     * @return The groups at the given index.
     */
    public java.lang.String getGroups(int index) {
      return groups_.get(index);
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 8;</code>
     * @param index The index of the value to return.
     * @return The bytes of the groups at the given index.
     */
    public com.google.protobuf.ByteString
        getGroupsBytes(int index) {
      return groups_.getByteString(index);
    }

    public static final int AZUREOBJECTID_FIELD_NUMBER = 9;
    private volatile java.lang.Object azureObjectId_;
    /**
     * <pre>
     * The Azure Object Id of the user, if provided.
     * </pre>
     *
     * <code>string azureObjectId = 9;</code>
     * @return The azureObjectId.
     */
    @java.lang.Override
    public java.lang.String getAzureObjectId() {
      java.lang.Object ref = azureObjectId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        azureObjectId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The Azure Object Id of the user, if provided.
     * </pre>
     *
     * <code>string azureObjectId = 9;</code>
     * @return The bytes for azureObjectId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAzureObjectIdBytes() {
      java.lang.Object ref = azureObjectId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        azureObjectId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderCrn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, identityProviderCrn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderSessionId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, identityProviderSessionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderUserId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, identityProviderUserId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(email_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, email_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, firstName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, lastName_);
      }
      for (int i = 0; i < groups_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, groups_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(azureObjectId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, azureObjectId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderCrn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, identityProviderCrn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderSessionId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, identityProviderSessionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderUserId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, identityProviderUserId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(email_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, email_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, firstName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, lastName_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < groups_.size(); i++) {
          dataSize += computeStringSizeNoTag(groups_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGroupsList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(azureObjectId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, azureObjectId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData other = (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) obj;

      if (!getIdentityProviderCrn()
          .equals(other.getIdentityProviderCrn())) return false;
      if (!getIdentityProviderSessionId()
          .equals(other.getIdentityProviderSessionId())) return false;
      if (!getIdentityProviderUserId()
          .equals(other.getIdentityProviderUserId())) return false;
      if (!getEmail()
          .equals(other.getEmail())) return false;
      if (!getFirstName()
          .equals(other.getFirstName())) return false;
      if (!getLastName()
          .equals(other.getLastName())) return false;
      if (!getGroupsList()
          .equals(other.getGroupsList())) return false;
      if (!getAzureObjectId()
          .equals(other.getAzureObjectId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERCRN_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderCrn().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERSESSIONID_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderSessionId().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERUSERID_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderUserId().hashCode();
      hash = (37 * hash) + EMAIL_FIELD_NUMBER;
      hash = (53 * hash) + getEmail().hashCode();
      hash = (37 * hash) + FIRSTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getFirstName().hashCode();
      hash = (37 * hash) + LASTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getLastName().hashCode();
      if (getGroupsCount() > 0) {
        hash = (37 * hash) + GROUPS_FIELD_NUMBER;
        hash = (53 * hash) + getGroupsList().hashCode();
      }
      hash = (37 * hash) + AZUREOBJECTID_FIELD_NUMBER;
      hash = (53 * hash) + getAzureObjectId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information for an audit event for interactive login events.
     * [Public model analog: InteractiveLoginEvent]
     * </pre>
     *
     * Protobuf type {@code audit.InteractiveLoginEventData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.InteractiveLoginEventData)
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEventData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEventData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        identityProviderCrn_ = "";

        identityProviderSessionId_ = "";

        identityProviderUserId_ = "";

        email_ = "";

        firstName_ = "";

        lastName_ = "";

        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        azureObjectId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEventData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData result = new com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData(this);
        int from_bitField0_ = bitField0_;
        result.identityProviderCrn_ = identityProviderCrn_;
        result.identityProviderSessionId_ = identityProviderSessionId_;
        result.identityProviderUserId_ = identityProviderUserId_;
        result.email_ = email_;
        result.firstName_ = firstName_;
        result.lastName_ = lastName_;
        if (((bitField0_ & 0x00000001) != 0)) {
          groups_ = groups_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.groups_ = groups_;
        result.azureObjectId_ = azureObjectId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData.getDefaultInstance()) return this;
        if (!other.getIdentityProviderCrn().isEmpty()) {
          identityProviderCrn_ = other.identityProviderCrn_;
          onChanged();
        }
        if (!other.getIdentityProviderSessionId().isEmpty()) {
          identityProviderSessionId_ = other.identityProviderSessionId_;
          onChanged();
        }
        if (!other.getIdentityProviderUserId().isEmpty()) {
          identityProviderUserId_ = other.identityProviderUserId_;
          onChanged();
        }
        if (!other.getEmail().isEmpty()) {
          email_ = other.email_;
          onChanged();
        }
        if (!other.getFirstName().isEmpty()) {
          firstName_ = other.firstName_;
          onChanged();
        }
        if (!other.getLastName().isEmpty()) {
          lastName_ = other.lastName_;
          onChanged();
        }
        if (!other.groups_.isEmpty()) {
          if (groups_.isEmpty()) {
            groups_ = other.groups_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureGroupsIsMutable();
            groups_.addAll(other.groups_);
          }
          onChanged();
        }
        if (!other.getAzureObjectId().isEmpty()) {
          azureObjectId_ = other.azureObjectId_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                identityProviderCrn_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                identityProviderSessionId_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                identityProviderUserId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                email_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 50: {
                firstName_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 58: {
                lastName_ = input.readStringRequireUtf8();

                break;
              } // case 58
              case 66: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureGroupsIsMutable();
                groups_.add(s);
                break;
              } // case 66
              case 74: {
                azureObjectId_ = input.readStringRequireUtf8();

                break;
              } // case 74
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object identityProviderCrn_ = "";
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return The identityProviderCrn.
       */
      public java.lang.String getIdentityProviderCrn() {
        java.lang.Object ref = identityProviderCrn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderCrn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return The bytes for identityProviderCrn.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderCrnBytes() {
        java.lang.Object ref = identityProviderCrn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderCrn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @param value The identityProviderCrn to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderCrn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderCrn() {
        
        identityProviderCrn_ = getDefaultInstance().getIdentityProviderCrn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @param value The bytes for identityProviderCrn to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderCrn_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object identityProviderSessionId_ = "";
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return The identityProviderSessionId.
       */
      public java.lang.String getIdentityProviderSessionId() {
        java.lang.Object ref = identityProviderSessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderSessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return The bytes for identityProviderSessionId.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderSessionIdBytes() {
        java.lang.Object ref = identityProviderSessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderSessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @param value The identityProviderSessionId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderSessionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderSessionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderSessionId() {
        
        identityProviderSessionId_ = getDefaultInstance().getIdentityProviderSessionId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @param value The bytes for identityProviderSessionId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderSessionId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object identityProviderUserId_ = "";
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return The identityProviderUserId.
       */
      public java.lang.String getIdentityProviderUserId() {
        java.lang.Object ref = identityProviderUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return The bytes for identityProviderUserId.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderUserIdBytes() {
        java.lang.Object ref = identityProviderUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @param value The identityProviderUserId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderUserId() {
        
        identityProviderUserId_ = getDefaultInstance().getIdentityProviderUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @param value The bytes for identityProviderUserId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object email_ = "";
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return The email.
       */
      public java.lang.String getEmail() {
        java.lang.Object ref = email_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          email_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return The bytes for email.
       */
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = email_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          email_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @param value The email to set.
       * @return This builder for chaining.
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        email_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEmail() {
        
        email_ = getDefaultInstance().getEmail();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @param value The bytes for email to set.
       * @return This builder for chaining.
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        email_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object firstName_ = "";
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return The firstName.
       */
      public java.lang.String getFirstName() {
        java.lang.Object ref = firstName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          firstName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return The bytes for firstName.
       */
      public com.google.protobuf.ByteString
          getFirstNameBytes() {
        java.lang.Object ref = firstName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          firstName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @param value The firstName to set.
       * @return This builder for chaining.
       */
      public Builder setFirstName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        firstName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFirstName() {
        
        firstName_ = getDefaultInstance().getFirstName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @param value The bytes for firstName to set.
       * @return This builder for chaining.
       */
      public Builder setFirstNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        firstName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lastName_ = "";
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return The lastName.
       */
      public java.lang.String getLastName() {
        java.lang.Object ref = lastName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lastName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return The bytes for lastName.
       */
      public com.google.protobuf.ByteString
          getLastNameBytes() {
        java.lang.Object ref = lastName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lastName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @param value The lastName to set.
       * @return This builder for chaining.
       */
      public Builder setLastName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lastName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearLastName() {
        
        lastName_ = getDefaultInstance().getLastName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @param value The bytes for lastName to set.
       * @return This builder for chaining.
       */
      public Builder setLastNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lastName_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureGroupsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          groups_ = new com.google.protobuf.LazyStringArrayList(groups_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @return A list containing the groups.
       */
      public com.google.protobuf.ProtocolStringList
          getGroupsList() {
        return groups_.getUnmodifiableView();
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @return The count of groups.
       */
      public int getGroupsCount() {
        return groups_.size();
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param index The index of the element to return.
       * @return The groups at the given index.
       */
      public java.lang.String getGroups(int index) {
        return groups_.get(index);
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param index The index of the value to return.
       * @return The bytes of the groups at the given index.
       */
      public com.google.protobuf.ByteString
          getGroupsBytes(int index) {
        return groups_.getByteString(index);
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param index The index to set the value at.
       * @param value The groups to set.
       * @return This builder for chaining.
       */
      public Builder setGroups(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGroupsIsMutable();
        groups_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param value The groups to add.
       * @return This builder for chaining.
       */
      public Builder addGroups(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGroupsIsMutable();
        groups_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param values The groups to add.
       * @return This builder for chaining.
       */
      public Builder addAllGroups(
          java.lang.Iterable<java.lang.String> values) {
        ensureGroupsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, groups_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroups() {
        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 8;</code>
       * @param value The bytes of the groups to add.
       * @return This builder for chaining.
       */
      public Builder addGroupsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureGroupsIsMutable();
        groups_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object azureObjectId_ = "";
      /**
       * <pre>
       * The Azure Object Id of the user, if provided.
       * </pre>
       *
       * <code>string azureObjectId = 9;</code>
       * @return The azureObjectId.
       */
      public java.lang.String getAzureObjectId() {
        java.lang.Object ref = azureObjectId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          azureObjectId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The Azure Object Id of the user, if provided.
       * </pre>
       *
       * <code>string azureObjectId = 9;</code>
       * @return The bytes for azureObjectId.
       */
      public com.google.protobuf.ByteString
          getAzureObjectIdBytes() {
        java.lang.Object ref = azureObjectId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          azureObjectId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The Azure Object Id of the user, if provided.
       * </pre>
       *
       * <code>string azureObjectId = 9;</code>
       * @param value The azureObjectId to set.
       * @return This builder for chaining.
       */
      public Builder setAzureObjectId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        azureObjectId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Azure Object Id of the user, if provided.
       * </pre>
       *
       * <code>string azureObjectId = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearAzureObjectId() {
        
        azureObjectId_ = getDefaultInstance().getAzureObjectId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Azure Object Id of the user, if provided.
       * </pre>
       *
       * <code>string azureObjectId = 9;</code>
       * @param value The bytes for azureObjectId to set.
       * @return This builder for chaining.
       */
      public Builder setAzureObjectIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        azureObjectId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.InteractiveLoginEventData)
    }

    // @@protoc_insertion_point(class_scope:audit.InteractiveLoginEventData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InteractiveLoginEventData>
        PARSER = new com.google.protobuf.AbstractParser<InteractiveLoginEventData>() {
      @java.lang.Override
      public InteractiveLoginEventData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<InteractiveLoginEventData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<InteractiveLoginEventData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AttemptAuditEventResultOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.AttemptAuditEventResult)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The event ID of the corresponding attempt audit event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * The event ID of the corresponding attempt audit event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the result occurred.
     * </pre>
     *
     * <code>int64 resultTimestamp = 11;</code>
     * @return The resultTimestamp.
     */
    long getResultTimestamp();

    /**
     * <pre>
     * Result code.
     * </pre>
     *
     * <code>string resultCode = 12;</code>
     * @return The resultCode.
     */
    java.lang.String getResultCode();
    /**
     * <pre>
     * Result code.
     * </pre>
     *
     * <code>string resultCode = 12;</code>
     * @return The bytes for resultCode.
     */
    com.google.protobuf.ByteString
        getResultCodeBytes();

    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 14;</code>
     * @return The resultMessage.
     */
    java.lang.String getResultMessage();
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 14;</code>
     * @return The bytes for resultMessage.
     */
    com.google.protobuf.ByteString
        getResultMessageBytes();

    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     * @return Whether the resultApiRequestData field is set.
     */
    boolean hasResultApiRequestData();
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     * @return The resultApiRequestData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getResultApiRequestData();
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder getResultApiRequestDataOrBuilder();

    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     * @return Whether the resultServiceEventData field is set.
     */
    boolean hasResultServiceEventData();
    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     * @return The resultServiceEventData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getResultServiceEventData();
    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder getResultServiceEventDataOrBuilder();

    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     * @return Whether the resultInteractiveLoginEventData field is set.
     */
    boolean hasResultInteractiveLoginEventData();
    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     * @return The resultInteractiveLoginEventData.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getResultInteractiveLoginEventData();
    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder getResultInteractiveLoginEventDataOrBuilder();

    public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.EventTypeCase getEventTypeCase();
  }
  /**
   * <pre>
   * Result information corresponding to a previous attempt audit event.
   * </pre>
   *
   * Protobuf type {@code audit.AttemptAuditEventResult}
   */
  public static final class AttemptAuditEventResult extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.AttemptAuditEventResult)
      AttemptAuditEventResultOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use AttemptAuditEventResult.newBuilder() to construct.
    private AttemptAuditEventResult(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private AttemptAuditEventResult() {
      id_ = "";
      resultCode_ = "";
      resultMessage_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new AttemptAuditEventResult();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AttemptAuditEventResult_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AttemptAuditEventResult_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.class, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder.class);
    }

    private int eventTypeCase_ = 0;
    private java.lang.Object eventType_;
    public enum EventTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      RESULTAPIREQUESTDATA(15),
      RESULTSERVICEEVENTDATA(16),
      RESULTINTERACTIVELOGINEVENTDATA(17),
      EVENTTYPE_NOT_SET(0);
      private final int value;
      private EventTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventTypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static EventTypeCase forNumber(int value) {
        switch (value) {
          case 15: return RESULTAPIREQUESTDATA;
          case 16: return RESULTSERVICEEVENTDATA;
          case 17: return RESULTINTERACTIVELOGINEVENTDATA;
          case 0: return EVENTTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EventTypeCase
    getEventTypeCase() {
      return EventTypeCase.forNumber(
          eventTypeCase_);
    }

    public static final int ID_FIELD_NUMBER = 1;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * The event ID of the corresponding attempt audit event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The event ID of the corresponding attempt audit event.
     * </pre>
     *
     * <code>string id = 1;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTTIMESTAMP_FIELD_NUMBER = 11;
    private long resultTimestamp_;
    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the result occurred.
     * </pre>
     *
     * <code>int64 resultTimestamp = 11;</code>
     * @return The resultTimestamp.
     */
    @java.lang.Override
    public long getResultTimestamp() {
      return resultTimestamp_;
    }

    public static final int RESULTCODE_FIELD_NUMBER = 12;
    private volatile java.lang.Object resultCode_;
    /**
     * <pre>
     * Result code.
     * </pre>
     *
     * <code>string resultCode = 12;</code>
     * @return The resultCode.
     */
    @java.lang.Override
    public java.lang.String getResultCode() {
      java.lang.Object ref = resultCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resultCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Result code.
     * </pre>
     *
     * <code>string resultCode = 12;</code>
     * @return The bytes for resultCode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultCodeBytes() {
      java.lang.Object ref = resultCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTMESSAGE_FIELD_NUMBER = 14;
    private volatile java.lang.Object resultMessage_;
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 14;</code>
     * @return The resultMessage.
     */
    @java.lang.Override
    public java.lang.String getResultMessage() {
      java.lang.Object ref = resultMessage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resultMessage_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 14;</code>
     * @return The bytes for resultMessage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultMessageBytes() {
      java.lang.Object ref = resultMessage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTAPIREQUESTDATA_FIELD_NUMBER = 15;
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     * @return Whether the resultApiRequestData field is set.
     */
    @java.lang.Override
    public boolean hasResultApiRequestData() {
      return eventTypeCase_ == 15;
    }
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     * @return The resultApiRequestData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getResultApiRequestData() {
      if (eventTypeCase_ == 15) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information specific to an API request.
     * </pre>
     *
     * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder getResultApiRequestDataOrBuilder() {
      if (eventTypeCase_ == 15) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
    }

    public static final int RESULTSERVICEEVENTDATA_FIELD_NUMBER = 16;
    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     * @return Whether the resultServiceEventData field is set.
     */
    @java.lang.Override
    public boolean hasResultServiceEventData() {
      return eventTypeCase_ == 16;
    }
    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     * @return The resultServiceEventData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getResultServiceEventData() {
      if (eventTypeCase_ == 16) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information about a service event result.
     * </pre>
     *
     * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder getResultServiceEventDataOrBuilder() {
      if (eventTypeCase_ == 16) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
    }

    public static final int RESULTINTERACTIVELOGINEVENTDATA_FIELD_NUMBER = 17;
    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     * @return Whether the resultInteractiveLoginEventData field is set.
     */
    @java.lang.Override
    public boolean hasResultInteractiveLoginEventData() {
      return eventTypeCase_ == 17;
    }
    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     * @return The resultInteractiveLoginEventData.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getResultInteractiveLoginEventData() {
      if (eventTypeCase_ == 17) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
    }
    /**
     * <pre>
     * Information about an interactive login event result.
     * </pre>
     *
     * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder getResultInteractiveLoginEventDataOrBuilder() {
      if (eventTypeCase_ == 17) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, id_);
      }
      if (resultTimestamp_ != 0L) {
        output.writeInt64(11, resultTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultCode_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 12, resultCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultMessage_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, resultMessage_);
      }
      if (eventTypeCase_ == 15) {
        output.writeMessage(15, (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_);
      }
      if (eventTypeCase_ == 16) {
        output.writeMessage(16, (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_);
      }
      if (eventTypeCase_ == 17) {
        output.writeMessage(17, (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, id_);
      }
      if (resultTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(11, resultTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultCode_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(12, resultCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultMessage_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, resultMessage_);
      }
      if (eventTypeCase_ == 15) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(15, (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_);
      }
      if (eventTypeCase_ == 16) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(16, (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_);
      }
      if (eventTypeCase_ == 17) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(17, (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult other = (com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult) obj;

      if (!getId()
          .equals(other.getId())) return false;
      if (getResultTimestamp()
          != other.getResultTimestamp()) return false;
      if (!getResultCode()
          .equals(other.getResultCode())) return false;
      if (!getResultMessage()
          .equals(other.getResultMessage())) return false;
      if (!getEventTypeCase().equals(other.getEventTypeCase())) return false;
      switch (eventTypeCase_) {
        case 15:
          if (!getResultApiRequestData()
              .equals(other.getResultApiRequestData())) return false;
          break;
        case 16:
          if (!getResultServiceEventData()
              .equals(other.getResultServiceEventData())) return false;
          break;
        case 17:
          if (!getResultInteractiveLoginEventData()
              .equals(other.getResultInteractiveLoginEventData())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + RESULTTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getResultTimestamp());
      hash = (37 * hash) + RESULTCODE_FIELD_NUMBER;
      hash = (53 * hash) + getResultCode().hashCode();
      hash = (37 * hash) + RESULTMESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getResultMessage().hashCode();
      switch (eventTypeCase_) {
        case 15:
          hash = (37 * hash) + RESULTAPIREQUESTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getResultApiRequestData().hashCode();
          break;
        case 16:
          hash = (37 * hash) + RESULTSERVICEEVENTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getResultServiceEventData().hashCode();
          break;
        case 17:
          hash = (37 * hash) + RESULTINTERACTIVELOGINEVENTDATA_FIELD_NUMBER;
          hash = (53 * hash) + getResultInteractiveLoginEventData().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Result information corresponding to a previous attempt audit event.
     * </pre>
     *
     * Protobuf type {@code audit.AttemptAuditEventResult}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.AttemptAuditEventResult)
        com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResultOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AttemptAuditEventResult_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AttemptAuditEventResult_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.class, com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        id_ = "";

        resultTimestamp_ = 0L;

        resultCode_ = "";

        resultMessage_ = "";

        if (resultApiRequestDataBuilder_ != null) {
          resultApiRequestDataBuilder_.clear();
        }
        if (resultServiceEventDataBuilder_ != null) {
          resultServiceEventDataBuilder_.clear();
        }
        if (resultInteractiveLoginEventDataBuilder_ != null) {
          resultInteractiveLoginEventDataBuilder_.clear();
        }
        eventTypeCase_ = 0;
        eventType_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_AttemptAuditEventResult_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult build() {
        com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult result = new com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult(this);
        result.id_ = id_;
        result.resultTimestamp_ = resultTimestamp_;
        result.resultCode_ = resultCode_;
        result.resultMessage_ = resultMessage_;
        if (eventTypeCase_ == 15) {
          if (resultApiRequestDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = resultApiRequestDataBuilder_.build();
          }
        }
        if (eventTypeCase_ == 16) {
          if (resultServiceEventDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = resultServiceEventDataBuilder_.build();
          }
        }
        if (eventTypeCase_ == 17) {
          if (resultInteractiveLoginEventDataBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = resultInteractiveLoginEventDataBuilder_.build();
          }
        }
        result.eventTypeCase_ = eventTypeCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult.getDefaultInstance()) return this;
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (other.getResultTimestamp() != 0L) {
          setResultTimestamp(other.getResultTimestamp());
        }
        if (!other.getResultCode().isEmpty()) {
          resultCode_ = other.resultCode_;
          onChanged();
        }
        if (!other.getResultMessage().isEmpty()) {
          resultMessage_ = other.resultMessage_;
          onChanged();
        }
        switch (other.getEventTypeCase()) {
          case RESULTAPIREQUESTDATA: {
            mergeResultApiRequestData(other.getResultApiRequestData());
            break;
          }
          case RESULTSERVICEEVENTDATA: {
            mergeResultServiceEventData(other.getResultServiceEventData());
            break;
          }
          case RESULTINTERACTIVELOGINEVENTDATA: {
            mergeResultInteractiveLoginEventData(other.getResultInteractiveLoginEventData());
            break;
          }
          case EVENTTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                id_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 88: {
                resultTimestamp_ = input.readInt64();

                break;
              } // case 88
              case 98: {
                resultCode_ = input.readStringRequireUtf8();

                break;
              } // case 98
              case 114: {
                resultMessage_ = input.readStringRequireUtf8();

                break;
              } // case 114
              case 122: {
                input.readMessage(
                    getResultApiRequestDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 15;
                break;
              } // case 122
              case 130: {
                input.readMessage(
                    getResultServiceEventDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 16;
                break;
              } // case 130
              case 138: {
                input.readMessage(
                    getResultInteractiveLoginEventDataFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 17;
                break;
              } // case 138
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int eventTypeCase_ = 0;
      private java.lang.Object eventType_;
      public EventTypeCase
          getEventTypeCase() {
        return EventTypeCase.forNumber(
            eventTypeCase_);
      }

      public Builder clearEventType() {
        eventTypeCase_ = 0;
        eventType_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object id_ = "";
      /**
       * <pre>
       * The event ID of the corresponding attempt audit event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The event ID of the corresponding attempt audit event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The event ID of the corresponding attempt audit event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The event ID of the corresponding attempt audit event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The event ID of the corresponding attempt audit event.
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private long resultTimestamp_ ;
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the result occurred.
       * </pre>
       *
       * <code>int64 resultTimestamp = 11;</code>
       * @return The resultTimestamp.
       */
      @java.lang.Override
      public long getResultTimestamp() {
        return resultTimestamp_;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the result occurred.
       * </pre>
       *
       * <code>int64 resultTimestamp = 11;</code>
       * @param value The resultTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setResultTimestamp(long value) {
        
        resultTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the result occurred.
       * </pre>
       *
       * <code>int64 resultTimestamp = 11;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultTimestamp() {
        
        resultTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object resultCode_ = "";
      /**
       * <pre>
       * Result code.
       * </pre>
       *
       * <code>string resultCode = 12;</code>
       * @return The resultCode.
       */
      public java.lang.String getResultCode() {
        java.lang.Object ref = resultCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Result code.
       * </pre>
       *
       * <code>string resultCode = 12;</code>
       * @return The bytes for resultCode.
       */
      public com.google.protobuf.ByteString
          getResultCodeBytes() {
        java.lang.Object ref = resultCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Result code.
       * </pre>
       *
       * <code>string resultCode = 12;</code>
       * @param value The resultCode to set.
       * @return This builder for chaining.
       */
      public Builder setResultCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Result code.
       * </pre>
       *
       * <code>string resultCode = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultCode() {
        
        resultCode_ = getDefaultInstance().getResultCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Result code.
       * </pre>
       *
       * <code>string resultCode = 12;</code>
       * @param value The bytes for resultCode to set.
       * @return This builder for chaining.
       */
      public Builder setResultCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultCode_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object resultMessage_ = "";
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 14;</code>
       * @return The resultMessage.
       */
      public java.lang.String getResultMessage() {
        java.lang.Object ref = resultMessage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultMessage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 14;</code>
       * @return The bytes for resultMessage.
       */
      public com.google.protobuf.ByteString
          getResultMessageBytes() {
        java.lang.Object ref = resultMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 14;</code>
       * @param value The resultMessage to set.
       * @return This builder for chaining.
       */
      public Builder setResultMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultMessage() {
        
        resultMessage_ = getDefaultInstance().getResultMessage();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 14;</code>
       * @param value The bytes for resultMessage to set.
       * @return This builder for chaining.
       */
      public Builder setResultMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultMessage_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder> resultApiRequestDataBuilder_;
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       * @return Whether the resultApiRequestData field is set.
       */
      @java.lang.Override
      public boolean hasResultApiRequestData() {
        return eventTypeCase_ == 15;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       * @return The resultApiRequestData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getResultApiRequestData() {
        if (resultApiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 15) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 15) {
            return resultApiRequestDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      public Builder setResultApiRequestData(com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData value) {
        if (resultApiRequestDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          resultApiRequestDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      public Builder setResultApiRequestData(
          com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder builderForValue) {
        if (resultApiRequestDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          resultApiRequestDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      public Builder mergeResultApiRequestData(com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData value) {
        if (resultApiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 15 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 15) {
            resultApiRequestDataBuilder_.mergeFrom(value);
          } else {
            resultApiRequestDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 15;
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      public Builder clearResultApiRequestData() {
        if (resultApiRequestDataBuilder_ == null) {
          if (eventTypeCase_ == 15) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 15) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          resultApiRequestDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder getResultApiRequestDataBuilder() {
        return getResultApiRequestDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder getResultApiRequestDataOrBuilder() {
        if ((eventTypeCase_ == 15) && (resultApiRequestDataBuilder_ != null)) {
          return resultApiRequestDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 15) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information specific to an API request.
       * </pre>
       *
       * <code>.audit.ResultApiRequestData resultApiRequestData = 15;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder> 
          getResultApiRequestDataFieldBuilder() {
        if (resultApiRequestDataBuilder_ == null) {
          if (!(eventTypeCase_ == 15)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
          }
          resultApiRequestDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 15;
        onChanged();;
        return resultApiRequestDataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder> resultServiceEventDataBuilder_;
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       * @return Whether the resultServiceEventData field is set.
       */
      @java.lang.Override
      public boolean hasResultServiceEventData() {
        return eventTypeCase_ == 16;
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       * @return The resultServiceEventData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getResultServiceEventData() {
        if (resultServiceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 16) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 16) {
            return resultServiceEventDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      public Builder setResultServiceEventData(com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData value) {
        if (resultServiceEventDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          resultServiceEventDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      public Builder setResultServiceEventData(
          com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder builderForValue) {
        if (resultServiceEventDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          resultServiceEventDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      public Builder mergeResultServiceEventData(com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData value) {
        if (resultServiceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 16 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 16) {
            resultServiceEventDataBuilder_.mergeFrom(value);
          } else {
            resultServiceEventDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 16;
        return this;
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      public Builder clearResultServiceEventData() {
        if (resultServiceEventDataBuilder_ == null) {
          if (eventTypeCase_ == 16) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 16) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          resultServiceEventDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder getResultServiceEventDataBuilder() {
        return getResultServiceEventDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder getResultServiceEventDataOrBuilder() {
        if ((eventTypeCase_ == 16) && (resultServiceEventDataBuilder_ != null)) {
          return resultServiceEventDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 16) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information about a service event result.
       * </pre>
       *
       * <code>.audit.ResultServiceEventData resultServiceEventData = 16;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder> 
          getResultServiceEventDataFieldBuilder() {
        if (resultServiceEventDataBuilder_ == null) {
          if (!(eventTypeCase_ == 16)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
          }
          resultServiceEventDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 16;
        onChanged();;
        return resultServiceEventDataBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder> resultInteractiveLoginEventDataBuilder_;
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       * @return Whether the resultInteractiveLoginEventData field is set.
       */
      @java.lang.Override
      public boolean hasResultInteractiveLoginEventData() {
        return eventTypeCase_ == 17;
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       * @return The resultInteractiveLoginEventData.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getResultInteractiveLoginEventData() {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 17) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 17) {
            return resultInteractiveLoginEventDataBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      public Builder setResultInteractiveLoginEventData(com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData value) {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          resultInteractiveLoginEventDataBuilder_.setMessage(value);
        }
        eventTypeCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      public Builder setResultInteractiveLoginEventData(
          com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder builderForValue) {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          resultInteractiveLoginEventDataBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      public Builder mergeResultInteractiveLoginEventData(com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData value) {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 17 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 17) {
            resultInteractiveLoginEventDataBuilder_.mergeFrom(value);
          } else {
            resultInteractiveLoginEventDataBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 17;
        return this;
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      public Builder clearResultInteractiveLoginEventData() {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          if (eventTypeCase_ == 17) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 17) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          resultInteractiveLoginEventDataBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder getResultInteractiveLoginEventDataBuilder() {
        return getResultInteractiveLoginEventDataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder getResultInteractiveLoginEventDataOrBuilder() {
        if ((eventTypeCase_ == 17) && (resultInteractiveLoginEventDataBuilder_ != null)) {
          return resultInteractiveLoginEventDataBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 17) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information about an interactive login event result.
       * </pre>
       *
       * <code>.audit.ResultInteractiveLoginEventData resultInteractiveLoginEventData = 17;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder> 
          getResultInteractiveLoginEventDataFieldBuilder() {
        if (resultInteractiveLoginEventDataBuilder_ == null) {
          if (!(eventTypeCase_ == 17)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
          }
          resultInteractiveLoginEventDataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 17;
        onChanged();;
        return resultInteractiveLoginEventDataBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.AttemptAuditEventResult)
    }

    // @@protoc_insertion_point(class_scope:audit.AttemptAuditEventResult)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<AttemptAuditEventResult>
        PARSER = new com.google.protobuf.AbstractParser<AttemptAuditEventResult>() {
      @java.lang.Override
      public AttemptAuditEventResult parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<AttemptAuditEventResult> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<AttemptAuditEventResult> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.AttemptAuditEventResult getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResultApiRequestDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ResultApiRequestData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 1;</code>
     * @return The responseParameters.
     */
    java.lang.String getResponseParameters();
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 1;</code>
     * @return The bytes for responseParameters.
     */
    com.google.protobuf.ByteString
        getResponseParametersBytes();
  }
  /**
   * <pre>
   * Additional information for audit event result data for API requests.
   * [Public model analog: ApiRequestEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ResultApiRequestData}
   */
  public static final class ResultApiRequestData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ResultApiRequestData)
      ResultApiRequestDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResultApiRequestData.newBuilder() to construct.
    private ResultApiRequestData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResultApiRequestData() {
      responseParameters_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResultApiRequestData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultApiRequestData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultApiRequestData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder.class);
    }

    public static final int RESPONSEPARAMETERS_FIELD_NUMBER = 1;
    private volatile java.lang.Object responseParameters_;
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 1;</code>
     * @return The responseParameters.
     */
    @java.lang.Override
    public java.lang.String getResponseParameters() {
      java.lang.Object ref = responseParameters_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        responseParameters_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 1;</code>
     * @return The bytes for responseParameters.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResponseParametersBytes() {
      java.lang.Object ref = responseParameters_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        responseParameters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(responseParameters_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, responseParameters_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(responseParameters_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, responseParameters_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData other = (com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) obj;

      if (!getResponseParameters()
          .equals(other.getResponseParameters())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + RESPONSEPARAMETERS_FIELD_NUMBER;
      hash = (53 * hash) + getResponseParameters().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information for audit event result data for API requests.
     * [Public model analog: ApiRequestEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ResultApiRequestData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ResultApiRequestData)
        com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultApiRequestData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultApiRequestData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        responseParameters_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultApiRequestData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData result = new com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData(this);
        result.responseParameters_ = responseParameters_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData.getDefaultInstance()) return this;
        if (!other.getResponseParameters().isEmpty()) {
          responseParameters_ = other.responseParameters_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                responseParameters_ = input.readStringRequireUtf8();

                break;
              } // case 10
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object responseParameters_ = "";
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 1;</code>
       * @return The responseParameters.
       */
      public java.lang.String getResponseParameters() {
        java.lang.Object ref = responseParameters_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          responseParameters_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 1;</code>
       * @return The bytes for responseParameters.
       */
      public com.google.protobuf.ByteString
          getResponseParametersBytes() {
        java.lang.Object ref = responseParameters_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          responseParameters_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 1;</code>
       * @param value The responseParameters to set.
       * @return This builder for chaining.
       */
      public Builder setResponseParameters(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        responseParameters_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponseParameters() {
        
        responseParameters_ = getDefaultInstance().getResponseParameters();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 1;</code>
       * @param value The bytes for responseParameters to set.
       * @return This builder for chaining.
       */
      public Builder setResponseParametersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        responseParameters_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ResultApiRequestData)
    }

    // @@protoc_insertion_point(class_scope:audit.ResultApiRequestData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResultApiRequestData>
        PARSER = new com.google.protobuf.AbstractParser<ResultApiRequestData>() {
      @java.lang.Override
      public ResultApiRequestData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ResultApiRequestData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResultApiRequestData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultApiRequestData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResultServiceEventDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ResultServiceEventData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @return A list containing the resourceCrn.
     */
    java.util.List<java.lang.String>
        getResourceCrnList();
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @return The count of resourceCrn.
     */
    int getResourceCrnCount();
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @param index The index of the element to return.
     * @return The resourceCrn at the given index.
     */
    java.lang.String getResourceCrn(int index);
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the resourceCrn at the given index.
     */
    com.google.protobuf.ByteString
        getResourceCrnBytes(int index);

    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for the result.
     * Each service defines the structure of details for its results. It is
     * strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * Note that there is no schema version specified for the result details.
     * Their schema version must match that of the attempt event details.
     * </pre>
     *
     * <code>string resultDetails = 2;</code>
     * @return The resultDetails.
     */
    java.lang.String getResultDetails();
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for the result.
     * Each service defines the structure of details for its results. It is
     * strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * Note that there is no schema version specified for the result details.
     * Their schema version must match that of the attempt event details.
     * </pre>
     *
     * <code>string resultDetails = 2;</code>
     * @return The bytes for resultDetails.
     */
    com.google.protobuf.ByteString
        getResultDetailsBytes();
  }
  /**
   * <pre>
   * Additional information for audit event result data sent by control plane
   * services which is not directly triggered by an API request.
   * [Public model analog: CdpServiceEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ResultServiceEventData}
   */
  public static final class ResultServiceEventData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ResultServiceEventData)
      ResultServiceEventDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResultServiceEventData.newBuilder() to construct.
    private ResultServiceEventData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResultServiceEventData() {
      resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      resultDetails_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResultServiceEventData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultServiceEventData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultServiceEventData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder.class);
    }

    public static final int RESOURCECRN_FIELD_NUMBER = 1;
    private com.google.protobuf.LazyStringList resourceCrn_;
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @return A list containing the resourceCrn.
     */
    public com.google.protobuf.ProtocolStringList
        getResourceCrnList() {
      return resourceCrn_;
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @return The count of resourceCrn.
     */
    public int getResourceCrnCount() {
      return resourceCrn_.size();
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @param index The index of the element to return.
     * @return The resourceCrn at the given index.
     */
    public java.lang.String getResourceCrn(int index) {
      return resourceCrn_.get(index);
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 1;</code>
     * @param index The index of the value to return.
     * @return The bytes of the resourceCrn at the given index.
     */
    public com.google.protobuf.ByteString
        getResourceCrnBytes(int index) {
      return resourceCrn_.getByteString(index);
    }

    public static final int RESULTDETAILS_FIELD_NUMBER = 2;
    private volatile java.lang.Object resultDetails_;
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for the result.
     * Each service defines the structure of details for its results. It is
     * strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * Note that there is no schema version specified for the result details.
     * Their schema version must match that of the attempt event details.
     * </pre>
     *
     * <code>string resultDetails = 2;</code>
     * @return The resultDetails.
     */
    @java.lang.Override
    public java.lang.String getResultDetails() {
      java.lang.Object ref = resultDetails_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resultDetails_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional, opaque JSON that contains additional details for the result.
     * Each service defines the structure of details for its results. It is
     * strongly recommended that control plane service authors use versioned
     * protobuf, and use code supplied by the audit service
     * (AuditClient.printDetails) to convert protobuf details into JSON and to
     * produce user-facing documentation.
     * Note that there is no schema version specified for the result details.
     * Their schema version must match that of the attempt event details.
     * </pre>
     *
     * <code>string resultDetails = 2;</code>
     * @return The bytes for resultDetails.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultDetailsBytes() {
      java.lang.Object ref = resultDetails_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultDetails_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      for (int i = 0; i < resourceCrn_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, resourceCrn_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultDetails_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resultDetails_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      {
        int dataSize = 0;
        for (int i = 0; i < resourceCrn_.size(); i++) {
          dataSize += computeStringSizeNoTag(resourceCrn_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getResourceCrnList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultDetails_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, resultDetails_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData other = (com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) obj;

      if (!getResourceCrnList()
          .equals(other.getResourceCrnList())) return false;
      if (!getResultDetails()
          .equals(other.getResultDetails())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getResourceCrnCount() > 0) {
        hash = (37 * hash) + RESOURCECRN_FIELD_NUMBER;
        hash = (53 * hash) + getResourceCrnList().hashCode();
      }
      hash = (37 * hash) + RESULTDETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getResultDetails().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information for audit event result data sent by control plane
     * services which is not directly triggered by an API request.
     * [Public model analog: CdpServiceEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ResultServiceEventData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ResultServiceEventData)
        com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultServiceEventData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultServiceEventData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        resultDetails_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultServiceEventData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData result = new com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData(this);
        int from_bitField0_ = bitField0_;
        if (((bitField0_ & 0x00000001) != 0)) {
          resourceCrn_ = resourceCrn_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.resourceCrn_ = resourceCrn_;
        result.resultDetails_ = resultDetails_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData.getDefaultInstance()) return this;
        if (!other.resourceCrn_.isEmpty()) {
          if (resourceCrn_.isEmpty()) {
            resourceCrn_ = other.resourceCrn_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureResourceCrnIsMutable();
            resourceCrn_.addAll(other.resourceCrn_);
          }
          onChanged();
        }
        if (!other.getResultDetails().isEmpty()) {
          resultDetails_ = other.resultDetails_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureResourceCrnIsMutable();
                resourceCrn_.add(s);
                break;
              } // case 10
              case 18: {
                resultDetails_ = input.readStringRequireUtf8();

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private com.google.protobuf.LazyStringList resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureResourceCrnIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          resourceCrn_ = new com.google.protobuf.LazyStringArrayList(resourceCrn_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @return A list containing the resourceCrn.
       */
      public com.google.protobuf.ProtocolStringList
          getResourceCrnList() {
        return resourceCrn_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @return The count of resourceCrn.
       */
      public int getResourceCrnCount() {
        return resourceCrn_.size();
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param index The index of the element to return.
       * @return The resourceCrn at the given index.
       */
      public java.lang.String getResourceCrn(int index) {
        return resourceCrn_.get(index);
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param index The index of the value to return.
       * @return The bytes of the resourceCrn at the given index.
       */
      public com.google.protobuf.ByteString
          getResourceCrnBytes(int index) {
        return resourceCrn_.getByteString(index);
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param index The index to set the value at.
       * @param value The resourceCrn to set.
       * @return This builder for chaining.
       */
      public Builder setResourceCrn(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceCrnIsMutable();
        resourceCrn_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param value The resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addResourceCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceCrnIsMutable();
        resourceCrn_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param values The resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addAllResourceCrn(
          java.lang.Iterable<java.lang.String> values) {
        ensureResourceCrnIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, resourceCrn_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceCrn() {
        resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 1;</code>
       * @param value The bytes of the resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addResourceCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureResourceCrnIsMutable();
        resourceCrn_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object resultDetails_ = "";
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for the result.
       * Each service defines the structure of details for its results. It is
       * strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * Note that there is no schema version specified for the result details.
       * Their schema version must match that of the attempt event details.
       * </pre>
       *
       * <code>string resultDetails = 2;</code>
       * @return The resultDetails.
       */
      public java.lang.String getResultDetails() {
        java.lang.Object ref = resultDetails_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultDetails_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for the result.
       * Each service defines the structure of details for its results. It is
       * strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * Note that there is no schema version specified for the result details.
       * Their schema version must match that of the attempt event details.
       * </pre>
       *
       * <code>string resultDetails = 2;</code>
       * @return The bytes for resultDetails.
       */
      public com.google.protobuf.ByteString
          getResultDetailsBytes() {
        java.lang.Object ref = resultDetails_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultDetails_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for the result.
       * Each service defines the structure of details for its results. It is
       * strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * Note that there is no schema version specified for the result details.
       * Their schema version must match that of the attempt event details.
       * </pre>
       *
       * <code>string resultDetails = 2;</code>
       * @param value The resultDetails to set.
       * @return This builder for chaining.
       */
      public Builder setResultDetails(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultDetails_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for the result.
       * Each service defines the structure of details for its results. It is
       * strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * Note that there is no schema version specified for the result details.
       * Their schema version must match that of the attempt event details.
       * </pre>
       *
       * <code>string resultDetails = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultDetails() {
        
        resultDetails_ = getDefaultInstance().getResultDetails();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional, opaque JSON that contains additional details for the result.
       * Each service defines the structure of details for its results. It is
       * strongly recommended that control plane service authors use versioned
       * protobuf, and use code supplied by the audit service
       * (AuditClient.printDetails) to convert protobuf details into JSON and to
       * produce user-facing documentation.
       * Note that there is no schema version specified for the result details.
       * Their schema version must match that of the attempt event details.
       * </pre>
       *
       * <code>string resultDetails = 2;</code>
       * @param value The bytes for resultDetails to set.
       * @return This builder for chaining.
       */
      public Builder setResultDetailsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultDetails_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ResultServiceEventData)
    }

    // @@protoc_insertion_point(class_scope:audit.ResultServiceEventData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResultServiceEventData>
        PARSER = new com.google.protobuf.AbstractParser<ResultServiceEventData>() {
      @java.lang.Override
      public ResultServiceEventData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ResultServiceEventData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResultServiceEventData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultServiceEventData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ResultInteractiveLoginEventDataOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ResultInteractiveLoginEventData)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Whether the user was marked as account admin. Can only be 'true' for users
     * using Cloudera SSO.
     * </pre>
     *
     * <code>bool accountAdmin = 1;</code>
     * @return The accountAdmin.
     */
    boolean getAccountAdmin();

    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 2;</code>
     * @return The userCrn.
     */
    java.lang.String getUserCrn();
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 2;</code>
     * @return The bytes for userCrn.
     */
    com.google.protobuf.ByteString
        getUserCrnBytes();
  }
  /**
   * <pre>
   * Additional information for audit event result data for interactive login
   * events. [Public model analog: InteractiveLoginEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ResultInteractiveLoginEventData}
   */
  public static final class ResultInteractiveLoginEventData extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ResultInteractiveLoginEventData)
      ResultInteractiveLoginEventDataOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ResultInteractiveLoginEventData.newBuilder() to construct.
    private ResultInteractiveLoginEventData(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ResultInteractiveLoginEventData() {
      userCrn_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ResultInteractiveLoginEventData();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultInteractiveLoginEventData_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultInteractiveLoginEventData_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder.class);
    }

    public static final int ACCOUNTADMIN_FIELD_NUMBER = 1;
    private boolean accountAdmin_;
    /**
     * <pre>
     * Whether the user was marked as account admin. Can only be 'true' for users
     * using Cloudera SSO.
     * </pre>
     *
     * <code>bool accountAdmin = 1;</code>
     * @return The accountAdmin.
     */
    @java.lang.Override
    public boolean getAccountAdmin() {
      return accountAdmin_;
    }

    public static final int USERCRN_FIELD_NUMBER = 2;
    private volatile java.lang.Object userCrn_;
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 2;</code>
     * @return The userCrn.
     */
    @java.lang.Override
    public java.lang.String getUserCrn() {
      java.lang.Object ref = userCrn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userCrn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 2;</code>
     * @return The bytes for userCrn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserCrnBytes() {
      java.lang.Object ref = userCrn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userCrn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (accountAdmin_ != false) {
        output.writeBool(1, accountAdmin_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userCrn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userCrn_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (accountAdmin_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(1, accountAdmin_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userCrn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, userCrn_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData other = (com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) obj;

      if (getAccountAdmin()
          != other.getAccountAdmin()) return false;
      if (!getUserCrn()
          .equals(other.getUserCrn())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCOUNTADMIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAccountAdmin());
      hash = (37 * hash) + USERCRN_FIELD_NUMBER;
      hash = (53 * hash) + getUserCrn().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Additional information for audit event result data for interactive login
     * events. [Public model analog: InteractiveLoginEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ResultInteractiveLoginEventData}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ResultInteractiveLoginEventData)
        com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventDataOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultInteractiveLoginEventData_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultInteractiveLoginEventData_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.class, com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        accountAdmin_ = false;

        userCrn_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ResultInteractiveLoginEventData_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData result = new com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData(this);
        result.accountAdmin_ = accountAdmin_;
        result.userCrn_ = userCrn_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData.getDefaultInstance()) return this;
        if (other.getAccountAdmin() != false) {
          setAccountAdmin(other.getAccountAdmin());
        }
        if (!other.getUserCrn().isEmpty()) {
          userCrn_ = other.userCrn_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                accountAdmin_ = input.readBool();

                break;
              } // case 8
              case 18: {
                userCrn_ = input.readStringRequireUtf8();

                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private boolean accountAdmin_ ;
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 1;</code>
       * @return The accountAdmin.
       */
      @java.lang.Override
      public boolean getAccountAdmin() {
        return accountAdmin_;
      }
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 1;</code>
       * @param value The accountAdmin to set.
       * @return This builder for chaining.
       */
      public Builder setAccountAdmin(boolean value) {
        
        accountAdmin_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountAdmin() {
        
        accountAdmin_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object userCrn_ = "";
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 2;</code>
       * @return The userCrn.
       */
      public java.lang.String getUserCrn() {
        java.lang.Object ref = userCrn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userCrn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 2;</code>
       * @return The bytes for userCrn.
       */
      public com.google.protobuf.ByteString
          getUserCrnBytes() {
        java.lang.Object ref = userCrn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userCrn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 2;</code>
       * @param value The userCrn to set.
       * @return This builder for chaining.
       */
      public Builder setUserCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userCrn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserCrn() {
        
        userCrn_ = getDefaultInstance().getUserCrn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 2;</code>
       * @param value The bytes for userCrn to set.
       * @return This builder for chaining.
       */
      public Builder setUserCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userCrn_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ResultInteractiveLoginEventData)
    }

    // @@protoc_insertion_point(class_scope:audit.ResultInteractiveLoginEventData)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ResultInteractiveLoginEventData>
        PARSER = new com.google.protobuf.AbstractParser<ResultInteractiveLoginEventData>() {
      @java.lang.Override
      public ResultInteractiveLoginEventData parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ResultInteractiveLoginEventData> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ResultInteractiveLoginEventData> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ResultInteractiveLoginEventData getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ApiRequestEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ApiRequestEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The requestParameters.
     */
    java.lang.String getRequestParameters();
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The bytes for requestParameters.
     */
    com.google.protobuf.ByteString
        getRequestParametersBytes();

    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 2;</code>
     * @return The responseParameters.
     */
    java.lang.String getResponseParameters();
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 2;</code>
     * @return The bytes for responseParameters.
     */
    com.google.protobuf.ByteString
        getResponseParametersBytes();

    /**
     * <pre>
     * Whether the request mutates the state of resources.
     * </pre>
     *
     * <code>bool mutating = 3;</code>
     * @return The mutating.
     */
    boolean getMutating();

    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 4;</code>
     * @return The apiVersion.
     */
    java.lang.String getApiVersion();
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 4;</code>
     * @return The bytes for apiVersion.
     */
    com.google.protobuf.ByteString
        getApiVersionBytes();

    /**
     * <pre>
     * The source IP address of the requester.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The sourceIPAddress.
     */
    java.lang.String getSourceIPAddress();
    /**
     * <pre>
     * The source IP address of the requester.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The bytes for sourceIPAddress.
     */
    com.google.protobuf.ByteString
        getSourceIPAddressBytes();

    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 6;</code>
     * @return The userAgent.
     */
    java.lang.String getUserAgent();
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 6;</code>
     * @return The bytes for userAgent.
     */
    com.google.protobuf.ByteString
        getUserAgentBytes();
  }
  /**
   * <pre>
   * The public model for an API request event, as a part of CdpAuditEvent. These
   * events are triggered by requests to public CDP API services. [Internal model
   * analogs: ApiRequestData, ResultApiRequestData] [API analog: ApiRequestEvent]
   * </pre>
   *
   * Protobuf type {@code audit.ApiRequestEvent}
   */
  public static final class ApiRequestEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ApiRequestEvent)
      ApiRequestEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ApiRequestEvent.newBuilder() to construct.
    private ApiRequestEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ApiRequestEvent() {
      requestParameters_ = "";
      responseParameters_ = "";
      apiVersion_ = "";
      sourceIPAddress_ = "";
      userAgent_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ApiRequestEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder.class);
    }

    public static final int REQUESTPARAMETERS_FIELD_NUMBER = 1;
    private volatile java.lang.Object requestParameters_;
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The requestParameters.
     */
    @java.lang.Override
    public java.lang.String getRequestParameters() {
      java.lang.Object ref = requestParameters_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        requestParameters_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API request parameters.
     * </pre>
     *
     * <code>string requestParameters = 1;</code>
     * @return The bytes for requestParameters.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestParametersBytes() {
      java.lang.Object ref = requestParameters_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestParameters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESPONSEPARAMETERS_FIELD_NUMBER = 2;
    private volatile java.lang.Object responseParameters_;
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 2;</code>
     * @return The responseParameters.
     */
    @java.lang.Override
    public java.lang.String getResponseParameters() {
      java.lang.Object ref = responseParameters_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        responseParameters_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API response parameters.
     * </pre>
     *
     * <code>string responseParameters = 2;</code>
     * @return The bytes for responseParameters.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResponseParametersBytes() {
      java.lang.Object ref = responseParameters_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        responseParameters_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int MUTATING_FIELD_NUMBER = 3;
    private boolean mutating_;
    /**
     * <pre>
     * Whether the request mutates the state of resources.
     * </pre>
     *
     * <code>bool mutating = 3;</code>
     * @return The mutating.
     */
    @java.lang.Override
    public boolean getMutating() {
      return mutating_;
    }

    public static final int APIVERSION_FIELD_NUMBER = 4;
    private volatile java.lang.Object apiVersion_;
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 4;</code>
     * @return The apiVersion.
     */
    @java.lang.Override
    public java.lang.String getApiVersion() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        apiVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The API version associated with the request.
     * </pre>
     *
     * <code>string apiVersion = 4;</code>
     * @return The bytes for apiVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getApiVersionBytes() {
      java.lang.Object ref = apiVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        apiVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCEIPADDRESS_FIELD_NUMBER = 5;
    private volatile java.lang.Object sourceIPAddress_;
    /**
     * <pre>
     * The source IP address of the requester.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The sourceIPAddress.
     */
    @java.lang.Override
    public java.lang.String getSourceIPAddress() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sourceIPAddress_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The source IP address of the requester.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The bytes for sourceIPAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSourceIPAddressBytes() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceIPAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USERAGENT_FIELD_NUMBER = 6;
    private volatile java.lang.Object userAgent_;
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 6;</code>
     * @return The userAgent.
     */
    @java.lang.Override
    public java.lang.String getUserAgent() {
      java.lang.Object ref = userAgent_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userAgent_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The user agent that made the API request.
     * </pre>
     *
     * <code>string userAgent = 6;</code>
     * @return The bytes for userAgent.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserAgentBytes() {
      java.lang.Object ref = userAgent_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userAgent_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestParameters_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, requestParameters_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(responseParameters_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, responseParameters_);
      }
      if (mutating_ != false) {
        output.writeBool(3, mutating_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, apiVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAgent_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, userAgent_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestParameters_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, requestParameters_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(responseParameters_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, responseParameters_);
      }
      if (mutating_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(3, mutating_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(apiVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, apiVersion_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userAgent_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, userAgent_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent other = (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) obj;

      if (!getRequestParameters()
          .equals(other.getRequestParameters())) return false;
      if (!getResponseParameters()
          .equals(other.getResponseParameters())) return false;
      if (getMutating()
          != other.getMutating()) return false;
      if (!getApiVersion()
          .equals(other.getApiVersion())) return false;
      if (!getSourceIPAddress()
          .equals(other.getSourceIPAddress())) return false;
      if (!getUserAgent()
          .equals(other.getUserAgent())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + REQUESTPARAMETERS_FIELD_NUMBER;
      hash = (53 * hash) + getRequestParameters().hashCode();
      hash = (37 * hash) + RESPONSEPARAMETERS_FIELD_NUMBER;
      hash = (53 * hash) + getResponseParameters().hashCode();
      hash = (37 * hash) + MUTATING_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getMutating());
      hash = (37 * hash) + APIVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getApiVersion().hashCode();
      hash = (37 * hash) + SOURCEIPADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getSourceIPAddress().hashCode();
      hash = (37 * hash) + USERAGENT_FIELD_NUMBER;
      hash = (53 * hash) + getUserAgent().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The public model for an API request event, as a part of CdpAuditEvent. These
     * events are triggered by requests to public CDP API services. [Internal model
     * analogs: ApiRequestData, ResultApiRequestData] [API analog: ApiRequestEvent]
     * </pre>
     *
     * Protobuf type {@code audit.ApiRequestEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ApiRequestEvent)
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        requestParameters_ = "";

        responseParameters_ = "";

        mutating_ = false;

        apiVersion_ = "";

        sourceIPAddress_ = "";

        userAgent_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ApiRequestEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent result = new com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent(this);
        result.requestParameters_ = requestParameters_;
        result.responseParameters_ = responseParameters_;
        result.mutating_ = mutating_;
        result.apiVersion_ = apiVersion_;
        result.sourceIPAddress_ = sourceIPAddress_;
        result.userAgent_ = userAgent_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance()) return this;
        if (!other.getRequestParameters().isEmpty()) {
          requestParameters_ = other.requestParameters_;
          onChanged();
        }
        if (!other.getResponseParameters().isEmpty()) {
          responseParameters_ = other.responseParameters_;
          onChanged();
        }
        if (other.getMutating() != false) {
          setMutating(other.getMutating());
        }
        if (!other.getApiVersion().isEmpty()) {
          apiVersion_ = other.apiVersion_;
          onChanged();
        }
        if (!other.getSourceIPAddress().isEmpty()) {
          sourceIPAddress_ = other.sourceIPAddress_;
          onChanged();
        }
        if (!other.getUserAgent().isEmpty()) {
          userAgent_ = other.userAgent_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                requestParameters_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                responseParameters_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 24: {
                mutating_ = input.readBool();

                break;
              } // case 24
              case 34: {
                apiVersion_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 42: {
                sourceIPAddress_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                userAgent_ = input.readStringRequireUtf8();

                break;
              } // case 50
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object requestParameters_ = "";
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return The requestParameters.
       */
      public java.lang.String getRequestParameters() {
        java.lang.Object ref = requestParameters_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestParameters_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return The bytes for requestParameters.
       */
      public com.google.protobuf.ByteString
          getRequestParametersBytes() {
        java.lang.Object ref = requestParameters_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestParameters_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @param value The requestParameters to set.
       * @return This builder for chaining.
       */
      public Builder setRequestParameters(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        requestParameters_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestParameters() {
        
        requestParameters_ = getDefaultInstance().getRequestParameters();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API request parameters.
       * </pre>
       *
       * <code>string requestParameters = 1;</code>
       * @param value The bytes for requestParameters to set.
       * @return This builder for chaining.
       */
      public Builder setRequestParametersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        requestParameters_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object responseParameters_ = "";
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 2;</code>
       * @return The responseParameters.
       */
      public java.lang.String getResponseParameters() {
        java.lang.Object ref = responseParameters_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          responseParameters_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 2;</code>
       * @return The bytes for responseParameters.
       */
      public com.google.protobuf.ByteString
          getResponseParametersBytes() {
        java.lang.Object ref = responseParameters_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          responseParameters_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 2;</code>
       * @param value The responseParameters to set.
       * @return This builder for chaining.
       */
      public Builder setResponseParameters(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        responseParameters_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResponseParameters() {
        
        responseParameters_ = getDefaultInstance().getResponseParameters();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API response parameters.
       * </pre>
       *
       * <code>string responseParameters = 2;</code>
       * @param value The bytes for responseParameters to set.
       * @return This builder for chaining.
       */
      public Builder setResponseParametersBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        responseParameters_ = value;
        onChanged();
        return this;
      }

      private boolean mutating_ ;
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 3;</code>
       * @return The mutating.
       */
      @java.lang.Override
      public boolean getMutating() {
        return mutating_;
      }
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 3;</code>
       * @param value The mutating to set.
       * @return This builder for chaining.
       */
      public Builder setMutating(boolean value) {
        
        mutating_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the request mutates the state of resources.
       * </pre>
       *
       * <code>bool mutating = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearMutating() {
        
        mutating_ = false;
        onChanged();
        return this;
      }

      private java.lang.Object apiVersion_ = "";
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 4;</code>
       * @return The apiVersion.
       */
      public java.lang.String getApiVersion() {
        java.lang.Object ref = apiVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          apiVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 4;</code>
       * @return The bytes for apiVersion.
       */
      public com.google.protobuf.ByteString
          getApiVersionBytes() {
        java.lang.Object ref = apiVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          apiVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 4;</code>
       * @param value The apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        apiVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearApiVersion() {
        
        apiVersion_ = getDefaultInstance().getApiVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The API version associated with the request.
       * </pre>
       *
       * <code>string apiVersion = 4;</code>
       * @param value The bytes for apiVersion to set.
       * @return This builder for chaining.
       */
      public Builder setApiVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        apiVersion_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourceIPAddress_ = "";
      /**
       * <pre>
       * The source IP address of the requester.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return The sourceIPAddress.
       */
      public java.lang.String getSourceIPAddress() {
        java.lang.Object ref = sourceIPAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceIPAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The source IP address of the requester.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return The bytes for sourceIPAddress.
       */
      public com.google.protobuf.ByteString
          getSourceIPAddressBytes() {
        java.lang.Object ref = sourceIPAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceIPAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The source IP address of the requester.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @param value The sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address of the requester.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceIPAddress() {
        
        sourceIPAddress_ = getDefaultInstance().getSourceIPAddress();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address of the requester.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @param value The bytes for sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object userAgent_ = "";
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 6;</code>
       * @return The userAgent.
       */
      public java.lang.String getUserAgent() {
        java.lang.Object ref = userAgent_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userAgent_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 6;</code>
       * @return The bytes for userAgent.
       */
      public com.google.protobuf.ByteString
          getUserAgentBytes() {
        java.lang.Object ref = userAgent_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userAgent_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 6;</code>
       * @param value The userAgent to set.
       * @return This builder for chaining.
       */
      public Builder setUserAgent(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userAgent_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserAgent() {
        
        userAgent_ = getDefaultInstance().getUserAgent();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user agent that made the API request.
       * </pre>
       *
       * <code>string userAgent = 6;</code>
       * @param value The bytes for userAgent to set.
       * @return This builder for chaining.
       */
      public Builder setUserAgentBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userAgent_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ApiRequestEvent)
    }

    // @@protoc_insertion_point(class_scope:audit.ApiRequestEvent)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ApiRequestEvent>
        PARSER = new com.google.protobuf.AbstractParser<ApiRequestEvent>() {
      @java.lang.Override
      public ApiRequestEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ApiRequestEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ApiRequestEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CdpServiceEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CdpServiceEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Optional JSON that contains additional details for an event and/or a result
     * associated with the event. The contents of this field are a merging of
     * event and result details. So, as in the internal model, each service
     * defines the structure of details, preferably with versioned protobuf.
     * </pre>
     *
     * <code>string additionalServiceEventDetails = 1;</code>
     * @return The additionalServiceEventDetails.
     */
    java.lang.String getAdditionalServiceEventDetails();
    /**
     * <pre>
     * Optional JSON that contains additional details for an event and/or a result
     * associated with the event. The contents of this field are a merging of
     * event and result details. So, as in the internal model, each service
     * defines the structure of details, preferably with versioned protobuf.
     * </pre>
     *
     * <code>string additionalServiceEventDetails = 1;</code>
     * @return The bytes for additionalServiceEventDetails.
     */
    com.google.protobuf.ByteString
        getAdditionalServiceEventDetailsBytes();

    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @return A list containing the resourceCrn.
     */
    java.util.List<java.lang.String>
        getResourceCrnList();
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @return The count of resourceCrn.
     */
    int getResourceCrnCount();
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @param index The index of the element to return.
     * @return The resourceCrn at the given index.
     */
    java.lang.String getResourceCrn(int index);
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the resourceCrn at the given index.
     */
    com.google.protobuf.ByteString
        getResourceCrnBytes(int index);

    /**
     * <pre>
     * The schema version of the additional service event details for this service
     * event. Maintained by the service.
     * </pre>
     *
     * <code>string detailsVersion = 3;</code>
     * @return The detailsVersion.
     */
    java.lang.String getDetailsVersion();
    /**
     * <pre>
     * The schema version of the additional service event details for this service
     * event. Maintained by the service.
     * </pre>
     *
     * <code>string detailsVersion = 3;</code>
     * @return The bytes for detailsVersion.
     */
    com.google.protobuf.ByteString
        getDetailsVersionBytes();
  }
  /**
   * <pre>
   * The public model for a service event, as a part of CdpAuditEvent. These
   * events are created by Cloudera CDP services, but are not directly triggered
   * by a request to a public CDP API service. [Internal model analogs:
   * ServiceEventData, ResultServiceEventData] [API analog: CdpServiceEvent]
   * </pre>
   *
   * Protobuf type {@code audit.CdpServiceEvent}
   */
  public static final class CdpServiceEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CdpServiceEvent)
      CdpServiceEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CdpServiceEvent.newBuilder() to construct.
    private CdpServiceEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CdpServiceEvent() {
      additionalServiceEventDetails_ = "";
      resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      detailsVersion_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CdpServiceEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpServiceEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpServiceEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder.class);
    }

    public static final int ADDITIONALSERVICEEVENTDETAILS_FIELD_NUMBER = 1;
    private volatile java.lang.Object additionalServiceEventDetails_;
    /**
     * <pre>
     * Optional JSON that contains additional details for an event and/or a result
     * associated with the event. The contents of this field are a merging of
     * event and result details. So, as in the internal model, each service
     * defines the structure of details, preferably with versioned protobuf.
     * </pre>
     *
     * <code>string additionalServiceEventDetails = 1;</code>
     * @return The additionalServiceEventDetails.
     */
    @java.lang.Override
    public java.lang.String getAdditionalServiceEventDetails() {
      java.lang.Object ref = additionalServiceEventDetails_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        additionalServiceEventDetails_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional JSON that contains additional details for an event and/or a result
     * associated with the event. The contents of this field are a merging of
     * event and result details. So, as in the internal model, each service
     * defines the structure of details, preferably with versioned protobuf.
     * </pre>
     *
     * <code>string additionalServiceEventDetails = 1;</code>
     * @return The bytes for additionalServiceEventDetails.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAdditionalServiceEventDetailsBytes() {
      java.lang.Object ref = additionalServiceEventDetails_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        additionalServiceEventDetails_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESOURCECRN_FIELD_NUMBER = 2;
    private com.google.protobuf.LazyStringList resourceCrn_;
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @return A list containing the resourceCrn.
     */
    public com.google.protobuf.ProtocolStringList
        getResourceCrnList() {
      return resourceCrn_;
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @return The count of resourceCrn.
     */
    public int getResourceCrnCount() {
      return resourceCrn_.size();
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @param index The index of the element to return.
     * @return The resourceCrn at the given index.
     */
    public java.lang.String getResourceCrn(int index) {
      return resourceCrn_.get(index);
    }
    /**
     * <pre>
     * The CRNs of the resources operated on.
     * </pre>
     *
     * <code>repeated string resourceCrn = 2;</code>
     * @param index The index of the value to return.
     * @return The bytes of the resourceCrn at the given index.
     */
    public com.google.protobuf.ByteString
        getResourceCrnBytes(int index) {
      return resourceCrn_.getByteString(index);
    }

    public static final int DETAILSVERSION_FIELD_NUMBER = 3;
    private volatile java.lang.Object detailsVersion_;
    /**
     * <pre>
     * The schema version of the additional service event details for this service
     * event. Maintained by the service.
     * </pre>
     *
     * <code>string detailsVersion = 3;</code>
     * @return The detailsVersion.
     */
    @java.lang.Override
    public java.lang.String getDetailsVersion() {
      java.lang.Object ref = detailsVersion_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        detailsVersion_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The schema version of the additional service event details for this service
     * event. Maintained by the service.
     * </pre>
     *
     * <code>string detailsVersion = 3;</code>
     * @return The bytes for detailsVersion.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getDetailsVersionBytes() {
      java.lang.Object ref = detailsVersion_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        detailsVersion_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(additionalServiceEventDetails_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, additionalServiceEventDetails_);
      }
      for (int i = 0; i < resourceCrn_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, resourceCrn_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(detailsVersion_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, detailsVersion_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(additionalServiceEventDetails_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, additionalServiceEventDetails_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < resourceCrn_.size(); i++) {
          dataSize += computeStringSizeNoTag(resourceCrn_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getResourceCrnList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(detailsVersion_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, detailsVersion_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent other = (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) obj;

      if (!getAdditionalServiceEventDetails()
          .equals(other.getAdditionalServiceEventDetails())) return false;
      if (!getResourceCrnList()
          .equals(other.getResourceCrnList())) return false;
      if (!getDetailsVersion()
          .equals(other.getDetailsVersion())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ADDITIONALSERVICEEVENTDETAILS_FIELD_NUMBER;
      hash = (53 * hash) + getAdditionalServiceEventDetails().hashCode();
      if (getResourceCrnCount() > 0) {
        hash = (37 * hash) + RESOURCECRN_FIELD_NUMBER;
        hash = (53 * hash) + getResourceCrnList().hashCode();
      }
      hash = (37 * hash) + DETAILSVERSION_FIELD_NUMBER;
      hash = (53 * hash) + getDetailsVersion().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The public model for a service event, as a part of CdpAuditEvent. These
     * events are created by Cloudera CDP services, but are not directly triggered
     * by a request to a public CDP API service. [Internal model analogs:
     * ServiceEventData, ResultServiceEventData] [API analog: CdpServiceEvent]
     * </pre>
     *
     * Protobuf type {@code audit.CdpServiceEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CdpServiceEvent)
        com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpServiceEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpServiceEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        additionalServiceEventDetails_ = "";

        resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        detailsVersion_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpServiceEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent result = new com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent(this);
        int from_bitField0_ = bitField0_;
        result.additionalServiceEventDetails_ = additionalServiceEventDetails_;
        if (((bitField0_ & 0x00000001) != 0)) {
          resourceCrn_ = resourceCrn_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.resourceCrn_ = resourceCrn_;
        result.detailsVersion_ = detailsVersion_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance()) return this;
        if (!other.getAdditionalServiceEventDetails().isEmpty()) {
          additionalServiceEventDetails_ = other.additionalServiceEventDetails_;
          onChanged();
        }
        if (!other.resourceCrn_.isEmpty()) {
          if (resourceCrn_.isEmpty()) {
            resourceCrn_ = other.resourceCrn_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureResourceCrnIsMutable();
            resourceCrn_.addAll(other.resourceCrn_);
          }
          onChanged();
        }
        if (!other.getDetailsVersion().isEmpty()) {
          detailsVersion_ = other.detailsVersion_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                additionalServiceEventDetails_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureResourceCrnIsMutable();
                resourceCrn_.add(s);
                break;
              } // case 18
              case 26: {
                detailsVersion_ = input.readStringRequireUtf8();

                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object additionalServiceEventDetails_ = "";
      /**
       * <pre>
       * Optional JSON that contains additional details for an event and/or a result
       * associated with the event. The contents of this field are a merging of
       * event and result details. So, as in the internal model, each service
       * defines the structure of details, preferably with versioned protobuf.
       * </pre>
       *
       * <code>string additionalServiceEventDetails = 1;</code>
       * @return The additionalServiceEventDetails.
       */
      public java.lang.String getAdditionalServiceEventDetails() {
        java.lang.Object ref = additionalServiceEventDetails_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          additionalServiceEventDetails_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional JSON that contains additional details for an event and/or a result
       * associated with the event. The contents of this field are a merging of
       * event and result details. So, as in the internal model, each service
       * defines the structure of details, preferably with versioned protobuf.
       * </pre>
       *
       * <code>string additionalServiceEventDetails = 1;</code>
       * @return The bytes for additionalServiceEventDetails.
       */
      public com.google.protobuf.ByteString
          getAdditionalServiceEventDetailsBytes() {
        java.lang.Object ref = additionalServiceEventDetails_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          additionalServiceEventDetails_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional JSON that contains additional details for an event and/or a result
       * associated with the event. The contents of this field are a merging of
       * event and result details. So, as in the internal model, each service
       * defines the structure of details, preferably with versioned protobuf.
       * </pre>
       *
       * <code>string additionalServiceEventDetails = 1;</code>
       * @param value The additionalServiceEventDetails to set.
       * @return This builder for chaining.
       */
      public Builder setAdditionalServiceEventDetails(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        additionalServiceEventDetails_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional JSON that contains additional details for an event and/or a result
       * associated with the event. The contents of this field are a merging of
       * event and result details. So, as in the internal model, each service
       * defines the structure of details, preferably with versioned protobuf.
       * </pre>
       *
       * <code>string additionalServiceEventDetails = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAdditionalServiceEventDetails() {
        
        additionalServiceEventDetails_ = getDefaultInstance().getAdditionalServiceEventDetails();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional JSON that contains additional details for an event and/or a result
       * associated with the event. The contents of this field are a merging of
       * event and result details. So, as in the internal model, each service
       * defines the structure of details, preferably with versioned protobuf.
       * </pre>
       *
       * <code>string additionalServiceEventDetails = 1;</code>
       * @param value The bytes for additionalServiceEventDetails to set.
       * @return This builder for chaining.
       */
      public Builder setAdditionalServiceEventDetailsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        additionalServiceEventDetails_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureResourceCrnIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          resourceCrn_ = new com.google.protobuf.LazyStringArrayList(resourceCrn_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @return A list containing the resourceCrn.
       */
      public com.google.protobuf.ProtocolStringList
          getResourceCrnList() {
        return resourceCrn_.getUnmodifiableView();
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @return The count of resourceCrn.
       */
      public int getResourceCrnCount() {
        return resourceCrn_.size();
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param index The index of the element to return.
       * @return The resourceCrn at the given index.
       */
      public java.lang.String getResourceCrn(int index) {
        return resourceCrn_.get(index);
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param index The index of the value to return.
       * @return The bytes of the resourceCrn at the given index.
       */
      public com.google.protobuf.ByteString
          getResourceCrnBytes(int index) {
        return resourceCrn_.getByteString(index);
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param index The index to set the value at.
       * @param value The resourceCrn to set.
       * @return This builder for chaining.
       */
      public Builder setResourceCrn(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceCrnIsMutable();
        resourceCrn_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param value The resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addResourceCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureResourceCrnIsMutable();
        resourceCrn_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param values The resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addAllResourceCrn(
          java.lang.Iterable<java.lang.String> values) {
        ensureResourceCrnIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, resourceCrn_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearResourceCrn() {
        resourceCrn_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRNs of the resources operated on.
       * </pre>
       *
       * <code>repeated string resourceCrn = 2;</code>
       * @param value The bytes of the resourceCrn to add.
       * @return This builder for chaining.
       */
      public Builder addResourceCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureResourceCrnIsMutable();
        resourceCrn_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object detailsVersion_ = "";
      /**
       * <pre>
       * The schema version of the additional service event details for this service
       * event. Maintained by the service.
       * </pre>
       *
       * <code>string detailsVersion = 3;</code>
       * @return The detailsVersion.
       */
      public java.lang.String getDetailsVersion() {
        java.lang.Object ref = detailsVersion_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          detailsVersion_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The schema version of the additional service event details for this service
       * event. Maintained by the service.
       * </pre>
       *
       * <code>string detailsVersion = 3;</code>
       * @return The bytes for detailsVersion.
       */
      public com.google.protobuf.ByteString
          getDetailsVersionBytes() {
        java.lang.Object ref = detailsVersion_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          detailsVersion_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The schema version of the additional service event details for this service
       * event. Maintained by the service.
       * </pre>
       *
       * <code>string detailsVersion = 3;</code>
       * @param value The detailsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDetailsVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        detailsVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema version of the additional service event details for this service
       * event. Maintained by the service.
       * </pre>
       *
       * <code>string detailsVersion = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearDetailsVersion() {
        
        detailsVersion_ = getDefaultInstance().getDetailsVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The schema version of the additional service event details for this service
       * event. Maintained by the service.
       * </pre>
       *
       * <code>string detailsVersion = 3;</code>
       * @param value The bytes for detailsVersion to set.
       * @return This builder for chaining.
       */
      public Builder setDetailsVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        detailsVersion_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CdpServiceEvent)
    }

    // @@protoc_insertion_point(class_scope:audit.CdpServiceEvent)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CdpServiceEvent>
        PARSER = new com.google.protobuf.AbstractParser<CdpServiceEvent>() {
      @java.lang.Override
      public CdpServiceEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CdpServiceEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CdpServiceEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface InteractiveLoginEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.InteractiveLoginEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The identityProviderCrn.
     */
    java.lang.String getIdentityProviderCrn();
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The bytes for identityProviderCrn.
     */
    com.google.protobuf.ByteString
        getIdentityProviderCrnBytes();

    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The identityProviderSessionId.
     */
    java.lang.String getIdentityProviderSessionId();
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The bytes for identityProviderSessionId.
     */
    com.google.protobuf.ByteString
        getIdentityProviderSessionIdBytes();

    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The identityProviderUserId.
     */
    java.lang.String getIdentityProviderUserId();
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The bytes for identityProviderUserId.
     */
    com.google.protobuf.ByteString
        getIdentityProviderUserIdBytes();

    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The email.
     */
    java.lang.String getEmail();
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The bytes for email.
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    /**
     * <pre>
     * The source IP address from which the login request came from.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The sourceIPAddress.
     */
    java.lang.String getSourceIPAddress();
    /**
     * <pre>
     * The source IP address from which the login request came from.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The bytes for sourceIPAddress.
     */
    com.google.protobuf.ByteString
        getSourceIPAddressBytes();

    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The firstName.
     */
    java.lang.String getFirstName();
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The bytes for firstName.
     */
    com.google.protobuf.ByteString
        getFirstNameBytes();

    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The lastName.
     */
    java.lang.String getLastName();
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The bytes for lastName.
     */
    com.google.protobuf.ByteString
        getLastNameBytes();

    /**
     * <pre>
     * Whether the user was marked as account admin. Can only be 'true' for users
     * using Cloudera SSO.
     * </pre>
     *
     * <code>bool accountAdmin = 8;</code>
     * @return The accountAdmin.
     */
    boolean getAccountAdmin();

    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @return A list containing the groups.
     */
    java.util.List<java.lang.String>
        getGroupsList();
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @return The count of groups.
     */
    int getGroupsCount();
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @param index The index of the element to return.
     * @return The groups at the given index.
     */
    java.lang.String getGroups(int index);
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the groups at the given index.
     */
    com.google.protobuf.ByteString
        getGroupsBytes(int index);

    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 10;</code>
     * @return The userCrn.
     */
    java.lang.String getUserCrn();
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 10;</code>
     * @return The bytes for userCrn.
     */
    com.google.protobuf.ByteString
        getUserCrnBytes();
  }
  /**
   * <pre>
   * The public model for a login event, as a part of CdpAuditEvent. CDP logs
   * attempts to interactively login to the CDP console. This includes logins
   * using Cloudera SSO and through any federated interactive login events.
   * [Internal model analogs: InteractiveLoginData, ResultInteractiveLoginData]
   * [API analog: InteractiveLoginEvent]
   * </pre>
   *
   * Protobuf type {@code audit.InteractiveLoginEvent}
   */
  public static final class InteractiveLoginEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.InteractiveLoginEvent)
      InteractiveLoginEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use InteractiveLoginEvent.newBuilder() to construct.
    private InteractiveLoginEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private InteractiveLoginEvent() {
      identityProviderCrn_ = "";
      identityProviderSessionId_ = "";
      identityProviderUserId_ = "";
      email_ = "";
      sourceIPAddress_ = "";
      firstName_ = "";
      lastName_ = "";
      groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      userCrn_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new InteractiveLoginEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder.class);
    }

    public static final int IDENTITYPROVIDERCRN_FIELD_NUMBER = 1;
    private volatile java.lang.Object identityProviderCrn_;
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The identityProviderCrn.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderCrn() {
      java.lang.Object ref = identityProviderCrn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderCrn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The identity provider CRN used to interactively login. For Cloudera SSO the
     * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
     * identity provider connectors the connector's CRN is used.
     * </pre>
     *
     * <code>string identityProviderCrn = 1;</code>
     * @return The bytes for identityProviderCrn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderCrnBytes() {
      java.lang.Object ref = identityProviderCrn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderCrn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IDENTITYPROVIDERSESSIONID_FIELD_NUMBER = 2;
    private volatile java.lang.Object identityProviderSessionId_;
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The identityProviderSessionId.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderSessionId() {
      java.lang.Object ref = identityProviderSessionId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderSessionId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The identity provider session ID for this interactive login request. For
     * SAML 2.0 identity federation this is the SessionIndex of the SAML
     * AuthnResponse.
     * </pre>
     *
     * <code>string identityProviderSessionId = 2;</code>
     * @return The bytes for identityProviderSessionId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderSessionIdBytes() {
      java.lang.Object ref = identityProviderSessionId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderSessionId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int IDENTITYPROVIDERUSERID_FIELD_NUMBER = 3;
    private volatile java.lang.Object identityProviderUserId_;
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The identityProviderUserId.
     */
    @java.lang.Override
    public java.lang.String getIdentityProviderUserId() {
      java.lang.Object ref = identityProviderUserId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        identityProviderUserId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The user ID as indicated by the identity provider. The specific format and
     * type of this identifier is determined by the IdP. For Cloudera SSO this is
     * the email used to login.
     * </pre>
     *
     * <code>string identityProviderUserId = 3;</code>
     * @return The bytes for identityProviderUserId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdentityProviderUserIdBytes() {
      java.lang.Object ref = identityProviderUserId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        identityProviderUserId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EMAIL_FIELD_NUMBER = 4;
    private volatile java.lang.Object email_;
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The email.
     */
    @java.lang.Override
    public java.lang.String getEmail() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        email_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The email of the user as provided to CDP.
     * </pre>
     *
     * <code>string email = 4;</code>
     * @return The bytes for email.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEmailBytes() {
      java.lang.Object ref = email_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        email_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int SOURCEIPADDRESS_FIELD_NUMBER = 5;
    private volatile java.lang.Object sourceIPAddress_;
    /**
     * <pre>
     * The source IP address from which the login request came from.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The sourceIPAddress.
     */
    @java.lang.Override
    public java.lang.String getSourceIPAddress() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        sourceIPAddress_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The source IP address from which the login request came from.
     * </pre>
     *
     * <code>string sourceIPAddress = 5;</code>
     * @return The bytes for sourceIPAddress.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSourceIPAddressBytes() {
      java.lang.Object ref = sourceIPAddress_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        sourceIPAddress_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int FIRSTNAME_FIELD_NUMBER = 6;
    private volatile java.lang.Object firstName_;
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The firstName.
     */
    @java.lang.Override
    public java.lang.String getFirstName() {
      java.lang.Object ref = firstName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        firstName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The first name of the user, if provided.
     * </pre>
     *
     * <code>string firstName = 6;</code>
     * @return The bytes for firstName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getFirstNameBytes() {
      java.lang.Object ref = firstName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        firstName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int LASTNAME_FIELD_NUMBER = 7;
    private volatile java.lang.Object lastName_;
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The lastName.
     */
    @java.lang.Override
    public java.lang.String getLastName() {
      java.lang.Object ref = lastName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        lastName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The last name of the user, if provided.
     * </pre>
     *
     * <code>string lastName = 7;</code>
     * @return The bytes for lastName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getLastNameBytes() {
      java.lang.Object ref = lastName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        lastName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACCOUNTADMIN_FIELD_NUMBER = 8;
    private boolean accountAdmin_;
    /**
     * <pre>
     * Whether the user was marked as account admin. Can only be 'true' for users
     * using Cloudera SSO.
     * </pre>
     *
     * <code>bool accountAdmin = 8;</code>
     * @return The accountAdmin.
     */
    @java.lang.Override
    public boolean getAccountAdmin() {
      return accountAdmin_;
    }

    public static final int GROUPS_FIELD_NUMBER = 9;
    private com.google.protobuf.LazyStringList groups_;
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @return A list containing the groups.
     */
    public com.google.protobuf.ProtocolStringList
        getGroupsList() {
      return groups_;
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @return The count of groups.
     */
    public int getGroupsCount() {
      return groups_.size();
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @param index The index of the element to return.
     * @return The groups at the given index.
     */
    public java.lang.String getGroups(int index) {
      return groups_.get(index);
    }
    /**
     * <pre>
     * A list of group names the user belongs to as received in CDP. Only available
     * for non Cloudera SSO login events.
     * </pre>
     *
     * <code>repeated string groups = 9;</code>
     * @param index The index of the value to return.
     * @return The bytes of the groups at the given index.
     */
    public com.google.protobuf.ByteString
        getGroupsBytes(int index) {
      return groups_.getByteString(index);
    }

    public static final int USERCRN_FIELD_NUMBER = 10;
    private volatile java.lang.Object userCrn_;
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 10;</code>
     * @return The userCrn.
     */
    @java.lang.Override
    public java.lang.String getUserCrn() {
      java.lang.Object ref = userCrn_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        userCrn_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The CDP user CRN for the user. This may be empty if the login failed.
     * </pre>
     *
     * <code>string userCrn = 10;</code>
     * @return The bytes for userCrn.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUserCrnBytes() {
      java.lang.Object ref = userCrn_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userCrn_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderCrn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, identityProviderCrn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderSessionId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, identityProviderSessionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderUserId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, identityProviderUserId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(email_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, email_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 6, firstName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, lastName_);
      }
      if (accountAdmin_ != false) {
        output.writeBool(8, accountAdmin_);
      }
      for (int i = 0; i < groups_.size(); i++) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, groups_.getRaw(i));
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userCrn_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, userCrn_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderCrn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, identityProviderCrn_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderSessionId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, identityProviderSessionId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(identityProviderUserId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, identityProviderUserId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(email_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, email_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(sourceIPAddress_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, sourceIPAddress_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(firstName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, firstName_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(lastName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, lastName_);
      }
      if (accountAdmin_ != false) {
        size += com.google.protobuf.CodedOutputStream
          .computeBoolSize(8, accountAdmin_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < groups_.size(); i++) {
          dataSize += computeStringSizeNoTag(groups_.getRaw(i));
        }
        size += dataSize;
        size += 1 * getGroupsList().size();
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(userCrn_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, userCrn_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent other = (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) obj;

      if (!getIdentityProviderCrn()
          .equals(other.getIdentityProviderCrn())) return false;
      if (!getIdentityProviderSessionId()
          .equals(other.getIdentityProviderSessionId())) return false;
      if (!getIdentityProviderUserId()
          .equals(other.getIdentityProviderUserId())) return false;
      if (!getEmail()
          .equals(other.getEmail())) return false;
      if (!getSourceIPAddress()
          .equals(other.getSourceIPAddress())) return false;
      if (!getFirstName()
          .equals(other.getFirstName())) return false;
      if (!getLastName()
          .equals(other.getLastName())) return false;
      if (getAccountAdmin()
          != other.getAccountAdmin()) return false;
      if (!getGroupsList()
          .equals(other.getGroupsList())) return false;
      if (!getUserCrn()
          .equals(other.getUserCrn())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERCRN_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderCrn().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERSESSIONID_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderSessionId().hashCode();
      hash = (37 * hash) + IDENTITYPROVIDERUSERID_FIELD_NUMBER;
      hash = (53 * hash) + getIdentityProviderUserId().hashCode();
      hash = (37 * hash) + EMAIL_FIELD_NUMBER;
      hash = (53 * hash) + getEmail().hashCode();
      hash = (37 * hash) + SOURCEIPADDRESS_FIELD_NUMBER;
      hash = (53 * hash) + getSourceIPAddress().hashCode();
      hash = (37 * hash) + FIRSTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getFirstName().hashCode();
      hash = (37 * hash) + LASTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getLastName().hashCode();
      hash = (37 * hash) + ACCOUNTADMIN_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean(
          getAccountAdmin());
      if (getGroupsCount() > 0) {
        hash = (37 * hash) + GROUPS_FIELD_NUMBER;
        hash = (53 * hash) + getGroupsList().hashCode();
      }
      hash = (37 * hash) + USERCRN_FIELD_NUMBER;
      hash = (53 * hash) + getUserCrn().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The public model for a login event, as a part of CdpAuditEvent. CDP logs
     * attempts to interactively login to the CDP console. This includes logins
     * using Cloudera SSO and through any federated interactive login events.
     * [Internal model analogs: InteractiveLoginData, ResultInteractiveLoginData]
     * [API analog: InteractiveLoginEvent]
     * </pre>
     *
     * Protobuf type {@code audit.InteractiveLoginEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.InteractiveLoginEvent)
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        identityProviderCrn_ = "";

        identityProviderSessionId_ = "";

        identityProviderUserId_ = "";

        email_ = "";

        sourceIPAddress_ = "";

        firstName_ = "";

        lastName_ = "";

        accountAdmin_ = false;

        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        userCrn_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_InteractiveLoginEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent build() {
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent result = new com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent(this);
        int from_bitField0_ = bitField0_;
        result.identityProviderCrn_ = identityProviderCrn_;
        result.identityProviderSessionId_ = identityProviderSessionId_;
        result.identityProviderUserId_ = identityProviderUserId_;
        result.email_ = email_;
        result.sourceIPAddress_ = sourceIPAddress_;
        result.firstName_ = firstName_;
        result.lastName_ = lastName_;
        result.accountAdmin_ = accountAdmin_;
        if (((bitField0_ & 0x00000001) != 0)) {
          groups_ = groups_.getUnmodifiableView();
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.groups_ = groups_;
        result.userCrn_ = userCrn_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance()) return this;
        if (!other.getIdentityProviderCrn().isEmpty()) {
          identityProviderCrn_ = other.identityProviderCrn_;
          onChanged();
        }
        if (!other.getIdentityProviderSessionId().isEmpty()) {
          identityProviderSessionId_ = other.identityProviderSessionId_;
          onChanged();
        }
        if (!other.getIdentityProviderUserId().isEmpty()) {
          identityProviderUserId_ = other.identityProviderUserId_;
          onChanged();
        }
        if (!other.getEmail().isEmpty()) {
          email_ = other.email_;
          onChanged();
        }
        if (!other.getSourceIPAddress().isEmpty()) {
          sourceIPAddress_ = other.sourceIPAddress_;
          onChanged();
        }
        if (!other.getFirstName().isEmpty()) {
          firstName_ = other.firstName_;
          onChanged();
        }
        if (!other.getLastName().isEmpty()) {
          lastName_ = other.lastName_;
          onChanged();
        }
        if (other.getAccountAdmin() != false) {
          setAccountAdmin(other.getAccountAdmin());
        }
        if (!other.groups_.isEmpty()) {
          if (groups_.isEmpty()) {
            groups_ = other.groups_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureGroupsIsMutable();
            groups_.addAll(other.groups_);
          }
          onChanged();
        }
        if (!other.getUserCrn().isEmpty()) {
          userCrn_ = other.userCrn_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                identityProviderCrn_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                identityProviderSessionId_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                identityProviderUserId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                email_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 42: {
                sourceIPAddress_ = input.readStringRequireUtf8();

                break;
              } // case 42
              case 50: {
                firstName_ = input.readStringRequireUtf8();

                break;
              } // case 50
              case 58: {
                lastName_ = input.readStringRequireUtf8();

                break;
              } // case 58
              case 64: {
                accountAdmin_ = input.readBool();

                break;
              } // case 64
              case 74: {
                java.lang.String s = input.readStringRequireUtf8();
                ensureGroupsIsMutable();
                groups_.add(s);
                break;
              } // case 74
              case 82: {
                userCrn_ = input.readStringRequireUtf8();

                break;
              } // case 82
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private java.lang.Object identityProviderCrn_ = "";
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return The identityProviderCrn.
       */
      public java.lang.String getIdentityProviderCrn() {
        java.lang.Object ref = identityProviderCrn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderCrn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return The bytes for identityProviderCrn.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderCrnBytes() {
        java.lang.Object ref = identityProviderCrn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderCrn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @param value The identityProviderCrn to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderCrn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderCrn() {
        
        identityProviderCrn_ = getDefaultInstance().getIdentityProviderCrn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider CRN used to interactively login. For Cloudera SSO the
       * ID is 'crn:altus:iam:us-west-1:altus:samlProvider:cloudera-sso'. For
       * identity provider connectors the connector's CRN is used.
       * </pre>
       *
       * <code>string identityProviderCrn = 1;</code>
       * @param value The bytes for identityProviderCrn to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderCrn_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object identityProviderSessionId_ = "";
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return The identityProviderSessionId.
       */
      public java.lang.String getIdentityProviderSessionId() {
        java.lang.Object ref = identityProviderSessionId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderSessionId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return The bytes for identityProviderSessionId.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderSessionIdBytes() {
        java.lang.Object ref = identityProviderSessionId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderSessionId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @param value The identityProviderSessionId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderSessionId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderSessionId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderSessionId() {
        
        identityProviderSessionId_ = getDefaultInstance().getIdentityProviderSessionId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The identity provider session ID for this interactive login request. For
       * SAML 2.0 identity federation this is the SessionIndex of the SAML
       * AuthnResponse.
       * </pre>
       *
       * <code>string identityProviderSessionId = 2;</code>
       * @param value The bytes for identityProviderSessionId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderSessionIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderSessionId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object identityProviderUserId_ = "";
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return The identityProviderUserId.
       */
      public java.lang.String getIdentityProviderUserId() {
        java.lang.Object ref = identityProviderUserId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          identityProviderUserId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return The bytes for identityProviderUserId.
       */
      public com.google.protobuf.ByteString
          getIdentityProviderUserIdBytes() {
        java.lang.Object ref = identityProviderUserId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          identityProviderUserId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @param value The identityProviderUserId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        identityProviderUserId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentityProviderUserId() {
        
        identityProviderUserId_ = getDefaultInstance().getIdentityProviderUserId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The user ID as indicated by the identity provider. The specific format and
       * type of this identifier is determined by the IdP. For Cloudera SSO this is
       * the email used to login.
       * </pre>
       *
       * <code>string identityProviderUserId = 3;</code>
       * @param value The bytes for identityProviderUserId to set.
       * @return This builder for chaining.
       */
      public Builder setIdentityProviderUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        identityProviderUserId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object email_ = "";
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return The email.
       */
      public java.lang.String getEmail() {
        java.lang.Object ref = email_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          email_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return The bytes for email.
       */
      public com.google.protobuf.ByteString
          getEmailBytes() {
        java.lang.Object ref = email_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          email_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @param value The email to set.
       * @return This builder for chaining.
       */
      public Builder setEmail(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        email_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEmail() {
        
        email_ = getDefaultInstance().getEmail();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The email of the user as provided to CDP.
       * </pre>
       *
       * <code>string email = 4;</code>
       * @param value The bytes for email to set.
       * @return This builder for chaining.
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        email_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object sourceIPAddress_ = "";
      /**
       * <pre>
       * The source IP address from which the login request came from.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return The sourceIPAddress.
       */
      public java.lang.String getSourceIPAddress() {
        java.lang.Object ref = sourceIPAddress_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          sourceIPAddress_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The source IP address from which the login request came from.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return The bytes for sourceIPAddress.
       */
      public com.google.protobuf.ByteString
          getSourceIPAddressBytes() {
        java.lang.Object ref = sourceIPAddress_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          sourceIPAddress_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The source IP address from which the login request came from.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @param value The sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddress(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address from which the login request came from.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSourceIPAddress() {
        
        sourceIPAddress_ = getDefaultInstance().getSourceIPAddress();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source IP address from which the login request came from.
       * </pre>
       *
       * <code>string sourceIPAddress = 5;</code>
       * @param value The bytes for sourceIPAddress to set.
       * @return This builder for chaining.
       */
      public Builder setSourceIPAddressBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        sourceIPAddress_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object firstName_ = "";
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return The firstName.
       */
      public java.lang.String getFirstName() {
        java.lang.Object ref = firstName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          firstName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return The bytes for firstName.
       */
      public com.google.protobuf.ByteString
          getFirstNameBytes() {
        java.lang.Object ref = firstName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          firstName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @param value The firstName to set.
       * @return This builder for chaining.
       */
      public Builder setFirstName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        firstName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearFirstName() {
        
        firstName_ = getDefaultInstance().getFirstName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The first name of the user, if provided.
       * </pre>
       *
       * <code>string firstName = 6;</code>
       * @param value The bytes for firstName to set.
       * @return This builder for chaining.
       */
      public Builder setFirstNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        firstName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object lastName_ = "";
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return The lastName.
       */
      public java.lang.String getLastName() {
        java.lang.Object ref = lastName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          lastName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return The bytes for lastName.
       */
      public com.google.protobuf.ByteString
          getLastNameBytes() {
        java.lang.Object ref = lastName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          lastName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @param value The lastName to set.
       * @return This builder for chaining.
       */
      public Builder setLastName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        lastName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearLastName() {
        
        lastName_ = getDefaultInstance().getLastName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The last name of the user, if provided.
       * </pre>
       *
       * <code>string lastName = 7;</code>
       * @param value The bytes for lastName to set.
       * @return This builder for chaining.
       */
      public Builder setLastNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        lastName_ = value;
        onChanged();
        return this;
      }

      private boolean accountAdmin_ ;
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 8;</code>
       * @return The accountAdmin.
       */
      @java.lang.Override
      public boolean getAccountAdmin() {
        return accountAdmin_;
      }
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 8;</code>
       * @param value The accountAdmin to set.
       * @return This builder for chaining.
       */
      public Builder setAccountAdmin(boolean value) {
        
        accountAdmin_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Whether the user was marked as account admin. Can only be 'true' for users
       * using Cloudera SSO.
       * </pre>
       *
       * <code>bool accountAdmin = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountAdmin() {
        
        accountAdmin_ = false;
        onChanged();
        return this;
      }

      private com.google.protobuf.LazyStringList groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
      private void ensureGroupsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          groups_ = new com.google.protobuf.LazyStringArrayList(groups_);
          bitField0_ |= 0x00000001;
         }
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @return A list containing the groups.
       */
      public com.google.protobuf.ProtocolStringList
          getGroupsList() {
        return groups_.getUnmodifiableView();
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @return The count of groups.
       */
      public int getGroupsCount() {
        return groups_.size();
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param index The index of the element to return.
       * @return The groups at the given index.
       */
      public java.lang.String getGroups(int index) {
        return groups_.get(index);
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param index The index of the value to return.
       * @return The bytes of the groups at the given index.
       */
      public com.google.protobuf.ByteString
          getGroupsBytes(int index) {
        return groups_.getByteString(index);
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param index The index to set the value at.
       * @param value The groups to set.
       * @return This builder for chaining.
       */
      public Builder setGroups(
          int index, java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGroupsIsMutable();
        groups_.set(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param value The groups to add.
       * @return This builder for chaining.
       */
      public Builder addGroups(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  ensureGroupsIsMutable();
        groups_.add(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param values The groups to add.
       * @return This builder for chaining.
       */
      public Builder addAllGroups(
          java.lang.Iterable<java.lang.String> values) {
        ensureGroupsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, groups_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearGroups() {
        groups_ = com.google.protobuf.LazyStringArrayList.EMPTY;
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
        return this;
      }
      /**
       * <pre>
       * A list of group names the user belongs to as received in CDP. Only available
       * for non Cloudera SSO login events.
       * </pre>
       *
       * <code>repeated string groups = 9;</code>
       * @param value The bytes of the groups to add.
       * @return This builder for chaining.
       */
      public Builder addGroupsBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        ensureGroupsIsMutable();
        groups_.add(value);
        onChanged();
        return this;
      }

      private java.lang.Object userCrn_ = "";
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 10;</code>
       * @return The userCrn.
       */
      public java.lang.String getUserCrn() {
        java.lang.Object ref = userCrn_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userCrn_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 10;</code>
       * @return The bytes for userCrn.
       */
      public com.google.protobuf.ByteString
          getUserCrnBytes() {
        java.lang.Object ref = userCrn_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userCrn_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 10;</code>
       * @param value The userCrn to set.
       * @return This builder for chaining.
       */
      public Builder setUserCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userCrn_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserCrn() {
        
        userCrn_ = getDefaultInstance().getUserCrn();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CDP user CRN for the user. This may be empty if the login failed.
       * </pre>
       *
       * <code>string userCrn = 10;</code>
       * @param value The bytes for userCrn to set.
       * @return This builder for chaining.
       */
      public Builder setUserCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userCrn_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.InteractiveLoginEvent)
    }

    // @@protoc_insertion_point(class_scope:audit.InteractiveLoginEvent)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<InteractiveLoginEvent>
        PARSER = new com.google.protobuf.AbstractParser<InteractiveLoginEvent>() {
      @java.lang.Override
      public InteractiveLoginEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<InteractiveLoginEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<InteractiveLoginEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ActorIdentityOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ActorIdentity)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return Whether the actorCrn field is set.
     */
    boolean hasActorCrn();
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return The actorCrn.
     */
    java.lang.String getActorCrn();
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return The bytes for actorCrn.
     */
    com.google.protobuf.ByteString
        getActorCrnBytes();

    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return Whether the actorServiceName field is set.
     */
    boolean hasActorServiceName();
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return The actorServiceName.
     */
    java.lang.String getActorServiceName();
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return The bytes for actorServiceName.
     */
    com.google.protobuf.ByteString
        getActorServiceNameBytes();

    public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.ActorTypeCase getActorTypeCase();
  }
  /**
   * <pre>
   * Identity information about the actor that initiated an event. Only one of
   * the fields in this message may be set. [Internal model analog: "actor" oneof
   * in AuditEvent] [API analog: ActorIdentity]
   * </pre>
   *
   * Protobuf type {@code audit.ActorIdentity}
   */
  public static final class ActorIdentity extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ActorIdentity)
      ActorIdentityOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ActorIdentity.newBuilder() to construct.
    private ActorIdentity(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ActorIdentity() {
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ActorIdentity();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ActorIdentity_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ActorIdentity_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.class, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder.class);
    }

    private int actorTypeCase_ = 0;
    private java.lang.Object actorType_;
    public enum ActorTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      ACTORCRN(1),
      ACTORSERVICENAME(2),
      ACTORTYPE_NOT_SET(0);
      private final int value;
      private ActorTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ActorTypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static ActorTypeCase forNumber(int value) {
        switch (value) {
          case 1: return ACTORCRN;
          case 2: return ACTORSERVICENAME;
          case 0: return ACTORTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ActorTypeCase
    getActorTypeCase() {
      return ActorTypeCase.forNumber(
          actorTypeCase_);
    }

    public static final int ACTORCRN_FIELD_NUMBER = 1;
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return Whether the actorCrn field is set.
     */
    public boolean hasActorCrn() {
      return actorTypeCase_ == 1;
    }
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return The actorCrn.
     */
    public java.lang.String getActorCrn() {
      java.lang.Object ref = "";
      if (actorTypeCase_ == 1) {
        ref = actorType_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (actorTypeCase_ == 1) {
          actorType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The CRN of the actor who initiated this event.
     * </pre>
     *
     * <code>string actorCrn = 1;</code>
     * @return The bytes for actorCrn.
     */
    public com.google.protobuf.ByteString
        getActorCrnBytes() {
      java.lang.Object ref = "";
      if (actorTypeCase_ == 1) {
        ref = actorType_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (actorTypeCase_ == 1) {
          actorType_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ACTORSERVICENAME_FIELD_NUMBER = 2;
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return Whether the actorServiceName field is set.
     */
    public boolean hasActorServiceName() {
      return actorTypeCase_ == 2;
    }
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return The actorServiceName.
     */
    public java.lang.String getActorServiceName() {
      java.lang.Object ref = "";
      if (actorTypeCase_ == 2) {
        ref = actorType_;
      }
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        if (actorTypeCase_ == 2) {
          actorType_ = s;
        }
        return s;
      }
    }
    /**
     * <pre>
     * The name of the service that initiated this event. It must be the name
     * of a service as enumerated in the CRN definition.
     * </pre>
     *
     * <code>string actorServiceName = 2;</code>
     * @return The bytes for actorServiceName.
     */
    public com.google.protobuf.ByteString
        getActorServiceNameBytes() {
      java.lang.Object ref = "";
      if (actorTypeCase_ == 2) {
        ref = actorType_;
      }
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        if (actorTypeCase_ == 2) {
          actorType_ = b;
        }
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (actorTypeCase_ == 1) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, actorType_);
      }
      if (actorTypeCase_ == 2) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, actorType_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (actorTypeCase_ == 1) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, actorType_);
      }
      if (actorTypeCase_ == 2) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, actorType_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity other = (com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity) obj;

      if (!getActorTypeCase().equals(other.getActorTypeCase())) return false;
      switch (actorTypeCase_) {
        case 1:
          if (!getActorCrn()
              .equals(other.getActorCrn())) return false;
          break;
        case 2:
          if (!getActorServiceName()
              .equals(other.getActorServiceName())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      switch (actorTypeCase_) {
        case 1:
          hash = (37 * hash) + ACTORCRN_FIELD_NUMBER;
          hash = (53 * hash) + getActorCrn().hashCode();
          break;
        case 2:
          hash = (37 * hash) + ACTORSERVICENAME_FIELD_NUMBER;
          hash = (53 * hash) + getActorServiceName().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Identity information about the actor that initiated an event. Only one of
     * the fields in this message may be set. [Internal model analog: "actor" oneof
     * in AuditEvent] [API analog: ActorIdentity]
     * </pre>
     *
     * Protobuf type {@code audit.ActorIdentity}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ActorIdentity)
        com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ActorIdentity_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ActorIdentity_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.class, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        actorTypeCase_ = 0;
        actorType_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ActorIdentity_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity result = new com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity(this);
        if (actorTypeCase_ == 1) {
          result.actorType_ = actorType_;
        }
        if (actorTypeCase_ == 2) {
          result.actorType_ = actorType_;
        }
        result.actorTypeCase_ = actorTypeCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.getDefaultInstance()) return this;
        switch (other.getActorTypeCase()) {
          case ACTORCRN: {
            actorTypeCase_ = 1;
            actorType_ = other.actorType_;
            onChanged();
            break;
          }
          case ACTORSERVICENAME: {
            actorTypeCase_ = 2;
            actorType_ = other.actorType_;
            onChanged();
            break;
          }
          case ACTORTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                java.lang.String s = input.readStringRequireUtf8();
                actorTypeCase_ = 1;
                actorType_ = s;
                break;
              } // case 10
              case 18: {
                java.lang.String s = input.readStringRequireUtf8();
                actorTypeCase_ = 2;
                actorType_ = s;
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int actorTypeCase_ = 0;
      private java.lang.Object actorType_;
      public ActorTypeCase
          getActorTypeCase() {
        return ActorTypeCase.forNumber(
            actorTypeCase_);
      }

      public Builder clearActorType() {
        actorTypeCase_ = 0;
        actorType_ = null;
        onChanged();
        return this;
      }


      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @return Whether the actorCrn field is set.
       */
      @java.lang.Override
      public boolean hasActorCrn() {
        return actorTypeCase_ == 1;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @return The actorCrn.
       */
      @java.lang.Override
      public java.lang.String getActorCrn() {
        java.lang.Object ref = "";
        if (actorTypeCase_ == 1) {
          ref = actorType_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (actorTypeCase_ == 1) {
            actorType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @return The bytes for actorCrn.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getActorCrnBytes() {
        java.lang.Object ref = "";
        if (actorTypeCase_ == 1) {
          ref = actorType_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (actorTypeCase_ == 1) {
            actorType_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @param value The actorCrn to set.
       * @return This builder for chaining.
       */
      public Builder setActorCrn(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  actorTypeCase_ = 1;
        actorType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearActorCrn() {
        if (actorTypeCase_ == 1) {
          actorTypeCase_ = 0;
          actorType_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The CRN of the actor who initiated this event.
       * </pre>
       *
       * <code>string actorCrn = 1;</code>
       * @param value The bytes for actorCrn to set.
       * @return This builder for chaining.
       */
      public Builder setActorCrnBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        actorTypeCase_ = 1;
        actorType_ = value;
        onChanged();
        return this;
      }

      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @return Whether the actorServiceName field is set.
       */
      @java.lang.Override
      public boolean hasActorServiceName() {
        return actorTypeCase_ == 2;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @return The actorServiceName.
       */
      @java.lang.Override
      public java.lang.String getActorServiceName() {
        java.lang.Object ref = "";
        if (actorTypeCase_ == 2) {
          ref = actorType_;
        }
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          if (actorTypeCase_ == 2) {
            actorType_ = s;
          }
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @return The bytes for actorServiceName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getActorServiceNameBytes() {
        java.lang.Object ref = "";
        if (actorTypeCase_ == 2) {
          ref = actorType_;
        }
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          if (actorTypeCase_ == 2) {
            actorType_ = b;
          }
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @param value The actorServiceName to set.
       * @return This builder for chaining.
       */
      public Builder setActorServiceName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  actorTypeCase_ = 2;
        actorType_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearActorServiceName() {
        if (actorTypeCase_ == 2) {
          actorTypeCase_ = 0;
          actorType_ = null;
          onChanged();
        }
        return this;
      }
      /**
       * <pre>
       * The name of the service that initiated this event. It must be the name
       * of a service as enumerated in the CRN definition.
       * </pre>
       *
       * <code>string actorServiceName = 2;</code>
       * @param value The bytes for actorServiceName to set.
       * @return This builder for chaining.
       */
      public Builder setActorServiceNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        actorTypeCase_ = 2;
        actorType_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ActorIdentity)
    }

    // @@protoc_insertion_point(class_scope:audit.ActorIdentity)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ActorIdentity>
        PARSER = new com.google.protobuf.AbstractParser<ActorIdentity>() {
      @java.lang.Override
      public ActorIdentity parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ActorIdentity> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ActorIdentity> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CdpAuditEventOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.CdpAuditEvent)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The version of the event structure.
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The version.
     */
    java.lang.String getVersion();
    /**
     * <pre>
     * The version of the event structure.
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    com.google.protobuf.ByteString
        getVersionBytes();

    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 2;</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 2;</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 3;</code>
     * @return The eventSource.
     */
    java.lang.String getEventSource();
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 3;</code>
     * @return The bytes for eventSource.
     */
    com.google.protobuf.ByteString
        getEventSourceBytes();

    /**
     * <pre>
     * The name of the event. Each source defines all its event names, and a name
     * must be unique for its source.
     * </pre>
     *
     * <code>string eventName = 4;</code>
     * @return The eventName.
     */
    java.lang.String getEventName();
    /**
     * <pre>
     * The name of the event. Each source defines all its event names, and a name
     * must be unique for its source.
     * </pre>
     *
     * <code>string eventName = 4;</code>
     * @return The bytes for eventName.
     */
    com.google.protobuf.ByteString
        getEventNameBytes();

    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the event occurred.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    long getTimestamp();

    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     * @return Whether the actorIdentity field is set.
     */
    boolean hasActorIdentity();
    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     * @return The actorIdentity.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getActorIdentity();
    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder getActorIdentityOrBuilder();

    /**
     * <pre>
     * Account id in which this event occurred in.
     * </pre>
     *
     * <code>string accountId = 7;</code>
     * @return The accountId.
     */
    java.lang.String getAccountId();
    /**
     * <pre>
     * Account id in which this event occurred in.
     * </pre>
     *
     * <code>string accountId = 7;</code>
     * @return The bytes for accountId.
     */
    com.google.protobuf.ByteString
        getAccountIdBytes();

    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 8;</code>
     * @return The requestId.
     */
    java.lang.String getRequestId();
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 8;</code>
     * @return The bytes for requestId.
     */
    com.google.protobuf.ByteString
        getRequestIdBytes();

    /**
     * <pre>
     * Optional result code.
     * </pre>
     *
     * <code>string resultCode = 9;</code>
     * @return The resultCode.
     */
    java.lang.String getResultCode();
    /**
     * <pre>
     * Optional result code.
     * </pre>
     *
     * <code>string resultCode = 9;</code>
     * @return The bytes for resultCode.
     */
    com.google.protobuf.ByteString
        getResultCodeBytes();

    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 10;</code>
     * @return The resultMessage.
     */
    java.lang.String getResultMessage();
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 10;</code>
     * @return The bytes for resultMessage.
     */
    com.google.protobuf.ByteString
        getResultMessageBytes();

    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     * @return Whether the apiRequestEvent field is set.
     */
    boolean hasApiRequestEvent();
    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     * @return The apiRequestEvent.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getApiRequestEvent();
    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder getApiRequestEventOrBuilder();

    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     * @return Whether the cdpServiceEvent field is set.
     */
    boolean hasCdpServiceEvent();
    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     * @return The cdpServiceEvent.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getCdpServiceEvent();
    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder getCdpServiceEventOrBuilder();

    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     * @return Whether the interactiveLoginEvent field is set.
     */
    boolean hasInteractiveLoginEvent();
    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     * @return The interactiveLoginEvent.
     */
    com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getInteractiveLoginEvent();
    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder getInteractiveLoginEventOrBuilder();

    /**
     * <pre>
     * The unique identifier assigned to the batch of audit events in which the
     * audit event was archived
     * </pre>
     *
     * <code>string archiveId = 14;</code>
     * @return The archiveId.
     */
    java.lang.String getArchiveId();
    /**
     * <pre>
     * The unique identifier assigned to the batch of audit events in which the
     * audit event was archived
     * </pre>
     *
     * <code>string archiveId = 14;</code>
     * @return The bytes for archiveId.
     */
    com.google.protobuf.ByteString
        getArchiveIdBytes();

    public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.EventTypeCase getEventTypeCase();
  }
  /**
   * <pre>
   * The public model for an audit event. [Internal model analog: AuditEvent]
   * </pre>
   *
   * Protobuf type {@code audit.CdpAuditEvent}
   */
  public static final class CdpAuditEvent extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.CdpAuditEvent)
      CdpAuditEventOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CdpAuditEvent.newBuilder() to construct.
    private CdpAuditEvent(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private CdpAuditEvent() {
      version_ = "";
      id_ = "";
      eventSource_ = "";
      eventName_ = "";
      accountId_ = "";
      requestId_ = "";
      resultCode_ = "";
      resultMessage_ = "";
      archiveId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new CdpAuditEvent();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpAuditEvent_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpAuditEvent_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder.class);
    }

    private int eventTypeCase_ = 0;
    private java.lang.Object eventType_;
    public enum EventTypeCase
        implements com.google.protobuf.Internal.EnumLite,
            com.google.protobuf.AbstractMessage.InternalOneOfEnum {
      APIREQUESTEVENT(11),
      CDPSERVICEEVENT(12),
      INTERACTIVELOGINEVENT(13),
      EVENTTYPE_NOT_SET(0);
      private final int value;
      private EventTypeCase(int value) {
        this.value = value;
      }
      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static EventTypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static EventTypeCase forNumber(int value) {
        switch (value) {
          case 11: return APIREQUESTEVENT;
          case 12: return CDPSERVICEEVENT;
          case 13: return INTERACTIVELOGINEVENT;
          case 0: return EVENTTYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public EventTypeCase
    getEventTypeCase() {
      return EventTypeCase.forNumber(
          eventTypeCase_);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private volatile java.lang.Object version_;
    /**
     * <pre>
     * The version of the event structure.
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The version.
     */
    @java.lang.Override
    public java.lang.String getVersion() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        version_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The version of the event structure.
     * </pre>
     *
     * <code>string version = 1;</code>
     * @return The bytes for version.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getVersionBytes() {
      java.lang.Object ref = version_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        version_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object id_;
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 2;</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        id_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * UUID for this event.
     * </pre>
     *
     * <code>string id = 2;</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      java.lang.Object ref = id_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        id_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTSOURCE_FIELD_NUMBER = 3;
    private volatile java.lang.Object eventSource_;
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 3;</code>
     * @return The eventSource.
     */
    @java.lang.Override
    public java.lang.String getEventSource() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventSource_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The source service of the event. It must be the name of a service as
     * enumerated in the CRN definition.
     * </pre>
     *
     * <code>string eventSource = 3;</code>
     * @return The bytes for eventSource.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventSourceBytes() {
      java.lang.Object ref = eventSource_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventSource_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTNAME_FIELD_NUMBER = 4;
    private volatile java.lang.Object eventName_;
    /**
     * <pre>
     * The name of the event. Each source defines all its event names, and a name
     * must be unique for its source.
     * </pre>
     *
     * <code>string eventName = 4;</code>
     * @return The eventName.
     */
    @java.lang.Override
    public java.lang.String getEventName() {
      java.lang.Object ref = eventName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        eventName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The name of the event. Each source defines all its event names, and a name
     * must be unique for its source.
     * </pre>
     *
     * <code>string eventName = 4;</code>
     * @return The bytes for eventName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEventNameBytes() {
      java.lang.Object ref = eventName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        eventName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TIMESTAMP_FIELD_NUMBER = 5;
    private long timestamp_;
    /**
     * <pre>
     * The Unix timestamp, in milliseconds (UTC), when the event occurred.
     * </pre>
     *
     * <code>int64 timestamp = 5;</code>
     * @return The timestamp.
     */
    @java.lang.Override
    public long getTimestamp() {
      return timestamp_;
    }

    public static final int ACTORIDENTITY_FIELD_NUMBER = 6;
    private com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity actorIdentity_;
    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     * @return Whether the actorIdentity field is set.
     */
    @java.lang.Override
    public boolean hasActorIdentity() {
      return actorIdentity_ != null;
    }
    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     * @return The actorIdentity.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getActorIdentity() {
      return actorIdentity_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.getDefaultInstance() : actorIdentity_;
    }
    /**
     * <pre>
     * The actor who initiated this event.
     * </pre>
     *
     * <code>.audit.ActorIdentity actorIdentity = 6;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder getActorIdentityOrBuilder() {
      return getActorIdentity();
    }

    public static final int ACCOUNTID_FIELD_NUMBER = 7;
    private volatile java.lang.Object accountId_;
    /**
     * <pre>
     * Account id in which this event occurred in.
     * </pre>
     *
     * <code>string accountId = 7;</code>
     * @return The accountId.
     */
    @java.lang.Override
    public java.lang.String getAccountId() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        accountId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Account id in which this event occurred in.
     * </pre>
     *
     * <code>string accountId = 7;</code>
     * @return The bytes for accountId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountIdBytes() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accountId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int REQUESTID_FIELD_NUMBER = 8;
    private volatile java.lang.Object requestId_;
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 8;</code>
     * @return The requestId.
     */
    @java.lang.Override
    public java.lang.String getRequestId() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        requestId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Id of the request that initiated this event. Optional.
     * </pre>
     *
     * <code>string requestId = 8;</code>
     * @return The bytes for requestId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getRequestIdBytes() {
      java.lang.Object ref = requestId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        requestId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTCODE_FIELD_NUMBER = 9;
    private volatile java.lang.Object resultCode_;
    /**
     * <pre>
     * Optional result code.
     * </pre>
     *
     * <code>string resultCode = 9;</code>
     * @return The resultCode.
     */
    @java.lang.Override
    public java.lang.String getResultCode() {
      java.lang.Object ref = resultCode_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resultCode_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional result code.
     * </pre>
     *
     * <code>string resultCode = 9;</code>
     * @return The bytes for resultCode.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultCodeBytes() {
      java.lang.Object ref = resultCode_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultCode_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RESULTMESSAGE_FIELD_NUMBER = 10;
    private volatile java.lang.Object resultMessage_;
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 10;</code>
     * @return The resultMessage.
     */
    @java.lang.Override
    public java.lang.String getResultMessage() {
      java.lang.Object ref = resultMessage_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        resultMessage_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Optional result message, a short message (about one sentence) describing
     * the result.
     * </pre>
     *
     * <code>string resultMessage = 10;</code>
     * @return The bytes for resultMessage.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getResultMessageBytes() {
      java.lang.Object ref = resultMessage_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        resultMessage_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int APIREQUESTEVENT_FIELD_NUMBER = 11;
    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     * @return Whether the apiRequestEvent field is set.
     */
    @java.lang.Override
    public boolean hasApiRequestEvent() {
      return eventTypeCase_ == 11;
    }
    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     * @return The apiRequestEvent.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getApiRequestEvent() {
      if (eventTypeCase_ == 11) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
    }
    /**
     * <pre>
     * Information originating from an API request.
     * </pre>
     *
     * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder getApiRequestEventOrBuilder() {
      if (eventTypeCase_ == 11) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
    }

    public static final int CDPSERVICEEVENT_FIELD_NUMBER = 12;
    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     * @return Whether the cdpServiceEvent field is set.
     */
    @java.lang.Override
    public boolean hasCdpServiceEvent() {
      return eventTypeCase_ == 12;
    }
    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     * @return The cdpServiceEvent.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getCdpServiceEvent() {
      if (eventTypeCase_ == 12) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
    }
    /**
     * <pre>
     * Information originating from an event generated by a CDP service.
     * </pre>
     *
     * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder getCdpServiceEventOrBuilder() {
      if (eventTypeCase_ == 12) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
    }

    public static final int INTERACTIVELOGINEVENT_FIELD_NUMBER = 13;
    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     * @return Whether the interactiveLoginEvent field is set.
     */
    @java.lang.Override
    public boolean hasInteractiveLoginEvent() {
      return eventTypeCase_ == 13;
    }
    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     * @return The interactiveLoginEvent.
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getInteractiveLoginEvent() {
      if (eventTypeCase_ == 13) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
    }
    /**
     * <pre>
     * Information originating from a login event.
     * </pre>
     *
     * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder getInteractiveLoginEventOrBuilder() {
      if (eventTypeCase_ == 13) {
         return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_;
      }
      return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
    }

    public static final int ARCHIVEID_FIELD_NUMBER = 14;
    private volatile java.lang.Object archiveId_;
    /**
     * <pre>
     * The unique identifier assigned to the batch of audit events in which the
     * audit event was archived
     * </pre>
     *
     * <code>string archiveId = 14;</code>
     * @return The archiveId.
     */
    @java.lang.Override
    public java.lang.String getArchiveId() {
      java.lang.Object ref = archiveId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        archiveId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The unique identifier assigned to the batch of audit events in which the
     * audit event was archived
     * </pre>
     *
     * <code>string archiveId = 14;</code>
     * @return The bytes for archiveId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getArchiveIdBytes() {
      java.lang.Object ref = archiveId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        archiveId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, eventSource_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 4, eventName_);
      }
      if (timestamp_ != 0L) {
        output.writeInt64(5, timestamp_);
      }
      if (actorIdentity_ != null) {
        output.writeMessage(6, getActorIdentity());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, accountId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 8, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultCode_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 9, resultCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultMessage_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 10, resultMessage_);
      }
      if (eventTypeCase_ == 11) {
        output.writeMessage(11, (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_);
      }
      if (eventTypeCase_ == 12) {
        output.writeMessage(12, (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_);
      }
      if (eventTypeCase_ == 13) {
        output.writeMessage(13, (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(archiveId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 14, archiveId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(version_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, version_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(id_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, id_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventSource_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, eventSource_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(eventName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(4, eventName_);
      }
      if (timestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(5, timestamp_);
      }
      if (actorIdentity_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, getActorIdentity());
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, accountId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(requestId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(8, requestId_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultCode_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(9, resultCode_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(resultMessage_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(10, resultMessage_);
      }
      if (eventTypeCase_ == 11) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(11, (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_);
      }
      if (eventTypeCase_ == 12) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(12, (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_);
      }
      if (eventTypeCase_ == 13) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(13, (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(archiveId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(14, archiveId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent other = (com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent) obj;

      if (!getVersion()
          .equals(other.getVersion())) return false;
      if (!getId()
          .equals(other.getId())) return false;
      if (!getEventSource()
          .equals(other.getEventSource())) return false;
      if (!getEventName()
          .equals(other.getEventName())) return false;
      if (getTimestamp()
          != other.getTimestamp()) return false;
      if (hasActorIdentity() != other.hasActorIdentity()) return false;
      if (hasActorIdentity()) {
        if (!getActorIdentity()
            .equals(other.getActorIdentity())) return false;
      }
      if (!getAccountId()
          .equals(other.getAccountId())) return false;
      if (!getRequestId()
          .equals(other.getRequestId())) return false;
      if (!getResultCode()
          .equals(other.getResultCode())) return false;
      if (!getResultMessage()
          .equals(other.getResultMessage())) return false;
      if (!getArchiveId()
          .equals(other.getArchiveId())) return false;
      if (!getEventTypeCase().equals(other.getEventTypeCase())) return false;
      switch (eventTypeCase_) {
        case 11:
          if (!getApiRequestEvent()
              .equals(other.getApiRequestEvent())) return false;
          break;
        case 12:
          if (!getCdpServiceEvent()
              .equals(other.getCdpServiceEvent())) return false;
          break;
        case 13:
          if (!getInteractiveLoginEvent()
              .equals(other.getInteractiveLoginEvent())) return false;
          break;
        case 0:
        default:
      }
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getVersion().hashCode();
      hash = (37 * hash) + ID_FIELD_NUMBER;
      hash = (53 * hash) + getId().hashCode();
      hash = (37 * hash) + EVENTSOURCE_FIELD_NUMBER;
      hash = (53 * hash) + getEventSource().hashCode();
      hash = (37 * hash) + EVENTNAME_FIELD_NUMBER;
      hash = (53 * hash) + getEventName().hashCode();
      hash = (37 * hash) + TIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getTimestamp());
      if (hasActorIdentity()) {
        hash = (37 * hash) + ACTORIDENTITY_FIELD_NUMBER;
        hash = (53 * hash) + getActorIdentity().hashCode();
      }
      hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
      hash = (53 * hash) + getAccountId().hashCode();
      hash = (37 * hash) + REQUESTID_FIELD_NUMBER;
      hash = (53 * hash) + getRequestId().hashCode();
      hash = (37 * hash) + RESULTCODE_FIELD_NUMBER;
      hash = (53 * hash) + getResultCode().hashCode();
      hash = (37 * hash) + RESULTMESSAGE_FIELD_NUMBER;
      hash = (53 * hash) + getResultMessage().hashCode();
      hash = (37 * hash) + ARCHIVEID_FIELD_NUMBER;
      hash = (53 * hash) + getArchiveId().hashCode();
      switch (eventTypeCase_) {
        case 11:
          hash = (37 * hash) + APIREQUESTEVENT_FIELD_NUMBER;
          hash = (53 * hash) + getApiRequestEvent().hashCode();
          break;
        case 12:
          hash = (37 * hash) + CDPSERVICEEVENT_FIELD_NUMBER;
          hash = (53 * hash) + getCdpServiceEvent().hashCode();
          break;
        case 13:
          hash = (37 * hash) + INTERACTIVELOGINEVENT_FIELD_NUMBER;
          hash = (53 * hash) + getInteractiveLoginEvent().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * The public model for an audit event. [Internal model analog: AuditEvent]
     * </pre>
     *
     * Protobuf type {@code audit.CdpAuditEvent}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.CdpAuditEvent)
        com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEventOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpAuditEvent_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpAuditEvent_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.class, com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = "";

        id_ = "";

        eventSource_ = "";

        eventName_ = "";

        timestamp_ = 0L;

        if (actorIdentityBuilder_ == null) {
          actorIdentity_ = null;
        } else {
          actorIdentity_ = null;
          actorIdentityBuilder_ = null;
        }
        accountId_ = "";

        requestId_ = "";

        resultCode_ = "";

        resultMessage_ = "";

        if (apiRequestEventBuilder_ != null) {
          apiRequestEventBuilder_.clear();
        }
        if (cdpServiceEventBuilder_ != null) {
          cdpServiceEventBuilder_.clear();
        }
        if (interactiveLoginEventBuilder_ != null) {
          interactiveLoginEventBuilder_.clear();
        }
        archiveId_ = "";

        eventTypeCase_ = 0;
        eventType_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_CdpAuditEvent_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent build() {
        com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent result = new com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent(this);
        result.version_ = version_;
        result.id_ = id_;
        result.eventSource_ = eventSource_;
        result.eventName_ = eventName_;
        result.timestamp_ = timestamp_;
        if (actorIdentityBuilder_ == null) {
          result.actorIdentity_ = actorIdentity_;
        } else {
          result.actorIdentity_ = actorIdentityBuilder_.build();
        }
        result.accountId_ = accountId_;
        result.requestId_ = requestId_;
        result.resultCode_ = resultCode_;
        result.resultMessage_ = resultMessage_;
        if (eventTypeCase_ == 11) {
          if (apiRequestEventBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = apiRequestEventBuilder_.build();
          }
        }
        if (eventTypeCase_ == 12) {
          if (cdpServiceEventBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = cdpServiceEventBuilder_.build();
          }
        }
        if (eventTypeCase_ == 13) {
          if (interactiveLoginEventBuilder_ == null) {
            result.eventType_ = eventType_;
          } else {
            result.eventType_ = interactiveLoginEventBuilder_.build();
          }
        }
        result.archiveId_ = archiveId_;
        result.eventTypeCase_ = eventTypeCase_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent.getDefaultInstance()) return this;
        if (!other.getVersion().isEmpty()) {
          version_ = other.version_;
          onChanged();
        }
        if (!other.getId().isEmpty()) {
          id_ = other.id_;
          onChanged();
        }
        if (!other.getEventSource().isEmpty()) {
          eventSource_ = other.eventSource_;
          onChanged();
        }
        if (!other.getEventName().isEmpty()) {
          eventName_ = other.eventName_;
          onChanged();
        }
        if (other.getTimestamp() != 0L) {
          setTimestamp(other.getTimestamp());
        }
        if (other.hasActorIdentity()) {
          mergeActorIdentity(other.getActorIdentity());
        }
        if (!other.getAccountId().isEmpty()) {
          accountId_ = other.accountId_;
          onChanged();
        }
        if (!other.getRequestId().isEmpty()) {
          requestId_ = other.requestId_;
          onChanged();
        }
        if (!other.getResultCode().isEmpty()) {
          resultCode_ = other.resultCode_;
          onChanged();
        }
        if (!other.getResultMessage().isEmpty()) {
          resultMessage_ = other.resultMessage_;
          onChanged();
        }
        if (!other.getArchiveId().isEmpty()) {
          archiveId_ = other.archiveId_;
          onChanged();
        }
        switch (other.getEventTypeCase()) {
          case APIREQUESTEVENT: {
            mergeApiRequestEvent(other.getApiRequestEvent());
            break;
          }
          case CDPSERVICEEVENT: {
            mergeCdpServiceEvent(other.getCdpServiceEvent());
            break;
          }
          case INTERACTIVELOGINEVENT: {
            mergeInteractiveLoginEvent(other.getInteractiveLoginEvent());
            break;
          }
          case EVENTTYPE_NOT_SET: {
            break;
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                version_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 18: {
                id_ = input.readStringRequireUtf8();

                break;
              } // case 18
              case 26: {
                eventSource_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 34: {
                eventName_ = input.readStringRequireUtf8();

                break;
              } // case 34
              case 40: {
                timestamp_ = input.readInt64();

                break;
              } // case 40
              case 50: {
                input.readMessage(
                    getActorIdentityFieldBuilder().getBuilder(),
                    extensionRegistry);

                break;
              } // case 50
              case 58: {
                accountId_ = input.readStringRequireUtf8();

                break;
              } // case 58
              case 66: {
                requestId_ = input.readStringRequireUtf8();

                break;
              } // case 66
              case 74: {
                resultCode_ = input.readStringRequireUtf8();

                break;
              } // case 74
              case 82: {
                resultMessage_ = input.readStringRequireUtf8();

                break;
              } // case 82
              case 90: {
                input.readMessage(
                    getApiRequestEventFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 11;
                break;
              } // case 90
              case 98: {
                input.readMessage(
                    getCdpServiceEventFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 12;
                break;
              } // case 98
              case 106: {
                input.readMessage(
                    getInteractiveLoginEventFieldBuilder().getBuilder(),
                    extensionRegistry);
                eventTypeCase_ = 13;
                break;
              } // case 106
              case 114: {
                archiveId_ = input.readStringRequireUtf8();

                break;
              } // case 114
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int eventTypeCase_ = 0;
      private java.lang.Object eventType_;
      public EventTypeCase
          getEventTypeCase() {
        return EventTypeCase.forNumber(
            eventTypeCase_);
      }

      public Builder clearEventType() {
        eventTypeCase_ = 0;
        eventType_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object version_ = "";
      /**
       * <pre>
       * The version of the event structure.
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return The version.
       */
      public java.lang.String getVersion() {
        java.lang.Object ref = version_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          version_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The version of the event structure.
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return The bytes for version.
       */
      public com.google.protobuf.ByteString
          getVersionBytes() {
        java.lang.Object ref = version_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          version_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The version of the event structure.
       * </pre>
       *
       * <code>string version = 1;</code>
       * @param value The version to set.
       * @return This builder for chaining.
       */
      public Builder setVersion(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The version of the event structure.
       * </pre>
       *
       * <code>string version = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearVersion() {
        
        version_ = getDefaultInstance().getVersion();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The version of the event structure.
       * </pre>
       *
       * <code>string version = 1;</code>
       * @param value The bytes for version to set.
       * @return This builder for chaining.
       */
      public Builder setVersionBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        version_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object id_ = "";
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 2;</code>
       * @return The id.
       */
      public java.lang.String getId() {
        java.lang.Object ref = id_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          id_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 2;</code>
       * @return The bytes for id.
       */
      public com.google.protobuf.ByteString
          getIdBytes() {
        java.lang.Object ref = id_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          id_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 2;</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        id_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        
        id_ = getDefaultInstance().getId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * UUID for this event.
       * </pre>
       *
       * <code>string id = 2;</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        id_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventSource_ = "";
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 3;</code>
       * @return The eventSource.
       */
      public java.lang.String getEventSource() {
        java.lang.Object ref = eventSource_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventSource_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 3;</code>
       * @return The bytes for eventSource.
       */
      public com.google.protobuf.ByteString
          getEventSourceBytes() {
        java.lang.Object ref = eventSource_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventSource_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 3;</code>
       * @param value The eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSource(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventSource_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventSource() {
        
        eventSource_ = getDefaultInstance().getEventSource();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The source service of the event. It must be the name of a service as
       * enumerated in the CRN definition.
       * </pre>
       *
       * <code>string eventSource = 3;</code>
       * @param value The bytes for eventSource to set.
       * @return This builder for chaining.
       */
      public Builder setEventSourceBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventSource_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object eventName_ = "";
      /**
       * <pre>
       * The name of the event. Each source defines all its event names, and a name
       * must be unique for its source.
       * </pre>
       *
       * <code>string eventName = 4;</code>
       * @return The eventName.
       */
      public java.lang.String getEventName() {
        java.lang.Object ref = eventName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          eventName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The name of the event. Each source defines all its event names, and a name
       * must be unique for its source.
       * </pre>
       *
       * <code>string eventName = 4;</code>
       * @return The bytes for eventName.
       */
      public com.google.protobuf.ByteString
          getEventNameBytes() {
        java.lang.Object ref = eventName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          eventName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The name of the event. Each source defines all its event names, and a name
       * must be unique for its source.
       * </pre>
       *
       * <code>string eventName = 4;</code>
       * @param value The eventName to set.
       * @return This builder for chaining.
       */
      public Builder setEventName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        eventName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the event. Each source defines all its event names, and a name
       * must be unique for its source.
       * </pre>
       *
       * <code>string eventName = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventName() {
        
        eventName_ = getDefaultInstance().getEventName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The name of the event. Each source defines all its event names, and a name
       * must be unique for its source.
       * </pre>
       *
       * <code>string eventName = 4;</code>
       * @param value The bytes for eventName to set.
       * @return This builder for chaining.
       */
      public Builder setEventNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        eventName_ = value;
        onChanged();
        return this;
      }

      private long timestamp_ ;
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return The timestamp.
       */
      @java.lang.Override
      public long getTimestamp() {
        return timestamp_;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @param value The timestamp to set.
       * @return This builder for chaining.
       */
      public Builder setTimestamp(long value) {
        
        timestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The Unix timestamp, in milliseconds (UTC), when the event occurred.
       * </pre>
       *
       * <code>int64 timestamp = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearTimestamp() {
        
        timestamp_ = 0L;
        onChanged();
        return this;
      }

      private com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity actorIdentity_;
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder> actorIdentityBuilder_;
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       * @return Whether the actorIdentity field is set.
       */
      public boolean hasActorIdentity() {
        return actorIdentityBuilder_ != null || actorIdentity_ != null;
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       * @return The actorIdentity.
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity getActorIdentity() {
        if (actorIdentityBuilder_ == null) {
          return actorIdentity_ == null ? com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.getDefaultInstance() : actorIdentity_;
        } else {
          return actorIdentityBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public Builder setActorIdentity(com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity value) {
        if (actorIdentityBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          actorIdentity_ = value;
          onChanged();
        } else {
          actorIdentityBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public Builder setActorIdentity(
          com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder builderForValue) {
        if (actorIdentityBuilder_ == null) {
          actorIdentity_ = builderForValue.build();
          onChanged();
        } else {
          actorIdentityBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public Builder mergeActorIdentity(com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity value) {
        if (actorIdentityBuilder_ == null) {
          if (actorIdentity_ != null) {
            actorIdentity_ =
              com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.newBuilder(actorIdentity_).mergeFrom(value).buildPartial();
          } else {
            actorIdentity_ = value;
          }
          onChanged();
        } else {
          actorIdentityBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public Builder clearActorIdentity() {
        if (actorIdentityBuilder_ == null) {
          actorIdentity_ = null;
          onChanged();
        } else {
          actorIdentity_ = null;
          actorIdentityBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder getActorIdentityBuilder() {
        
        onChanged();
        return getActorIdentityFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder getActorIdentityOrBuilder() {
        if (actorIdentityBuilder_ != null) {
          return actorIdentityBuilder_.getMessageOrBuilder();
        } else {
          return actorIdentity_ == null ?
              com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.getDefaultInstance() : actorIdentity_;
        }
      }
      /**
       * <pre>
       * The actor who initiated this event.
       * </pre>
       *
       * <code>.audit.ActorIdentity actorIdentity = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder> 
          getActorIdentityFieldBuilder() {
        if (actorIdentityBuilder_ == null) {
          actorIdentityBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentity.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ActorIdentityOrBuilder>(
                  getActorIdentity(),
                  getParentForChildren(),
                  isClean());
          actorIdentity_ = null;
        }
        return actorIdentityBuilder_;
      }

      private java.lang.Object accountId_ = "";
      /**
       * <pre>
       * Account id in which this event occurred in.
       * </pre>
       *
       * <code>string accountId = 7;</code>
       * @return The accountId.
       */
      public java.lang.String getAccountId() {
        java.lang.Object ref = accountId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accountId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Account id in which this event occurred in.
       * </pre>
       *
       * <code>string accountId = 7;</code>
       * @return The bytes for accountId.
       */
      public com.google.protobuf.ByteString
          getAccountIdBytes() {
        java.lang.Object ref = accountId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accountId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Account id in which this event occurred in.
       * </pre>
       *
       * <code>string accountId = 7;</code>
       * @param value The accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Account id in which this event occurred in.
       * </pre>
       *
       * <code>string accountId = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountId() {
        
        accountId_ = getDefaultInstance().getAccountId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Account id in which this event occurred in.
       * </pre>
       *
       * <code>string accountId = 7;</code>
       * @param value The bytes for accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accountId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object requestId_ = "";
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 8;</code>
       * @return The requestId.
       */
      public java.lang.String getRequestId() {
        java.lang.Object ref = requestId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          requestId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 8;</code>
       * @return The bytes for requestId.
       */
      public com.google.protobuf.ByteString
          getRequestIdBytes() {
        java.lang.Object ref = requestId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          requestId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 8;</code>
       * @param value The requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        requestId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearRequestId() {
        
        requestId_ = getDefaultInstance().getRequestId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Id of the request that initiated this event. Optional.
       * </pre>
       *
       * <code>string requestId = 8;</code>
       * @param value The bytes for requestId to set.
       * @return This builder for chaining.
       */
      public Builder setRequestIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        requestId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object resultCode_ = "";
      /**
       * <pre>
       * Optional result code.
       * </pre>
       *
       * <code>string resultCode = 9;</code>
       * @return The resultCode.
       */
      public java.lang.String getResultCode() {
        java.lang.Object ref = resultCode_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultCode_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional result code.
       * </pre>
       *
       * <code>string resultCode = 9;</code>
       * @return The bytes for resultCode.
       */
      public com.google.protobuf.ByteString
          getResultCodeBytes() {
        java.lang.Object ref = resultCode_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultCode_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional result code.
       * </pre>
       *
       * <code>string resultCode = 9;</code>
       * @param value The resultCode to set.
       * @return This builder for chaining.
       */
      public Builder setResultCode(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultCode_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result code.
       * </pre>
       *
       * <code>string resultCode = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultCode() {
        
        resultCode_ = getDefaultInstance().getResultCode();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result code.
       * </pre>
       *
       * <code>string resultCode = 9;</code>
       * @param value The bytes for resultCode to set.
       * @return This builder for chaining.
       */
      public Builder setResultCodeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultCode_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object resultMessage_ = "";
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 10;</code>
       * @return The resultMessage.
       */
      public java.lang.String getResultMessage() {
        java.lang.Object ref = resultMessage_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          resultMessage_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 10;</code>
       * @return The bytes for resultMessage.
       */
      public com.google.protobuf.ByteString
          getResultMessageBytes() {
        java.lang.Object ref = resultMessage_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          resultMessage_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 10;</code>
       * @param value The resultMessage to set.
       * @return This builder for chaining.
       */
      public Builder setResultMessage(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        resultMessage_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearResultMessage() {
        
        resultMessage_ = getDefaultInstance().getResultMessage();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Optional result message, a short message (about one sentence) describing
       * the result.
       * </pre>
       *
       * <code>string resultMessage = 10;</code>
       * @param value The bytes for resultMessage to set.
       * @return This builder for chaining.
       */
      public Builder setResultMessageBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        resultMessage_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder> apiRequestEventBuilder_;
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       * @return Whether the apiRequestEvent field is set.
       */
      @java.lang.Override
      public boolean hasApiRequestEvent() {
        return eventTypeCase_ == 11;
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       * @return The apiRequestEvent.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent getApiRequestEvent() {
        if (apiRequestEventBuilder_ == null) {
          if (eventTypeCase_ == 11) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 11) {
            return apiRequestEventBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      public Builder setApiRequestEvent(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent value) {
        if (apiRequestEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          apiRequestEventBuilder_.setMessage(value);
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      public Builder setApiRequestEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder builderForValue) {
        if (apiRequestEventBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          apiRequestEventBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      public Builder mergeApiRequestEvent(com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent value) {
        if (apiRequestEventBuilder_ == null) {
          if (eventTypeCase_ == 11 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 11) {
            apiRequestEventBuilder_.mergeFrom(value);
          } else {
            apiRequestEventBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 11;
        return this;
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      public Builder clearApiRequestEvent() {
        if (apiRequestEventBuilder_ == null) {
          if (eventTypeCase_ == 11) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 11) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          apiRequestEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder getApiRequestEventBuilder() {
        return getApiRequestEventFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder getApiRequestEventOrBuilder() {
        if ((eventTypeCase_ == 11) && (apiRequestEventBuilder_ != null)) {
          return apiRequestEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 11) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from an API request.
       * </pre>
       *
       * <code>.audit.ApiRequestEvent apiRequestEvent = 11;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder> 
          getApiRequestEventFieldBuilder() {
        if (apiRequestEventBuilder_ == null) {
          if (!(eventTypeCase_ == 11)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.getDefaultInstance();
          }
          apiRequestEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEventOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.ApiRequestEvent) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 11;
        onChanged();;
        return apiRequestEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder> cdpServiceEventBuilder_;
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       * @return Whether the cdpServiceEvent field is set.
       */
      @java.lang.Override
      public boolean hasCdpServiceEvent() {
        return eventTypeCase_ == 12;
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       * @return The cdpServiceEvent.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent getCdpServiceEvent() {
        if (cdpServiceEventBuilder_ == null) {
          if (eventTypeCase_ == 12) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 12) {
            return cdpServiceEventBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      public Builder setCdpServiceEvent(com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent value) {
        if (cdpServiceEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          cdpServiceEventBuilder_.setMessage(value);
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      public Builder setCdpServiceEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder builderForValue) {
        if (cdpServiceEventBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          cdpServiceEventBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      public Builder mergeCdpServiceEvent(com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent value) {
        if (cdpServiceEventBuilder_ == null) {
          if (eventTypeCase_ == 12 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 12) {
            cdpServiceEventBuilder_.mergeFrom(value);
          } else {
            cdpServiceEventBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 12;
        return this;
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      public Builder clearCdpServiceEvent() {
        if (cdpServiceEventBuilder_ == null) {
          if (eventTypeCase_ == 12) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 12) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          cdpServiceEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder getCdpServiceEventBuilder() {
        return getCdpServiceEventFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder getCdpServiceEventOrBuilder() {
        if ((eventTypeCase_ == 12) && (cdpServiceEventBuilder_ != null)) {
          return cdpServiceEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 12) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from an event generated by a CDP service.
       * </pre>
       *
       * <code>.audit.CdpServiceEvent cdpServiceEvent = 12;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder> 
          getCdpServiceEventFieldBuilder() {
        if (cdpServiceEventBuilder_ == null) {
          if (!(eventTypeCase_ == 12)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.getDefaultInstance();
          }
          cdpServiceEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEventOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.CdpServiceEvent) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 12;
        onChanged();;
        return cdpServiceEventBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder> interactiveLoginEventBuilder_;
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       * @return Whether the interactiveLoginEvent field is set.
       */
      @java.lang.Override
      public boolean hasInteractiveLoginEvent() {
        return eventTypeCase_ == 13;
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       * @return The interactiveLoginEvent.
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent getInteractiveLoginEvent() {
        if (interactiveLoginEventBuilder_ == null) {
          if (eventTypeCase_ == 13) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
        } else {
          if (eventTypeCase_ == 13) {
            return interactiveLoginEventBuilder_.getMessage();
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      public Builder setInteractiveLoginEvent(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent value) {
        if (interactiveLoginEventBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          eventType_ = value;
          onChanged();
        } else {
          interactiveLoginEventBuilder_.setMessage(value);
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      public Builder setInteractiveLoginEvent(
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder builderForValue) {
        if (interactiveLoginEventBuilder_ == null) {
          eventType_ = builderForValue.build();
          onChanged();
        } else {
          interactiveLoginEventBuilder_.setMessage(builderForValue.build());
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      public Builder mergeInteractiveLoginEvent(com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent value) {
        if (interactiveLoginEventBuilder_ == null) {
          if (eventTypeCase_ == 13 &&
              eventType_ != com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance()) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.newBuilder((com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_)
                .mergeFrom(value).buildPartial();
          } else {
            eventType_ = value;
          }
          onChanged();
        } else {
          if (eventTypeCase_ == 13) {
            interactiveLoginEventBuilder_.mergeFrom(value);
          } else {
            interactiveLoginEventBuilder_.setMessage(value);
          }
        }
        eventTypeCase_ = 13;
        return this;
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      public Builder clearInteractiveLoginEvent() {
        if (interactiveLoginEventBuilder_ == null) {
          if (eventTypeCase_ == 13) {
            eventTypeCase_ = 0;
            eventType_ = null;
            onChanged();
          }
        } else {
          if (eventTypeCase_ == 13) {
            eventTypeCase_ = 0;
            eventType_ = null;
          }
          interactiveLoginEventBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder getInteractiveLoginEventBuilder() {
        return getInteractiveLoginEventFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder getInteractiveLoginEventOrBuilder() {
        if ((eventTypeCase_ == 13) && (interactiveLoginEventBuilder_ != null)) {
          return interactiveLoginEventBuilder_.getMessageOrBuilder();
        } else {
          if (eventTypeCase_ == 13) {
            return (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_;
          }
          return com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
        }
      }
      /**
       * <pre>
       * Information originating from a login event.
       * </pre>
       *
       * <code>.audit.InteractiveLoginEvent interactiveLoginEvent = 13;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder> 
          getInteractiveLoginEventFieldBuilder() {
        if (interactiveLoginEventBuilder_ == null) {
          if (!(eventTypeCase_ == 13)) {
            eventType_ = com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.getDefaultInstance();
          }
          interactiveLoginEventBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent.Builder, com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEventOrBuilder>(
                  (com.cloudera.thunderhead.service.audit.AuditProto.InteractiveLoginEvent) eventType_,
                  getParentForChildren(),
                  isClean());
          eventType_ = null;
        }
        eventTypeCase_ = 13;
        onChanged();;
        return interactiveLoginEventBuilder_;
      }

      private java.lang.Object archiveId_ = "";
      /**
       * <pre>
       * The unique identifier assigned to the batch of audit events in which the
       * audit event was archived
       * </pre>
       *
       * <code>string archiveId = 14;</code>
       * @return The archiveId.
       */
      public java.lang.String getArchiveId() {
        java.lang.Object ref = archiveId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          archiveId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The unique identifier assigned to the batch of audit events in which the
       * audit event was archived
       * </pre>
       *
       * <code>string archiveId = 14;</code>
       * @return The bytes for archiveId.
       */
      public com.google.protobuf.ByteString
          getArchiveIdBytes() {
        java.lang.Object ref = archiveId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          archiveId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The unique identifier assigned to the batch of audit events in which the
       * audit event was archived
       * </pre>
       *
       * <code>string archiveId = 14;</code>
       * @param value The archiveId to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        archiveId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The unique identifier assigned to the batch of audit events in which the
       * audit event was archived
       * </pre>
       *
       * <code>string archiveId = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearArchiveId() {
        
        archiveId_ = getDefaultInstance().getArchiveId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The unique identifier assigned to the batch of audit events in which the
       * audit event was archived
       * </pre>
       *
       * <code>string archiveId = 14;</code>
       * @param value The bytes for archiveId to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        archiveId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.CdpAuditEvent)
    }

    // @@protoc_insertion_point(class_scope:audit.CdpAuditEvent)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<CdpAuditEvent>
        PARSER = new com.google.protobuf.AbstractParser<CdpAuditEvent>() {
      @java.lang.Override
      public CdpAuditEvent parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<CdpAuditEvent> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<CdpAuditEvent> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.CdpAuditEvent getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArchiveAuditEventsRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ArchiveAuditEventsRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The beginning POSIX epoch time, in milliseconds, for the search range.
     * </pre>
     *
     * <code>int64 fromTimestamp = 1;</code>
     * @return The fromTimestamp.
     */
    long getFromTimestamp();

    /**
     * <pre>
     * The ending POSIX epoch time, in milliseconds, for the search range.
     * </pre>
     *
     * <code>int64 toTimestamp = 2;</code>
     * @return The toTimestamp.
     */
    long getToTimestamp();

    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    java.lang.String getAccountId();
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    com.google.protobuf.ByteString
        getAccountIdBytes();
  }
  /**
   * <pre>
   * Request to archive audit events.
   * </pre>
   *
   * Protobuf type {@code audit.ArchiveAuditEventsRequest}
   */
  public static final class ArchiveAuditEventsRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ArchiveAuditEventsRequest)
      ArchiveAuditEventsRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArchiveAuditEventsRequest.newBuilder() to construct.
    private ArchiveAuditEventsRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ArchiveAuditEventsRequest() {
      accountId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArchiveAuditEventsRequest();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.Builder.class);
    }

    public static final int FROMTIMESTAMP_FIELD_NUMBER = 1;
    private long fromTimestamp_;
    /**
     * <pre>
     * The beginning POSIX epoch time, in milliseconds, for the search range.
     * </pre>
     *
     * <code>int64 fromTimestamp = 1;</code>
     * @return The fromTimestamp.
     */
    @java.lang.Override
    public long getFromTimestamp() {
      return fromTimestamp_;
    }

    public static final int TOTIMESTAMP_FIELD_NUMBER = 2;
    private long toTimestamp_;
    /**
     * <pre>
     * The ending POSIX epoch time, in milliseconds, for the search range.
     * </pre>
     *
     * <code>int64 toTimestamp = 2;</code>
     * @return The toTimestamp.
     */
    @java.lang.Override
    public long getToTimestamp() {
      return toTimestamp_;
    }

    public static final int ACCOUNTID_FIELD_NUMBER = 3;
    private volatile java.lang.Object accountId_;
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The accountId.
     */
    @java.lang.Override
    public java.lang.String getAccountId() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        accountId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The account ID to retrieve events from.
     * </pre>
     *
     * <code>string accountId = 3;</code>
     * @return The bytes for accountId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountIdBytes() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accountId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (fromTimestamp_ != 0L) {
        output.writeInt64(1, fromTimestamp_);
      }
      if (toTimestamp_ != 0L) {
        output.writeInt64(2, toTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, accountId_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (fromTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, fromTimestamp_);
      }
      if (toTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, toTimestamp_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, accountId_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest other = (com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest) obj;

      if (getFromTimestamp()
          != other.getFromTimestamp()) return false;
      if (getToTimestamp()
          != other.getToTimestamp()) return false;
      if (!getAccountId()
          .equals(other.getAccountId())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + FROMTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getFromTimestamp());
      hash = (37 * hash) + TOTIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getToTimestamp());
      hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
      hash = (53 * hash) + getAccountId().hashCode();
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Request to archive audit events.
     * </pre>
     *
     * Protobuf type {@code audit.ArchiveAuditEventsRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ArchiveAuditEventsRequest)
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        fromTimestamp_ = 0L;

        toTimestamp_ = 0L;

        accountId_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsRequest_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest result = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest(this);
        result.fromTimestamp_ = fromTimestamp_;
        result.toTimestamp_ = toTimestamp_;
        result.accountId_ = accountId_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest.getDefaultInstance()) return this;
        if (other.getFromTimestamp() != 0L) {
          setFromTimestamp(other.getFromTimestamp());
        }
        if (other.getToTimestamp() != 0L) {
          setToTimestamp(other.getToTimestamp());
        }
        if (!other.getAccountId().isEmpty()) {
          accountId_ = other.accountId_;
          onChanged();
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                fromTimestamp_ = input.readInt64();

                break;
              } // case 8
              case 16: {
                toTimestamp_ = input.readInt64();

                break;
              } // case 16
              case 26: {
                accountId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private long fromTimestamp_ ;
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @return The fromTimestamp.
       */
      @java.lang.Override
      public long getFromTimestamp() {
        return fromTimestamp_;
      }
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @param value The fromTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setFromTimestamp(long value) {
        
        fromTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The beginning POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 fromTimestamp = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearFromTimestamp() {
        
        fromTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private long toTimestamp_ ;
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @return The toTimestamp.
       */
      @java.lang.Override
      public long getToTimestamp() {
        return toTimestamp_;
      }
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @param value The toTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setToTimestamp(long value) {
        
        toTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The ending POSIX epoch time, in milliseconds, for the search range.
       * </pre>
       *
       * <code>int64 toTimestamp = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearToTimestamp() {
        
        toTimestamp_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object accountId_ = "";
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The accountId.
       */
      public java.lang.String getAccountId() {
        java.lang.Object ref = accountId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accountId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return The bytes for accountId.
       */
      public com.google.protobuf.ByteString
          getAccountIdBytes() {
        java.lang.Object ref = accountId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accountId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountId() {
        
        accountId_ = getDefaultInstance().getAccountId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID to retrieve events from.
       * </pre>
       *
       * <code>string accountId = 3;</code>
       * @param value The bytes for accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accountId_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ArchiveAuditEventsRequest)
    }

    // @@protoc_insertion_point(class_scope:audit.ArchiveAuditEventsRequest)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ArchiveAuditEventsRequest>
        PARSER = new com.google.protobuf.AbstractParser<ArchiveAuditEventsRequest>() {
      @java.lang.Override
      public ArchiveAuditEventsRequest parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ArchiveAuditEventsRequest> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ArchiveAuditEventsRequest> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArchiveAuditEventsResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ArchiveAuditEventsResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The number of events archived.
     * </pre>
     *
     * <code>int64 eventCount = 1;</code>
     * @return The eventCount.
     */
    long getEventCount();

    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> 
        getEventBatchesList();
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getEventBatches(int index);
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    int getEventBatchesCount();
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder> 
        getEventBatchesOrBuilderList();
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder getEventBatchesOrBuilder(
        int index);
  }
  /**
   * <pre>
   * Response from archiving audit events.
   * </pre>
   *
   * Protobuf type {@code audit.ArchiveAuditEventsResponse}
   */
  public static final class ArchiveAuditEventsResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ArchiveAuditEventsResponse)
      ArchiveAuditEventsResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArchiveAuditEventsResponse.newBuilder() to construct.
    private ArchiveAuditEventsResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ArchiveAuditEventsResponse() {
      eventBatches_ = java.util.Collections.emptyList();
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArchiveAuditEventsResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.Builder.class);
    }

    public static final int EVENTCOUNT_FIELD_NUMBER = 1;
    private long eventCount_;
    /**
     * <pre>
     * The number of events archived.
     * </pre>
     *
     * <code>int64 eventCount = 1;</code>
     * @return The eventCount.
     */
    @java.lang.Override
    public long getEventCount() {
      return eventCount_;
    }

    public static final int EVENTBATCHES_FIELD_NUMBER = 2;
    private java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> eventBatches_;
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    @java.lang.Override
    public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> getEventBatchesList() {
      return eventBatches_;
    }
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    @java.lang.Override
    public java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder> 
        getEventBatchesOrBuilderList() {
      return eventBatches_;
    }
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    @java.lang.Override
    public int getEventBatchesCount() {
      return eventBatches_.size();
    }
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getEventBatches(int index) {
      return eventBatches_.get(index);
    }
    /**
     * <pre>
     * The details about the batches of events archived.
     * </pre>
     *
     * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
     */
    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder getEventBatchesOrBuilder(
        int index) {
      return eventBatches_.get(index);
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (eventCount_ != 0L) {
        output.writeInt64(1, eventCount_);
      }
      for (int i = 0; i < eventBatches_.size(); i++) {
        output.writeMessage(2, eventBatches_.get(i));
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (eventCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(1, eventCount_);
      }
      for (int i = 0; i < eventBatches_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(2, eventBatches_.get(i));
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse) obj;

      if (getEventCount()
          != other.getEventCount()) return false;
      if (!getEventBatchesList()
          .equals(other.getEventBatchesList())) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + EVENTCOUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEventCount());
      if (getEventBatchesCount() > 0) {
        hash = (37 * hash) + EVENTBATCHES_FIELD_NUMBER;
        hash = (53 * hash) + getEventBatchesList().hashCode();
      }
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Response from archiving audit events.
     * </pre>
     *
     * Protobuf type {@code audit.ArchiveAuditEventsResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ArchiveAuditEventsResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        eventCount_ = 0L;

        if (eventBatchesBuilder_ == null) {
          eventBatches_ = java.util.Collections.emptyList();
        } else {
          eventBatches_ = null;
          eventBatchesBuilder_.clear();
        }
        bitField0_ = (bitField0_ & ~0x00000001);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse(this);
        int from_bitField0_ = bitField0_;
        result.eventCount_ = eventCount_;
        if (eventBatchesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            eventBatches_ = java.util.Collections.unmodifiableList(eventBatches_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.eventBatches_ = eventBatches_;
        } else {
          result.eventBatches_ = eventBatchesBuilder_.build();
        }
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse.getDefaultInstance()) return this;
        if (other.getEventCount() != 0L) {
          setEventCount(other.getEventCount());
        }
        if (eventBatchesBuilder_ == null) {
          if (!other.eventBatches_.isEmpty()) {
            if (eventBatches_.isEmpty()) {
              eventBatches_ = other.eventBatches_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureEventBatchesIsMutable();
              eventBatches_.addAll(other.eventBatches_);
            }
            onChanged();
          }
        } else {
          if (!other.eventBatches_.isEmpty()) {
            if (eventBatchesBuilder_.isEmpty()) {
              eventBatchesBuilder_.dispose();
              eventBatchesBuilder_ = null;
              eventBatches_ = other.eventBatches_;
              bitField0_ = (bitField0_ & ~0x00000001);
              eventBatchesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getEventBatchesFieldBuilder() : null;
            } else {
              eventBatchesBuilder_.addAllMessages(other.eventBatches_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 8: {
                eventCount_ = input.readInt64();

                break;
              } // case 8
              case 18: {
                com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse m =
                    input.readMessage(
                        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.parser(),
                        extensionRegistry);
                if (eventBatchesBuilder_ == null) {
                  ensureEventBatchesIsMutable();
                  eventBatches_.add(m);
                } else {
                  eventBatchesBuilder_.addMessage(m);
                }
                break;
              } // case 18
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }
      private int bitField0_;

      private long eventCount_ ;
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 1;</code>
       * @return The eventCount.
       */
      @java.lang.Override
      public long getEventCount() {
        return eventCount_;
      }
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 1;</code>
       * @param value The eventCount to set.
       * @return This builder for chaining.
       */
      public Builder setEventCount(long value) {
        
        eventCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventCount() {
        
        eventCount_ = 0L;
        onChanged();
        return this;
      }

      private java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> eventBatches_ =
        java.util.Collections.emptyList();
      private void ensureEventBatchesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          eventBatches_ = new java.util.ArrayList<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse>(eventBatches_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder> eventBatchesBuilder_;

      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> getEventBatchesList() {
        if (eventBatchesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(eventBatches_);
        } else {
          return eventBatchesBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public int getEventBatchesCount() {
        if (eventBatchesBuilder_ == null) {
          return eventBatches_.size();
        } else {
          return eventBatchesBuilder_.getCount();
        }
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getEventBatches(int index) {
        if (eventBatchesBuilder_ == null) {
          return eventBatches_.get(index);
        } else {
          return eventBatchesBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder setEventBatches(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse value) {
        if (eventBatchesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventBatchesIsMutable();
          eventBatches_.set(index, value);
          onChanged();
        } else {
          eventBatchesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder setEventBatches(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder builderForValue) {
        if (eventBatchesBuilder_ == null) {
          ensureEventBatchesIsMutable();
          eventBatches_.set(index, builderForValue.build());
          onChanged();
        } else {
          eventBatchesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder addEventBatches(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse value) {
        if (eventBatchesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventBatchesIsMutable();
          eventBatches_.add(value);
          onChanged();
        } else {
          eventBatchesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder addEventBatches(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse value) {
        if (eventBatchesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureEventBatchesIsMutable();
          eventBatches_.add(index, value);
          onChanged();
        } else {
          eventBatchesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder addEventBatches(
          com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder builderForValue) {
        if (eventBatchesBuilder_ == null) {
          ensureEventBatchesIsMutable();
          eventBatches_.add(builderForValue.build());
          onChanged();
        } else {
          eventBatchesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder addEventBatches(
          int index, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder builderForValue) {
        if (eventBatchesBuilder_ == null) {
          ensureEventBatchesIsMutable();
          eventBatches_.add(index, builderForValue.build());
          onChanged();
        } else {
          eventBatchesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder addAllEventBatches(
          java.lang.Iterable<? extends com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse> values) {
        if (eventBatchesBuilder_ == null) {
          ensureEventBatchesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, eventBatches_);
          onChanged();
        } else {
          eventBatchesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder clearEventBatches() {
        if (eventBatchesBuilder_ == null) {
          eventBatches_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          eventBatchesBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public Builder removeEventBatches(int index) {
        if (eventBatchesBuilder_ == null) {
          ensureEventBatchesIsMutable();
          eventBatches_.remove(index);
          onChanged();
        } else {
          eventBatchesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder getEventBatchesBuilder(
          int index) {
        return getEventBatchesFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder getEventBatchesOrBuilder(
          int index) {
        if (eventBatchesBuilder_ == null) {
          return eventBatches_.get(index);  } else {
          return eventBatchesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public java.util.List<? extends com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder> 
           getEventBatchesOrBuilderList() {
        if (eventBatchesBuilder_ != null) {
          return eventBatchesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(eventBatches_);
        }
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder addEventBatchesBuilder() {
        return getEventBatchesFieldBuilder().addBuilder(
            com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.getDefaultInstance());
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder addEventBatchesBuilder(
          int index) {
        return getEventBatchesFieldBuilder().addBuilder(
            index, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.getDefaultInstance());
      }
      /**
       * <pre>
       * The details about the batches of events archived.
       * </pre>
       *
       * <code>repeated .audit.ArchiveAuditEventsBatchResponse eventBatches = 2;</code>
       */
      public java.util.List<com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder> 
           getEventBatchesBuilderList() {
        return getEventBatchesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder> 
          getEventBatchesFieldBuilder() {
        if (eventBatchesBuilder_ == null) {
          eventBatchesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder>(
                  eventBatches_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          eventBatches_ = null;
        }
        return eventBatchesBuilder_;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ArchiveAuditEventsResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.ArchiveAuditEventsResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ArchiveAuditEventsResponse>
        PARSER = new com.google.protobuf.AbstractParser<ArchiveAuditEventsResponse>() {
      @java.lang.Override
      public ArchiveAuditEventsResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ArchiveAuditEventsResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ArchiveAuditEventsResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ArchiveAuditEventsBatchResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:audit.ArchiveAuditEventsBatchResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * The account ID for which events were archived.
     * </pre>
     *
     * <code>string accountId = 1;</code>
     * @return The accountId.
     */
    java.lang.String getAccountId();
    /**
     * <pre>
     * The account ID for which events were archived.
     * </pre>
     *
     * <code>string accountId = 1;</code>
     * @return The bytes for accountId.
     */
    com.google.protobuf.ByteString
        getAccountIdBytes();

    /**
     * <pre>
     * The number of events archived.
     * </pre>
     *
     * <code>int64 eventCount = 2;</code>
     * @return The eventCount.
     */
    long getEventCount();

    /**
     * <pre>
     * The archive ID of the batch.
     * </pre>
     *
     * <code>string archiveId = 3;</code>
     * @return The archiveId.
     */
    java.lang.String getArchiveId();
    /**
     * <pre>
     * The archive ID of the batch.
     * </pre>
     *
     * <code>string archiveId = 3;</code>
     * @return The bytes for archiveId.
     */
    com.google.protobuf.ByteString
        getArchiveIdBytes();

    /**
     * <pre>
     * The archive timestamp of the batch.
     * </pre>
     *
     * <code>int64 archiveTimestamp = 4;</code>
     * @return The archiveTimestamp.
     */
    long getArchiveTimestamp();
  }
  /**
   * <pre>
   * Information about a batch of audit events that were archived.
   * </pre>
   *
   * Protobuf type {@code audit.ArchiveAuditEventsBatchResponse}
   */
  public static final class ArchiveAuditEventsBatchResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:audit.ArchiveAuditEventsBatchResponse)
      ArchiveAuditEventsBatchResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use ArchiveAuditEventsBatchResponse.newBuilder() to construct.
    private ArchiveAuditEventsBatchResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private ArchiveAuditEventsBatchResponse() {
      accountId_ = "";
      archiveId_ = "";
    }

    @java.lang.Override
    @SuppressWarnings({"unused"})
    protected java.lang.Object newInstance(
        UnusedPrivateParameter unused) {
      return new ArchiveAuditEventsBatchResponse();
    }

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsBatchResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder.class);
    }

    public static final int ACCOUNTID_FIELD_NUMBER = 1;
    private volatile java.lang.Object accountId_;
    /**
     * <pre>
     * The account ID for which events were archived.
     * </pre>
     *
     * <code>string accountId = 1;</code>
     * @return The accountId.
     */
    @java.lang.Override
    public java.lang.String getAccountId() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        accountId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The account ID for which events were archived.
     * </pre>
     *
     * <code>string accountId = 1;</code>
     * @return The bytes for accountId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getAccountIdBytes() {
      java.lang.Object ref = accountId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        accountId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int EVENTCOUNT_FIELD_NUMBER = 2;
    private long eventCount_;
    /**
     * <pre>
     * The number of events archived.
     * </pre>
     *
     * <code>int64 eventCount = 2;</code>
     * @return The eventCount.
     */
    @java.lang.Override
    public long getEventCount() {
      return eventCount_;
    }

    public static final int ARCHIVEID_FIELD_NUMBER = 3;
    private volatile java.lang.Object archiveId_;
    /**
     * <pre>
     * The archive ID of the batch.
     * </pre>
     *
     * <code>string archiveId = 3;</code>
     * @return The archiveId.
     */
    @java.lang.Override
    public java.lang.String getArchiveId() {
      java.lang.Object ref = archiveId_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        archiveId_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * The archive ID of the batch.
     * </pre>
     *
     * <code>string archiveId = 3;</code>
     * @return The bytes for archiveId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getArchiveIdBytes() {
      java.lang.Object ref = archiveId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        archiveId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int ARCHIVETIMESTAMP_FIELD_NUMBER = 4;
    private long archiveTimestamp_;
    /**
     * <pre>
     * The archive timestamp of the batch.
     * </pre>
     *
     * <code>int64 archiveTimestamp = 4;</code>
     * @return The archiveTimestamp.
     */
    @java.lang.Override
    public long getArchiveTimestamp() {
      return archiveTimestamp_;
    }

    private byte memoizedIsInitialized = -1;
    @java.lang.Override
    public final boolean isInitialized() {
      byte isInitialized = memoizedIsInitialized;
      if (isInitialized == 1) return true;
      if (isInitialized == 0) return false;

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, accountId_);
      }
      if (eventCount_ != 0L) {
        output.writeInt64(2, eventCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(archiveId_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, archiveId_);
      }
      if (archiveTimestamp_ != 0L) {
        output.writeInt64(4, archiveTimestamp_);
      }
      getUnknownFields().writeTo(output);
    }

    @java.lang.Override
    public int getSerializedSize() {
      int size = memoizedSize;
      if (size != -1) return size;

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(accountId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, accountId_);
      }
      if (eventCount_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, eventCount_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(archiveId_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, archiveId_);
      }
      if (archiveTimestamp_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(4, archiveTimestamp_);
      }
      size += getUnknownFields().getSerializedSize();
      memoizedSize = size;
      return size;
    }

    @java.lang.Override
    public boolean equals(final java.lang.Object obj) {
      if (obj == this) {
       return true;
      }
      if (!(obj instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse)) {
        return super.equals(obj);
      }
      com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse other = (com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse) obj;

      if (!getAccountId()
          .equals(other.getAccountId())) return false;
      if (getEventCount()
          != other.getEventCount()) return false;
      if (!getArchiveId()
          .equals(other.getArchiveId())) return false;
      if (getArchiveTimestamp()
          != other.getArchiveTimestamp()) return false;
      if (!getUnknownFields().equals(other.getUnknownFields())) return false;
      return true;
    }

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      hash = (37 * hash) + ACCOUNTID_FIELD_NUMBER;
      hash = (53 * hash) + getAccountId().hashCode();
      hash = (37 * hash) + EVENTCOUNT_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getEventCount());
      hash = (37 * hash) + ARCHIVEID_FIELD_NUMBER;
      hash = (53 * hash) + getArchiveId().hashCode();
      hash = (37 * hash) + ARCHIVETIMESTAMP_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getArchiveTimestamp());
      hash = (29 * hash) + getUnknownFields().hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input, extensionRegistry);
    }

    @java.lang.Override
    public Builder newBuilderForType() { return newBuilder(); }
    public static Builder newBuilder() {
      return DEFAULT_INSTANCE.toBuilder();
    }
    public static Builder newBuilder(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     * Information about a batch of audit events that were archived.
     * </pre>
     *
     * Protobuf type {@code audit.ArchiveAuditEventsBatchResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:audit.ArchiveAuditEventsBatchResponse)
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsBatchResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.class, com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.Builder.class);
      }

      // Construct using com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.newBuilder()
      private Builder() {

      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);

      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        accountId_ = "";

        eventCount_ = 0L;

        archiveId_ = "";

        archiveTimestamp_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getDefaultInstanceForType() {
        return com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.getDefaultInstance();
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse build() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse buildPartial() {
        com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse result = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse(this);
        result.accountId_ = accountId_;
        result.eventCount_ = eventCount_;
        result.archiveId_ = archiveId_;
        result.archiveTimestamp_ = archiveTimestamp_;
        onBuilt();
        return result;
      }

      @java.lang.Override
      public Builder clone() {
        return super.clone();
      }
      @java.lang.Override
      public Builder setField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.setField(field, value);
      }
      @java.lang.Override
      public Builder clearField(
          com.google.protobuf.Descriptors.FieldDescriptor field) {
        return super.clearField(field);
      }
      @java.lang.Override
      public Builder clearOneof(
          com.google.protobuf.Descriptors.OneofDescriptor oneof) {
        return super.clearOneof(oneof);
      }
      @java.lang.Override
      public Builder setRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          int index, java.lang.Object value) {
        return super.setRepeatedField(field, index, value);
      }
      @java.lang.Override
      public Builder addRepeatedField(
          com.google.protobuf.Descriptors.FieldDescriptor field,
          java.lang.Object value) {
        return super.addRepeatedField(field, value);
      }
      @java.lang.Override
      public Builder mergeFrom(com.google.protobuf.Message other) {
        if (other instanceof com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse) {
          return mergeFrom((com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse other) {
        if (other == com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse.getDefaultInstance()) return this;
        if (!other.getAccountId().isEmpty()) {
          accountId_ = other.accountId_;
          onChanged();
        }
        if (other.getEventCount() != 0L) {
          setEventCount(other.getEventCount());
        }
        if (!other.getArchiveId().isEmpty()) {
          archiveId_ = other.archiveId_;
          onChanged();
        }
        if (other.getArchiveTimestamp() != 0L) {
          setArchiveTimestamp(other.getArchiveTimestamp());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        onChanged();
        return this;
      }

      @java.lang.Override
      public final boolean isInitialized() {
        return true;
      }

      @java.lang.Override
      public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        if (extensionRegistry == null) {
          throw new java.lang.NullPointerException();
        }
        try {
          boolean done = false;
          while (!done) {
            int tag = input.readTag();
            switch (tag) {
              case 0:
                done = true;
                break;
              case 10: {
                accountId_ = input.readStringRequireUtf8();

                break;
              } // case 10
              case 16: {
                eventCount_ = input.readInt64();

                break;
              } // case 16
              case 26: {
                archiveId_ = input.readStringRequireUtf8();

                break;
              } // case 26
              case 32: {
                archiveTimestamp_ = input.readInt64();

                break;
              } // case 32
              default: {
                if (!super.parseUnknownField(input, extensionRegistry, tag)) {
                  done = true; // was an endgroup tag
                }
                break;
              } // default:
            } // switch (tag)
          } // while (!done)
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.unwrapIOException();
        } finally {
          onChanged();
        } // finally
        return this;
      }

      private java.lang.Object accountId_ = "";
      /**
       * <pre>
       * The account ID for which events were archived.
       * </pre>
       *
       * <code>string accountId = 1;</code>
       * @return The accountId.
       */
      public java.lang.String getAccountId() {
        java.lang.Object ref = accountId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          accountId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The account ID for which events were archived.
       * </pre>
       *
       * <code>string accountId = 1;</code>
       * @return The bytes for accountId.
       */
      public com.google.protobuf.ByteString
          getAccountIdBytes() {
        java.lang.Object ref = accountId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          accountId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The account ID for which events were archived.
       * </pre>
       *
       * <code>string accountId = 1;</code>
       * @param value The accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        accountId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID for which events were archived.
       * </pre>
       *
       * <code>string accountId = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearAccountId() {
        
        accountId_ = getDefaultInstance().getAccountId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The account ID for which events were archived.
       * </pre>
       *
       * <code>string accountId = 1;</code>
       * @param value The bytes for accountId to set.
       * @return This builder for chaining.
       */
      public Builder setAccountIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        accountId_ = value;
        onChanged();
        return this;
      }

      private long eventCount_ ;
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 2;</code>
       * @return The eventCount.
       */
      @java.lang.Override
      public long getEventCount() {
        return eventCount_;
      }
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 2;</code>
       * @param value The eventCount to set.
       * @return This builder for chaining.
       */
      public Builder setEventCount(long value) {
        
        eventCount_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The number of events archived.
       * </pre>
       *
       * <code>int64 eventCount = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEventCount() {
        
        eventCount_ = 0L;
        onChanged();
        return this;
      }

      private java.lang.Object archiveId_ = "";
      /**
       * <pre>
       * The archive ID of the batch.
       * </pre>
       *
       * <code>string archiveId = 3;</code>
       * @return The archiveId.
       */
      public java.lang.String getArchiveId() {
        java.lang.Object ref = archiveId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          archiveId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * The archive ID of the batch.
       * </pre>
       *
       * <code>string archiveId = 3;</code>
       * @return The bytes for archiveId.
       */
      public com.google.protobuf.ByteString
          getArchiveIdBytes() {
        java.lang.Object ref = archiveId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          archiveId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * The archive ID of the batch.
       * </pre>
       *
       * <code>string archiveId = 3;</code>
       * @param value The archiveId to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        archiveId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The archive ID of the batch.
       * </pre>
       *
       * <code>string archiveId = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearArchiveId() {
        
        archiveId_ = getDefaultInstance().getArchiveId();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The archive ID of the batch.
       * </pre>
       *
       * <code>string archiveId = 3;</code>
       * @param value The bytes for archiveId to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        archiveId_ = value;
        onChanged();
        return this;
      }

      private long archiveTimestamp_ ;
      /**
       * <pre>
       * The archive timestamp of the batch.
       * </pre>
       *
       * <code>int64 archiveTimestamp = 4;</code>
       * @return The archiveTimestamp.
       */
      @java.lang.Override
      public long getArchiveTimestamp() {
        return archiveTimestamp_;
      }
      /**
       * <pre>
       * The archive timestamp of the batch.
       * </pre>
       *
       * <code>int64 archiveTimestamp = 4;</code>
       * @param value The archiveTimestamp to set.
       * @return This builder for chaining.
       */
      public Builder setArchiveTimestamp(long value) {
        
        archiveTimestamp_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * The archive timestamp of the batch.
       * </pre>
       *
       * <code>int64 archiveTimestamp = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearArchiveTimestamp() {
        
        archiveTimestamp_ = 0L;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

      @java.lang.Override
      public final Builder mergeUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.mergeUnknownFields(unknownFields);
      }


      // @@protoc_insertion_point(builder_scope:audit.ArchiveAuditEventsBatchResponse)
    }

    // @@protoc_insertion_point(class_scope:audit.ArchiveAuditEventsBatchResponse)
    private static final com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse();
    }

    public static com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser<ArchiveAuditEventsBatchResponse>
        PARSER = new com.google.protobuf.AbstractParser<ArchiveAuditEventsBatchResponse>() {
      @java.lang.Override
      public ArchiveAuditEventsBatchResponse parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        Builder builder = newBuilder();
        try {
          builder.mergeFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          throw e.setUnfinishedMessage(builder.buildPartial());
        } catch (com.google.protobuf.UninitializedMessageException e) {
          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(builder.buildPartial());
        } catch (java.io.IOException e) {
          throw new com.google.protobuf.InvalidProtocolBufferException(e)
              .setUnfinishedMessage(builder.buildPartial());
        }
        return builder.buildPartial();
      }
    };

    public static com.google.protobuf.Parser<ArchiveAuditEventsBatchResponse> parser() {
      return PARSER;
    }

    @java.lang.Override
    public com.google.protobuf.Parser<ArchiveAuditEventsBatchResponse> getParserForType() {
      return PARSER;
    }

    @java.lang.Override
    public com.cloudera.thunderhead.service.audit.AuditProto.ArchiveAuditEventsBatchResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ArchivingConfigInfo_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ArchivingConfigInfo_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ConfigureArchivingRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ConfigureArchivingRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ConfigureArchivingResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ConfigureArchivingResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_GetArchivingConfigRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_GetArchivingConfigRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_GetArchivingConfigResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_GetArchivingConfigResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CreateAuditEventRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CreateAuditEventRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CreateAuditEventResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CreateAuditEventResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CreateAttemptAuditEventRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CreateAttemptAuditEventRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CreateAttemptAuditEventResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CreateAttemptAuditEventResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_UpdateAttemptAuditEventWithResultRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_UpdateAttemptAuditEventWithResultResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ListEventsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ListEventsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ListEventsResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ListEventsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_AuditEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_AuditEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ServiceEventData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ServiceEventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ApiRequestData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ApiRequestData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_InteractiveLoginEventData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_InteractiveLoginEventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_AttemptAuditEventResult_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_AttemptAuditEventResult_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ResultApiRequestData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ResultApiRequestData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ResultServiceEventData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ResultServiceEventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ResultInteractiveLoginEventData_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ResultInteractiveLoginEventData_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ApiRequestEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ApiRequestEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CdpServiceEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CdpServiceEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_InteractiveLoginEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_InteractiveLoginEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ActorIdentity_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ActorIdentity_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_CdpAuditEvent_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_CdpAuditEvent_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ArchiveAuditEventsRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ArchiveAuditEventsRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ArchiveAuditEventsResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ArchiveAuditEventsResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_audit_ArchiveAuditEventsBatchResponse_fieldAccessorTable;

  public static com.google.protobuf.Descriptors.FileDescriptor
      getDescriptor() {
    return descriptor;
  }
  private static  com.google.protobuf.Descriptors.FileDescriptor
      descriptor;
  static {
    java.lang.String[] descriptorData = {
      "\n\013audit.proto\022\005audit\032\roptions.proto\032\rver" +
      "sion.proto\"n\n\023ArchivingConfigInfo\022\027\n\017sto" +
      "rageLocation\030\001 \001(\t\022\026\n\016credentialName\030\002 \001" +
      "(\t\022\017\n\007enabled\030\003 \001(\010\022\025\n\rstorageRegion\030\004 \001" +
      "(\t\"\210\001\n\031ConfigureArchivingRequest\022\027\n\017stor" +
      "ageLocation\030\001 \001(\t\022\026\n\016credentialName\030\002 \001(" +
      "\t\022\017\n\007enabled\030\003 \001(\010\022\025\n\rstorageRegion\030\004 \001(" +
      "\t\022\022\n\nverifyOnly\030\005 \001(\010\"O\n\032ConfigureArchiv" +
      "ingResponse\0221\n\rconfiguration\030\001 \001(\0132\032.aud" +
      "it.ArchivingConfigInfo\"\033\n\031GetArchivingCo" +
      "nfigRequest\"O\n\032GetArchivingConfigRespons" +
      "e\0221\n\rconfiguration\030\001 \001(\0132\032.audit.Archivi" +
      "ngConfigInfo\"@\n\027CreateAuditEventRequest\022" +
      "%\n\nauditEvent\030\001 \001(\0132\021.audit.AuditEvent\"\032" +
      "\n\030CreateAuditEventResponse\"G\n\036CreateAtte" +
      "mptAuditEventRequest\022%\n\nauditEvent\030\001 \001(\013" +
      "2\021.audit.AuditEvent\"!\n\037CreateAttemptAudi" +
      "tEventResponse\"Z\n(UpdateAttemptAuditEven" +
      "tWithResultRequest\022.\n\006result\030\001 \001(\0132\036.aud" +
      "it.AttemptAuditEventResult\"+\n)UpdateAtte" +
      "mptAuditEventWithResultResponse\"\237\001\n\021List" +
      "EventsRequest\022\025\n\rfromTimestamp\030\001 \001(\003\022\023\n\013" +
      "toTimestamp\030\002 \001(\003\022\021\n\taccountId\030\003 \001(\t\022\020\n\010" +
      "pageSize\030\004 \001(\005\022\021\n\tpageToken\030\005 \001(\t\022\021\n\treq" +
      "uestId\030\006 \001(\t\022\023\n\013eventSource\030\007 \001(\t\"U\n\022Lis" +
      "tEventsResponse\022(\n\nauditEvent\030\001 \003(\0132\024.au" +
      "dit.CdpAuditEvent\022\025\n\rnextPageToken\030\002 \001(\t" +
      "\"\213\003\n\nAuditEvent\022\n\n\002id\030\001 \001(\t\022\021\n\ttimestamp" +
      "\030\002 \001(\003\022\021\n\taccountId\030\003 \001(\t\022\021\n\trequestId\030\005" +
      " \001(\t\022\021\n\teventName\030\006 \001(\t\022\027\n\017sourceIPAddre" +
      "ss\030\010 \001(\t\022\023\n\013eventSource\030\t \001(\t\022\022\n\010actorCr" +
      "n\030\004 \001(\tH\000\022\032\n\020actorServiceName\030\n \001(\tH\000\022/\n" +
      "\016apiRequestData\030\013 \001(\0132\025.audit.ApiRequest" +
      "DataH\001\0223\n\020serviceEventData\030\014 \001(\0132\027.audit" +
      ".ServiceEventDataH\001\022E\n\031interactiveLoginE" +
      "ventData\030\r \001(\0132 .audit.InteractiveLoginE" +
      "ventDataH\001B\007\n\005actorB\013\n\tEventTypeJ\004\010\007\020\010\"@" +
      "\n\020ServiceEventData\022\026\n\016detailsVersion\030\001 \001" +
      "(\t\022\024\n\014eventDetails\030\002 \001(\t\"d\n\016ApiRequestDa" +
      "ta\022\031\n\021requestParameters\030\001 \001(\t\022\020\n\010mutatin" +
      "g\030\002 \001(\010\022\022\n\napiVersion\030\003 \001(\t\022\021\n\tuserAgent" +
      "\030\004 \001(\t\"\334\001\n\031InteractiveLoginEventData\022\033\n\023" +
      "identityProviderCrn\030\001 \001(\t\022!\n\031identityPro" +
      "viderSessionId\030\002 \001(\t\022\036\n\026identityProvider" +
      "UserId\030\003 \001(\t\022\r\n\005email\030\004 \001(\t\022\021\n\tfirstName" +
      "\030\006 \001(\t\022\020\n\010lastName\030\007 \001(\t\022\016\n\006groups\030\010 \003(\t" +
      "\022\025\n\razureObjectId\030\t \001(\tJ\004\010\005\020\006\"\203\003\n\027Attemp" +
      "tAuditEventResult\022\n\n\002id\030\001 \001(\t\022\027\n\017resultT" +
      "imestamp\030\013 \001(\003\022\022\n\nresultCode\030\014 \001(\t\022\025\n\rre" +
      "sultMessage\030\016 \001(\t\022;\n\024resultApiRequestDat" +
      "a\030\017 \001(\0132\033.audit.ResultApiRequestDataH\000\022?" +
      "\n\026resultServiceEventData\030\020 \001(\0132\035.audit.R" +
      "esultServiceEventDataH\000\022Q\n\037resultInterac" +
      "tiveLoginEventData\030\021 \001(\0132&.audit.ResultI" +
      "nteractiveLoginEventDataH\000B\013\n\tEventTypeJ" +
      "\004\010\002\020\003J\004\010\003\020\004J\004\010\004\020\005J\004\010\005\020\006J\004\010\006\020\007J\004\010\007\020\010J\004\010\010\020" +
      "\tJ\004\010\t\020\nJ\004\010\n\020\013J\004\010\r\020\016\"2\n\024ResultApiRequestD" +
      "ata\022\032\n\022responseParameters\030\001 \001(\t\"D\n\026Resul" +
      "tServiceEventData\022\023\n\013resourceCrn\030\001 \003(\t\022\025" +
      "\n\rresultDetails\030\002 \001(\t\"H\n\037ResultInteracti" +
      "veLoginEventData\022\024\n\014accountAdmin\030\001 \001(\010\022\017" +
      "\n\007userCrn\030\002 \001(\t\"\240\001\n\017ApiRequestEvent\022\031\n\021r" +
      "equestParameters\030\001 \001(\t\022\032\n\022responseParame" +
      "ters\030\002 \001(\t\022\020\n\010mutating\030\003 \001(\010\022\022\n\napiVersi" +
      "on\030\004 \001(\t\022\027\n\017sourceIPAddress\030\005 \001(\t\022\021\n\tuse" +
      "rAgent\030\006 \001(\tJ\004\010\007\020\010\"e\n\017CdpServiceEvent\022%\n" +
      "\035additionalServiceEventDetails\030\001 \001(\t\022\023\n\013" +
      "resourceCrn\030\002 \003(\t\022\026\n\016detailsVersion\030\003 \001(" +
      "\t\"\373\001\n\025InteractiveLoginEvent\022\033\n\023identityP" +
      "roviderCrn\030\001 \001(\t\022!\n\031identityProviderSess" +
      "ionId\030\002 \001(\t\022\036\n\026identityProviderUserId\030\003 " +
      "\001(\t\022\r\n\005email\030\004 \001(\t\022\027\n\017sourceIPAddress\030\005 " +
      "\001(\t\022\021\n\tfirstName\030\006 \001(\t\022\020\n\010lastName\030\007 \001(\t" +
      "\022\024\n\014accountAdmin\030\010 \001(\010\022\016\n\006groups\030\t \003(\t\022\017" +
      "\n\007userCrn\030\n \001(\t\"L\n\rActorIdentity\022\022\n\010acto" +
      "rCrn\030\001 \001(\tH\000\022\032\n\020actorServiceName\030\002 \001(\tH\000" +
      "B\013\n\tactorType\"\260\003\n\rCdpAuditEvent\022\017\n\007versi" +
      "on\030\001 \001(\t\022\n\n\002id\030\002 \001(\t\022\023\n\013eventSource\030\003 \001(" +
      "\t\022\021\n\teventName\030\004 \001(\t\022\021\n\ttimestamp\030\005 \001(\003\022" +
      "+\n\ractorIdentity\030\006 \001(\0132\024.audit.ActorIden" +
      "tity\022\021\n\taccountId\030\007 \001(\t\022\021\n\trequestId\030\010 \001" +
      "(\t\022\022\n\nresultCode\030\t \001(\t\022\025\n\rresultMessage\030" +
      "\n \001(\t\0221\n\017apiRequestEvent\030\013 \001(\0132\026.audit.A" +
      "piRequestEventH\000\0221\n\017cdpServiceEvent\030\014 \001(" +
      "\0132\026.audit.CdpServiceEventH\000\022=\n\025interacti" +
      "veLoginEvent\030\r \001(\0132\034.audit.InteractiveLo" +
      "ginEventH\000\022\021\n\tarchiveId\030\016 \001(\tB\013\n\teventTy" +
      "peJ\004\010\017\020\020\"Z\n\031ArchiveAuditEventsRequest\022\025\n" +
      "\rfromTimestamp\030\001 \001(\003\022\023\n\013toTimestamp\030\002 \001(" +
      "\003\022\021\n\taccountId\030\003 \001(\t\"n\n\032ArchiveAuditEven" +
      "tsResponse\022\022\n\neventCount\030\001 \001(\003\022<\n\014eventB" +
      "atches\030\002 \003(\0132&.audit.ArchiveAuditEventsB" +
      "atchResponse\"u\n\037ArchiveAuditEventsBatchR" +
      "esponse\022\021\n\taccountId\030\001 \001(\t\022\022\n\neventCount" +
      "\030\002 \001(\003\022\021\n\tarchiveId\030\003 \001(\t\022\030\n\020archiveTime" +
      "stamp\030\004 \001(\0032\374\005\n\005Audit\022A\n\nGetVersion\022\027.ve" +
      "rsion.VersionRequest\032\030.version.VersionRe" +
      "sponse\"\000\022U\n\020CreateAuditEvent\022\036.audit.Cre" +
      "ateAuditEventRequest\032\037.audit.CreateAudit" +
      "EventResponse\"\000\022j\n\027CreateAttemptAuditEve" +
      "nt\022%.audit.CreateAttemptAuditEventReques" +
      "t\032&.audit.CreateAttemptAuditEventRespons" +
      "e\"\000\022\210\001\n!UpdateAttemptAuditEventWithResul" +
      "t\022/.audit.UpdateAttemptAuditEventWithRes" +
      "ultRequest\0320.audit.UpdateAttemptAuditEve" +
      "ntWithResultResponse\"\000\022K\n\nListEvents\022\030.a" +
      "udit.ListEventsRequest\032\031.audit.ListEvent" +
      "sResponse\"\010\220\246\035\001\230\246\035\024\022[\n\022ConfigureArchivin" +
      "g\022 .audit.ConfigureArchivingRequest\032!.au" +
      "dit.ConfigureArchivingResponse\"\000\022[\n\022GetA" +
      "rchivingConfig\022 .audit.GetArchivingConfi" +
      "gRequest\032!.audit.GetArchivingConfigRespo" +
      "nse\"\000\022[\n\022ArchiveAuditEvents\022 .audit.Arch" +
      "iveAuditEventsRequest\032!.audit.ArchiveAud" +
      "itEventsResponse\"\000B4\n&com.cloudera.thund" +
      "erhead.service.auditB\nAuditProtob\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          com.cloudera.thunderhead.service.common.options.Options.getDescriptor(),
          com.cloudera.thunderhead.service.common.version.Version.getDescriptor(),
        });
    internal_static_audit_ArchivingConfigInfo_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_audit_ArchivingConfigInfo_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ArchivingConfigInfo_descriptor,
        new java.lang.String[] { "StorageLocation", "CredentialName", "Enabled", "StorageRegion", });
    internal_static_audit_ConfigureArchivingRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_audit_ConfigureArchivingRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ConfigureArchivingRequest_descriptor,
        new java.lang.String[] { "StorageLocation", "CredentialName", "Enabled", "StorageRegion", "VerifyOnly", });
    internal_static_audit_ConfigureArchivingResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_audit_ConfigureArchivingResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ConfigureArchivingResponse_descriptor,
        new java.lang.String[] { "Configuration", });
    internal_static_audit_GetArchivingConfigRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_audit_GetArchivingConfigRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_GetArchivingConfigRequest_descriptor,
        new java.lang.String[] { });
    internal_static_audit_GetArchivingConfigResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_audit_GetArchivingConfigResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_GetArchivingConfigResponse_descriptor,
        new java.lang.String[] { "Configuration", });
    internal_static_audit_CreateAuditEventRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_audit_CreateAuditEventRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CreateAuditEventRequest_descriptor,
        new java.lang.String[] { "AuditEvent", });
    internal_static_audit_CreateAuditEventResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_audit_CreateAuditEventResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CreateAuditEventResponse_descriptor,
        new java.lang.String[] { });
    internal_static_audit_CreateAttemptAuditEventRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_audit_CreateAttemptAuditEventRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CreateAttemptAuditEventRequest_descriptor,
        new java.lang.String[] { "AuditEvent", });
    internal_static_audit_CreateAttemptAuditEventResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_audit_CreateAttemptAuditEventResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CreateAttemptAuditEventResponse_descriptor,
        new java.lang.String[] { });
    internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_audit_UpdateAttemptAuditEventWithResultRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_UpdateAttemptAuditEventWithResultRequest_descriptor,
        new java.lang.String[] { "Result", });
    internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_audit_UpdateAttemptAuditEventWithResultResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_UpdateAttemptAuditEventWithResultResponse_descriptor,
        new java.lang.String[] { });
    internal_static_audit_ListEventsRequest_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_audit_ListEventsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ListEventsRequest_descriptor,
        new java.lang.String[] { "FromTimestamp", "ToTimestamp", "AccountId", "PageSize", "PageToken", "RequestId", "EventSource", });
    internal_static_audit_ListEventsResponse_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_audit_ListEventsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ListEventsResponse_descriptor,
        new java.lang.String[] { "AuditEvent", "NextPageToken", });
    internal_static_audit_AuditEvent_descriptor =
      getDescriptor().getMessageTypes().get(13);
    internal_static_audit_AuditEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_AuditEvent_descriptor,
        new java.lang.String[] { "Id", "Timestamp", "AccountId", "RequestId", "EventName", "SourceIPAddress", "EventSource", "ActorCrn", "ActorServiceName", "ApiRequestData", "ServiceEventData", "InteractiveLoginEventData", "Actor", "EventType", });
    internal_static_audit_ServiceEventData_descriptor =
      getDescriptor().getMessageTypes().get(14);
    internal_static_audit_ServiceEventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ServiceEventData_descriptor,
        new java.lang.String[] { "DetailsVersion", "EventDetails", });
    internal_static_audit_ApiRequestData_descriptor =
      getDescriptor().getMessageTypes().get(15);
    internal_static_audit_ApiRequestData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ApiRequestData_descriptor,
        new java.lang.String[] { "RequestParameters", "Mutating", "ApiVersion", "UserAgent", });
    internal_static_audit_InteractiveLoginEventData_descriptor =
      getDescriptor().getMessageTypes().get(16);
    internal_static_audit_InteractiveLoginEventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_InteractiveLoginEventData_descriptor,
        new java.lang.String[] { "IdentityProviderCrn", "IdentityProviderSessionId", "IdentityProviderUserId", "Email", "FirstName", "LastName", "Groups", "AzureObjectId", });
    internal_static_audit_AttemptAuditEventResult_descriptor =
      getDescriptor().getMessageTypes().get(17);
    internal_static_audit_AttemptAuditEventResult_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_AttemptAuditEventResult_descriptor,
        new java.lang.String[] { "Id", "ResultTimestamp", "ResultCode", "ResultMessage", "ResultApiRequestData", "ResultServiceEventData", "ResultInteractiveLoginEventData", "EventType", });
    internal_static_audit_ResultApiRequestData_descriptor =
      getDescriptor().getMessageTypes().get(18);
    internal_static_audit_ResultApiRequestData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ResultApiRequestData_descriptor,
        new java.lang.String[] { "ResponseParameters", });
    internal_static_audit_ResultServiceEventData_descriptor =
      getDescriptor().getMessageTypes().get(19);
    internal_static_audit_ResultServiceEventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ResultServiceEventData_descriptor,
        new java.lang.String[] { "ResourceCrn", "ResultDetails", });
    internal_static_audit_ResultInteractiveLoginEventData_descriptor =
      getDescriptor().getMessageTypes().get(20);
    internal_static_audit_ResultInteractiveLoginEventData_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ResultInteractiveLoginEventData_descriptor,
        new java.lang.String[] { "AccountAdmin", "UserCrn", });
    internal_static_audit_ApiRequestEvent_descriptor =
      getDescriptor().getMessageTypes().get(21);
    internal_static_audit_ApiRequestEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ApiRequestEvent_descriptor,
        new java.lang.String[] { "RequestParameters", "ResponseParameters", "Mutating", "ApiVersion", "SourceIPAddress", "UserAgent", });
    internal_static_audit_CdpServiceEvent_descriptor =
      getDescriptor().getMessageTypes().get(22);
    internal_static_audit_CdpServiceEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CdpServiceEvent_descriptor,
        new java.lang.String[] { "AdditionalServiceEventDetails", "ResourceCrn", "DetailsVersion", });
    internal_static_audit_InteractiveLoginEvent_descriptor =
      getDescriptor().getMessageTypes().get(23);
    internal_static_audit_InteractiveLoginEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_InteractiveLoginEvent_descriptor,
        new java.lang.String[] { "IdentityProviderCrn", "IdentityProviderSessionId", "IdentityProviderUserId", "Email", "SourceIPAddress", "FirstName", "LastName", "AccountAdmin", "Groups", "UserCrn", });
    internal_static_audit_ActorIdentity_descriptor =
      getDescriptor().getMessageTypes().get(24);
    internal_static_audit_ActorIdentity_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ActorIdentity_descriptor,
        new java.lang.String[] { "ActorCrn", "ActorServiceName", "ActorType", });
    internal_static_audit_CdpAuditEvent_descriptor =
      getDescriptor().getMessageTypes().get(25);
    internal_static_audit_CdpAuditEvent_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_CdpAuditEvent_descriptor,
        new java.lang.String[] { "Version", "Id", "EventSource", "EventName", "Timestamp", "ActorIdentity", "AccountId", "RequestId", "ResultCode", "ResultMessage", "ApiRequestEvent", "CdpServiceEvent", "InteractiveLoginEvent", "ArchiveId", "EventType", });
    internal_static_audit_ArchiveAuditEventsRequest_descriptor =
      getDescriptor().getMessageTypes().get(26);
    internal_static_audit_ArchiveAuditEventsRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ArchiveAuditEventsRequest_descriptor,
        new java.lang.String[] { "FromTimestamp", "ToTimestamp", "AccountId", });
    internal_static_audit_ArchiveAuditEventsResponse_descriptor =
      getDescriptor().getMessageTypes().get(27);
    internal_static_audit_ArchiveAuditEventsResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ArchiveAuditEventsResponse_descriptor,
        new java.lang.String[] { "EventCount", "EventBatches", });
    internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor =
      getDescriptor().getMessageTypes().get(28);
    internal_static_audit_ArchiveAuditEventsBatchResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_audit_ArchiveAuditEventsBatchResponse_descriptor,
        new java.lang.String[] { "AccountId", "EventCount", "ArchiveId", "ArchiveTimestamp", });
    com.google.protobuf.ExtensionRegistry registry =
        com.google.protobuf.ExtensionRegistry.newInstance();
    registry.add(com.cloudera.thunderhead.service.common.options.Options.MethodExtension.paginates);
    registry.add(com.cloudera.thunderhead.service.common.options.Options.MethodExtension.pagingDefaultMaxItems);
    com.google.protobuf.Descriptors.FileDescriptor
        .internalUpdateFileDescriptor(descriptor, registry);
    com.cloudera.thunderhead.service.common.options.Options.getDescriptor();
    com.cloudera.thunderhead.service.common.version.Version.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
