All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage Maven / Gradle / Ivy

Go to download

In fact that kotlin does not support Protobuf well - protos was moved to separate module to get all to work.

The newest version!
// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: purekitV3_storage.proto

package com.virgilsecurity.purekit.protobuf.build;

public final class PurekitProtosV3Storage {
  private PurekitProtosV3Storage() {}
  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 UserRecordSignedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.UserRecordSigned)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * string user_id = 2;
     */
    java.lang.String getUserId();
    /**
     * string user_id = 2;
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    /**
     * bytes phe_record_ns = 3;
     */
    com.google.protobuf.ByteString getPheRecordNs();

    /**
     * bytes phe_record_nc = 4;
     */
    com.google.protobuf.ByteString getPheRecordNc();

    /**
     * bytes upk = 5;
     */
    com.google.protobuf.ByteString getUpk();

    /**
     * bytes encrypted_usk = 6;
     */
    com.google.protobuf.ByteString getEncryptedUsk();

    /**
     * bytes encrypted_usk_backup = 7;
     */
    com.google.protobuf.ByteString getEncryptedUskBackup();

    /**
     * bytes backup_pwd_hash = 8;
     */
    com.google.protobuf.ByteString getBackupPwdHash();

    /**
     * bytes password_recovery_blob = 9;
     */
    com.google.protobuf.ByteString getPasswordRecoveryBlob();
  }
  /**
   * Protobuf type {@code build.UserRecordSigned}
   */
  public  static final class UserRecordSigned extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.UserRecordSigned)
      UserRecordSignedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserRecordSigned.newBuilder() to construct.
    private UserRecordSigned(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private UserRecordSigned() {
      userId_ = "";
      pheRecordNs_ = com.google.protobuf.ByteString.EMPTY;
      pheRecordNc_ = com.google.protobuf.ByteString.EMPTY;
      upk_ = com.google.protobuf.ByteString.EMPTY;
      encryptedUsk_ = com.google.protobuf.ByteString.EMPTY;
      encryptedUskBackup_ = com.google.protobuf.ByteString.EMPTY;
      backupPwdHash_ = com.google.protobuf.ByteString.EMPTY;
      passwordRecoveryBlob_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UserRecordSigned(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              userId_ = s;
              break;
            }
            case 26: {

              pheRecordNs_ = input.readBytes();
              break;
            }
            case 34: {

              pheRecordNc_ = input.readBytes();
              break;
            }
            case 42: {

              upk_ = input.readBytes();
              break;
            }
            case 50: {

              encryptedUsk_ = input.readBytes();
              break;
            }
            case 58: {

              encryptedUskBackup_ = input.readBytes();
              break;
            }
            case 66: {

              backupPwdHash_ = input.readBytes();
              break;
            }
            case 74: {

              passwordRecoveryBlob_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecordSigned_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecordSigned_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object userId_;
    /**
     * string user_id = 2;
     */
    public java.lang.String getUserId() {
      java.lang.Object ref = userId_;
      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();
        userId_ = s;
        return s;
      }
    }
    /**
     * string user_id = 2;
     */
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PHE_RECORD_NS_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString pheRecordNs_;
    /**
     * bytes phe_record_ns = 3;
     */
    public com.google.protobuf.ByteString getPheRecordNs() {
      return pheRecordNs_;
    }

    public static final int PHE_RECORD_NC_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString pheRecordNc_;
    /**
     * bytes phe_record_nc = 4;
     */
    public com.google.protobuf.ByteString getPheRecordNc() {
      return pheRecordNc_;
    }

    public static final int UPK_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString upk_;
    /**
     * bytes upk = 5;
     */
    public com.google.protobuf.ByteString getUpk() {
      return upk_;
    }

    public static final int ENCRYPTED_USK_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString encryptedUsk_;
    /**
     * bytes encrypted_usk = 6;
     */
    public com.google.protobuf.ByteString getEncryptedUsk() {
      return encryptedUsk_;
    }

    public static final int ENCRYPTED_USK_BACKUP_FIELD_NUMBER = 7;
    private com.google.protobuf.ByteString encryptedUskBackup_;
    /**
     * bytes encrypted_usk_backup = 7;
     */
    public com.google.protobuf.ByteString getEncryptedUskBackup() {
      return encryptedUskBackup_;
    }

    public static final int BACKUP_PWD_HASH_FIELD_NUMBER = 8;
    private com.google.protobuf.ByteString backupPwdHash_;
    /**
     * bytes backup_pwd_hash = 8;
     */
    public com.google.protobuf.ByteString getBackupPwdHash() {
      return backupPwdHash_;
    }

    public static final int PASSWORD_RECOVERY_BLOB_FIELD_NUMBER = 9;
    private com.google.protobuf.ByteString passwordRecoveryBlob_;
    /**
     * bytes password_recovery_blob = 9;
     */
    public com.google.protobuf.ByteString getPasswordRecoveryBlob() {
      return passwordRecoveryBlob_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userId_);
      }
      if (!pheRecordNs_.isEmpty()) {
        output.writeBytes(3, pheRecordNs_);
      }
      if (!pheRecordNc_.isEmpty()) {
        output.writeBytes(4, pheRecordNc_);
      }
      if (!upk_.isEmpty()) {
        output.writeBytes(5, upk_);
      }
      if (!encryptedUsk_.isEmpty()) {
        output.writeBytes(6, encryptedUsk_);
      }
      if (!encryptedUskBackup_.isEmpty()) {
        output.writeBytes(7, encryptedUskBackup_);
      }
      if (!backupPwdHash_.isEmpty()) {
        output.writeBytes(8, backupPwdHash_);
      }
      if (!passwordRecoveryBlob_.isEmpty()) {
        output.writeBytes(9, passwordRecoveryBlob_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, userId_);
      }
      if (!pheRecordNs_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, pheRecordNs_);
      }
      if (!pheRecordNc_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, pheRecordNc_);
      }
      if (!upk_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, upk_);
      }
      if (!encryptedUsk_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, encryptedUsk_);
      }
      if (!encryptedUskBackup_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, encryptedUskBackup_);
      }
      if (!backupPwdHash_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(8, backupPwdHash_);
      }
      if (!passwordRecoveryBlob_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(9, passwordRecoveryBlob_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getUserId()
          .equals(other.getUserId())) return false;
      if (!getPheRecordNs()
          .equals(other.getPheRecordNs())) return false;
      if (!getPheRecordNc()
          .equals(other.getPheRecordNc())) return false;
      if (!getUpk()
          .equals(other.getUpk())) return false;
      if (!getEncryptedUsk()
          .equals(other.getEncryptedUsk())) return false;
      if (!getEncryptedUskBackup()
          .equals(other.getEncryptedUskBackup())) return false;
      if (!getBackupPwdHash()
          .equals(other.getBackupPwdHash())) return false;
      if (!getPasswordRecoveryBlob()
          .equals(other.getPasswordRecoveryBlob())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId().hashCode();
      hash = (37 * hash) + PHE_RECORD_NS_FIELD_NUMBER;
      hash = (53 * hash) + getPheRecordNs().hashCode();
      hash = (37 * hash) + PHE_RECORD_NC_FIELD_NUMBER;
      hash = (53 * hash) + getPheRecordNc().hashCode();
      hash = (37 * hash) + UPK_FIELD_NUMBER;
      hash = (53 * hash) + getUpk().hashCode();
      hash = (37 * hash) + ENCRYPTED_USK_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedUsk().hashCode();
      hash = (37 * hash) + ENCRYPTED_USK_BACKUP_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedUskBackup().hashCode();
      hash = (37 * hash) + BACKUP_PWD_HASH_FIELD_NUMBER;
      hash = (53 * hash) + getBackupPwdHash().hashCode();
      hash = (37 * hash) + PASSWORD_RECOVERY_BLOB_FIELD_NUMBER;
      hash = (53 * hash) + getPasswordRecoveryBlob().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned 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;
    }
    /**
     * Protobuf type {@code build.UserRecordSigned}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.UserRecordSigned)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSignedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecordSigned_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecordSigned_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        userId_ = "";

        pheRecordNs_ = com.google.protobuf.ByteString.EMPTY;

        pheRecordNc_ = com.google.protobuf.ByteString.EMPTY;

        upk_ = com.google.protobuf.ByteString.EMPTY;

        encryptedUsk_ = com.google.protobuf.ByteString.EMPTY;

        encryptedUskBackup_ = com.google.protobuf.ByteString.EMPTY;

        backupPwdHash_ = com.google.protobuf.ByteString.EMPTY;

        passwordRecoveryBlob_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecordSigned_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned(this);
        result.version_ = version_;
        result.userId_ = userId_;
        result.pheRecordNs_ = pheRecordNs_;
        result.pheRecordNc_ = pheRecordNc_;
        result.upk_ = upk_;
        result.encryptedUsk_ = encryptedUsk_;
        result.encryptedUskBackup_ = encryptedUskBackup_;
        result.backupPwdHash_ = backupPwdHash_;
        result.passwordRecoveryBlob_ = passwordRecoveryBlob_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (!other.getUserId().isEmpty()) {
          userId_ = other.userId_;
          onChanged();
        }
        if (other.getPheRecordNs() != com.google.protobuf.ByteString.EMPTY) {
          setPheRecordNs(other.getPheRecordNs());
        }
        if (other.getPheRecordNc() != com.google.protobuf.ByteString.EMPTY) {
          setPheRecordNc(other.getPheRecordNc());
        }
        if (other.getUpk() != com.google.protobuf.ByteString.EMPTY) {
          setUpk(other.getUpk());
        }
        if (other.getEncryptedUsk() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedUsk(other.getEncryptedUsk());
        }
        if (other.getEncryptedUskBackup() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedUskBackup(other.getEncryptedUskBackup());
        }
        if (other.getBackupPwdHash() != com.google.protobuf.ByteString.EMPTY) {
          setBackupPwdHash(other.getBackupPwdHash());
        }
        if (other.getPasswordRecoveryBlob() != com.google.protobuf.ByteString.EMPTY) {
          setPasswordRecoveryBlob(other.getPasswordRecoveryBlob());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object userId_ = "";
      /**
       * string user_id = 2;
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder clearUserId() {
        
        userId_ = getDefaultInstance().getUserId();
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString pheRecordNs_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes phe_record_ns = 3;
       */
      public com.google.protobuf.ByteString getPheRecordNs() {
        return pheRecordNs_;
      }
      /**
       * bytes phe_record_ns = 3;
       */
      public Builder setPheRecordNs(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pheRecordNs_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes phe_record_ns = 3;
       */
      public Builder clearPheRecordNs() {
        
        pheRecordNs_ = getDefaultInstance().getPheRecordNs();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString pheRecordNc_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes phe_record_nc = 4;
       */
      public com.google.protobuf.ByteString getPheRecordNc() {
        return pheRecordNc_;
      }
      /**
       * bytes phe_record_nc = 4;
       */
      public Builder setPheRecordNc(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pheRecordNc_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes phe_record_nc = 4;
       */
      public Builder clearPheRecordNc() {
        
        pheRecordNc_ = getDefaultInstance().getPheRecordNc();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString upk_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes upk = 5;
       */
      public com.google.protobuf.ByteString getUpk() {
        return upk_;
      }
      /**
       * bytes upk = 5;
       */
      public Builder setUpk(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        upk_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes upk = 5;
       */
      public Builder clearUpk() {
        
        upk_ = getDefaultInstance().getUpk();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedUsk_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_usk = 6;
       */
      public com.google.protobuf.ByteString getEncryptedUsk() {
        return encryptedUsk_;
      }
      /**
       * bytes encrypted_usk = 6;
       */
      public Builder setEncryptedUsk(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedUsk_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_usk = 6;
       */
      public Builder clearEncryptedUsk() {
        
        encryptedUsk_ = getDefaultInstance().getEncryptedUsk();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedUskBackup_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_usk_backup = 7;
       */
      public com.google.protobuf.ByteString getEncryptedUskBackup() {
        return encryptedUskBackup_;
      }
      /**
       * bytes encrypted_usk_backup = 7;
       */
      public Builder setEncryptedUskBackup(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedUskBackup_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_usk_backup = 7;
       */
      public Builder clearEncryptedUskBackup() {
        
        encryptedUskBackup_ = getDefaultInstance().getEncryptedUskBackup();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString backupPwdHash_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes backup_pwd_hash = 8;
       */
      public com.google.protobuf.ByteString getBackupPwdHash() {
        return backupPwdHash_;
      }
      /**
       * bytes backup_pwd_hash = 8;
       */
      public Builder setBackupPwdHash(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        backupPwdHash_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes backup_pwd_hash = 8;
       */
      public Builder clearBackupPwdHash() {
        
        backupPwdHash_ = getDefaultInstance().getBackupPwdHash();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString passwordRecoveryBlob_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes password_recovery_blob = 9;
       */
      public com.google.protobuf.ByteString getPasswordRecoveryBlob() {
        return passwordRecoveryBlob_;
      }
      /**
       * bytes password_recovery_blob = 9;
       */
      public Builder setPasswordRecoveryBlob(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        passwordRecoveryBlob_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes password_recovery_blob = 9;
       */
      public Builder clearPasswordRecoveryBlob() {
        
        passwordRecoveryBlob_ = getDefaultInstance().getPasswordRecoveryBlob();
        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:build.UserRecordSigned)
    }

    // @@protoc_insertion_point(class_scope:build.UserRecordSigned)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UserRecordSigned parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserRecordSigned(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordSigned getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UserRecordOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.UserRecord)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * bytes user_record_signed = 2;
     */
    com.google.protobuf.ByteString getUserRecordSigned();

    /**
     * bytes signature = 3;
     */
    com.google.protobuf.ByteString getSignature();

    /**
     * bytes phe_record_t0 = 4;
     */
    com.google.protobuf.ByteString getPheRecordT0();

    /**
     * bytes phe_record_t1 = 5;
     */
    com.google.protobuf.ByteString getPheRecordT1();

    /**
     * uint32 record_version = 6;
     */
    int getRecordVersion();

    /**
     * bytes password_recovery_wrap = 7;
     */
    com.google.protobuf.ByteString getPasswordRecoveryWrap();
  }
  /**
   * Protobuf type {@code build.UserRecord}
   */
  public  static final class UserRecord extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.UserRecord)
      UserRecordOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserRecord.newBuilder() to construct.
    private UserRecord(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private UserRecord() {
      userRecordSigned_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
      pheRecordT0_ = com.google.protobuf.ByteString.EMPTY;
      pheRecordT1_ = com.google.protobuf.ByteString.EMPTY;
      passwordRecoveryWrap_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UserRecord(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {

              userRecordSigned_ = input.readBytes();
              break;
            }
            case 26: {

              signature_ = input.readBytes();
              break;
            }
            case 34: {

              pheRecordT0_ = input.readBytes();
              break;
            }
            case 42: {

              pheRecordT1_ = input.readBytes();
              break;
            }
            case 48: {

              recordVersion_ = input.readUInt32();
              break;
            }
            case 58: {

              passwordRecoveryWrap_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecord_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecord_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int USER_RECORD_SIGNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString userRecordSigned_;
    /**
     * bytes user_record_signed = 2;
     */
    public com.google.protobuf.ByteString getUserRecordSigned() {
      return userRecordSigned_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString signature_;
    /**
     * bytes signature = 3;
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    public static final int PHE_RECORD_T0_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString pheRecordT0_;
    /**
     * bytes phe_record_t0 = 4;
     */
    public com.google.protobuf.ByteString getPheRecordT0() {
      return pheRecordT0_;
    }

    public static final int PHE_RECORD_T1_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString pheRecordT1_;
    /**
     * bytes phe_record_t1 = 5;
     */
    public com.google.protobuf.ByteString getPheRecordT1() {
      return pheRecordT1_;
    }

    public static final int RECORD_VERSION_FIELD_NUMBER = 6;
    private int recordVersion_;
    /**
     * uint32 record_version = 6;
     */
    public int getRecordVersion() {
      return recordVersion_;
    }

    public static final int PASSWORD_RECOVERY_WRAP_FIELD_NUMBER = 7;
    private com.google.protobuf.ByteString passwordRecoveryWrap_;
    /**
     * bytes password_recovery_wrap = 7;
     */
    public com.google.protobuf.ByteString getPasswordRecoveryWrap() {
      return passwordRecoveryWrap_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!userRecordSigned_.isEmpty()) {
        output.writeBytes(2, userRecordSigned_);
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(3, signature_);
      }
      if (!pheRecordT0_.isEmpty()) {
        output.writeBytes(4, pheRecordT0_);
      }
      if (!pheRecordT1_.isEmpty()) {
        output.writeBytes(5, pheRecordT1_);
      }
      if (recordVersion_ != 0) {
        output.writeUInt32(6, recordVersion_);
      }
      if (!passwordRecoveryWrap_.isEmpty()) {
        output.writeBytes(7, passwordRecoveryWrap_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!userRecordSigned_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, userRecordSigned_);
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, signature_);
      }
      if (!pheRecordT0_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, pheRecordT0_);
      }
      if (!pheRecordT1_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, pheRecordT1_);
      }
      if (recordVersion_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(6, recordVersion_);
      }
      if (!passwordRecoveryWrap_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(7, passwordRecoveryWrap_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getUserRecordSigned()
          .equals(other.getUserRecordSigned())) return false;
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (!getPheRecordT0()
          .equals(other.getPheRecordT0())) return false;
      if (!getPheRecordT1()
          .equals(other.getPheRecordT1())) return false;
      if (getRecordVersion()
          != other.getRecordVersion()) return false;
      if (!getPasswordRecoveryWrap()
          .equals(other.getPasswordRecoveryWrap())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + USER_RECORD_SIGNED_FIELD_NUMBER;
      hash = (53 * hash) + getUserRecordSigned().hashCode();
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (37 * hash) + PHE_RECORD_T0_FIELD_NUMBER;
      hash = (53 * hash) + getPheRecordT0().hashCode();
      hash = (37 * hash) + PHE_RECORD_T1_FIELD_NUMBER;
      hash = (53 * hash) + getPheRecordT1().hashCode();
      hash = (37 * hash) + RECORD_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getRecordVersion();
      hash = (37 * hash) + PASSWORD_RECOVERY_WRAP_FIELD_NUMBER;
      hash = (53 * hash) + getPasswordRecoveryWrap().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord 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;
    }
    /**
     * Protobuf type {@code build.UserRecord}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.UserRecord)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecord_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecord_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        userRecordSigned_ = com.google.protobuf.ByteString.EMPTY;

        signature_ = com.google.protobuf.ByteString.EMPTY;

        pheRecordT0_ = com.google.protobuf.ByteString.EMPTY;

        pheRecordT1_ = com.google.protobuf.ByteString.EMPTY;

        recordVersion_ = 0;

        passwordRecoveryWrap_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecord_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord(this);
        result.version_ = version_;
        result.userRecordSigned_ = userRecordSigned_;
        result.signature_ = signature_;
        result.pheRecordT0_ = pheRecordT0_;
        result.pheRecordT1_ = pheRecordT1_;
        result.recordVersion_ = recordVersion_;
        result.passwordRecoveryWrap_ = passwordRecoveryWrap_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getUserRecordSigned() != com.google.protobuf.ByteString.EMPTY) {
          setUserRecordSigned(other.getUserRecordSigned());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        if (other.getPheRecordT0() != com.google.protobuf.ByteString.EMPTY) {
          setPheRecordT0(other.getPheRecordT0());
        }
        if (other.getPheRecordT1() != com.google.protobuf.ByteString.EMPTY) {
          setPheRecordT1(other.getPheRecordT1());
        }
        if (other.getRecordVersion() != 0) {
          setRecordVersion(other.getRecordVersion());
        }
        if (other.getPasswordRecoveryWrap() != com.google.protobuf.ByteString.EMPTY) {
          setPasswordRecoveryWrap(other.getPasswordRecoveryWrap());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString userRecordSigned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes user_record_signed = 2;
       */
      public com.google.protobuf.ByteString getUserRecordSigned() {
        return userRecordSigned_;
      }
      /**
       * bytes user_record_signed = 2;
       */
      public Builder setUserRecordSigned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userRecordSigned_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes user_record_signed = 2;
       */
      public Builder clearUserRecordSigned() {
        
        userRecordSigned_ = getDefaultInstance().getUserRecordSigned();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 3;
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 3;
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 3;
       */
      public Builder clearSignature() {
        
        signature_ = getDefaultInstance().getSignature();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString pheRecordT0_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes phe_record_t0 = 4;
       */
      public com.google.protobuf.ByteString getPheRecordT0() {
        return pheRecordT0_;
      }
      /**
       * bytes phe_record_t0 = 4;
       */
      public Builder setPheRecordT0(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pheRecordT0_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes phe_record_t0 = 4;
       */
      public Builder clearPheRecordT0() {
        
        pheRecordT0_ = getDefaultInstance().getPheRecordT0();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString pheRecordT1_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes phe_record_t1 = 5;
       */
      public com.google.protobuf.ByteString getPheRecordT1() {
        return pheRecordT1_;
      }
      /**
       * bytes phe_record_t1 = 5;
       */
      public Builder setPheRecordT1(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        pheRecordT1_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes phe_record_t1 = 5;
       */
      public Builder clearPheRecordT1() {
        
        pheRecordT1_ = getDefaultInstance().getPheRecordT1();
        onChanged();
        return this;
      }

      private int recordVersion_ ;
      /**
       * uint32 record_version = 6;
       */
      public int getRecordVersion() {
        return recordVersion_;
      }
      /**
       * uint32 record_version = 6;
       */
      public Builder setRecordVersion(int value) {
        
        recordVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 record_version = 6;
       */
      public Builder clearRecordVersion() {
        
        recordVersion_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString passwordRecoveryWrap_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes password_recovery_wrap = 7;
       */
      public com.google.protobuf.ByteString getPasswordRecoveryWrap() {
        return passwordRecoveryWrap_;
      }
      /**
       * bytes password_recovery_wrap = 7;
       */
      public Builder setPasswordRecoveryWrap(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        passwordRecoveryWrap_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes password_recovery_wrap = 7;
       */
      public Builder clearPasswordRecoveryWrap() {
        
        passwordRecoveryWrap_ = getDefaultInstance().getPasswordRecoveryWrap();
        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:build.UserRecord)
    }

    // @@protoc_insertion_point(class_scope:build.UserRecord)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UserRecord parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserRecord(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface UserRecordsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.UserRecords)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .build.UserRecord user_records = 1;
     */
    java.util.List 
        getUserRecordsList();
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getUserRecords(int index);
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    int getUserRecordsCount();
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    java.util.List 
        getUserRecordsOrBuilderList();
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder getUserRecordsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code build.UserRecords}
   */
  public  static final class UserRecords extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.UserRecords)
      UserRecordsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use UserRecords.newBuilder() to construct.
    private UserRecords(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private UserRecords() {
      userRecords_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private UserRecords(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                userRecords_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              userRecords_.add(
                  input.readMessage(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          userRecords_ = java.util.Collections.unmodifiableList(userRecords_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecords_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecords_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.Builder.class);
    }

    public static final int USER_RECORDS_FIELD_NUMBER = 1;
    private java.util.List userRecords_;
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    public java.util.List getUserRecordsList() {
      return userRecords_;
    }
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    public java.util.List 
        getUserRecordsOrBuilderList() {
      return userRecords_;
    }
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    public int getUserRecordsCount() {
      return userRecords_.size();
    }
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getUserRecords(int index) {
      return userRecords_.get(index);
    }
    /**
     * repeated .build.UserRecord user_records = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder getUserRecordsOrBuilder(
        int index) {
      return userRecords_.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 {
      for (int i = 0; i < userRecords_.size(); i++) {
        output.writeMessage(1, userRecords_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < userRecords_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, userRecords_.get(i));
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getUserRecordsCount() > 0) {
        hash = (37 * hash) + USER_RECORDS_FIELD_NUMBER;
        hash = (53 * hash) + getUserRecordsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords 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;
    }
    /**
     * Protobuf type {@code build.UserRecords}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.UserRecords)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecords_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecords_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getUserRecordsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (userRecordsBuilder_ == null) {
          userRecords_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          userRecordsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_UserRecords_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords(this);
        int from_bitField0_ = bitField0_;
        if (userRecordsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            userRecords_ = java.util.Collections.unmodifiableList(userRecords_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.userRecords_ = userRecords_;
        } else {
          result.userRecords_ = userRecordsBuilder_.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords.getDefaultInstance()) return this;
        if (userRecordsBuilder_ == null) {
          if (!other.userRecords_.isEmpty()) {
            if (userRecords_.isEmpty()) {
              userRecords_ = other.userRecords_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureUserRecordsIsMutable();
              userRecords_.addAll(other.userRecords_);
            }
            onChanged();
          }
        } else {
          if (!other.userRecords_.isEmpty()) {
            if (userRecordsBuilder_.isEmpty()) {
              userRecordsBuilder_.dispose();
              userRecordsBuilder_ = null;
              userRecords_ = other.userRecords_;
              bitField0_ = (bitField0_ & ~0x00000001);
              userRecordsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getUserRecordsFieldBuilder() : null;
            } else {
              userRecordsBuilder_.addAllMessages(other.userRecords_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List userRecords_ =
        java.util.Collections.emptyList();
      private void ensureUserRecordsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          userRecords_ = new java.util.ArrayList(userRecords_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder> userRecordsBuilder_;

      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public java.util.List getUserRecordsList() {
        if (userRecordsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(userRecords_);
        } else {
          return userRecordsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public int getUserRecordsCount() {
        if (userRecordsBuilder_ == null) {
          return userRecords_.size();
        } else {
          return userRecordsBuilder_.getCount();
        }
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord getUserRecords(int index) {
        if (userRecordsBuilder_ == null) {
          return userRecords_.get(index);
        } else {
          return userRecordsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder setUserRecords(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord value) {
        if (userRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserRecordsIsMutable();
          userRecords_.set(index, value);
          onChanged();
        } else {
          userRecordsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder setUserRecords(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder builderForValue) {
        if (userRecordsBuilder_ == null) {
          ensureUserRecordsIsMutable();
          userRecords_.set(index, builderForValue.build());
          onChanged();
        } else {
          userRecordsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder addUserRecords(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord value) {
        if (userRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserRecordsIsMutable();
          userRecords_.add(value);
          onChanged();
        } else {
          userRecordsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder addUserRecords(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord value) {
        if (userRecordsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureUserRecordsIsMutable();
          userRecords_.add(index, value);
          onChanged();
        } else {
          userRecordsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder addUserRecords(
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder builderForValue) {
        if (userRecordsBuilder_ == null) {
          ensureUserRecordsIsMutable();
          userRecords_.add(builderForValue.build());
          onChanged();
        } else {
          userRecordsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder addUserRecords(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder builderForValue) {
        if (userRecordsBuilder_ == null) {
          ensureUserRecordsIsMutable();
          userRecords_.add(index, builderForValue.build());
          onChanged();
        } else {
          userRecordsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder addAllUserRecords(
          java.lang.Iterable values) {
        if (userRecordsBuilder_ == null) {
          ensureUserRecordsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, userRecords_);
          onChanged();
        } else {
          userRecordsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder clearUserRecords() {
        if (userRecordsBuilder_ == null) {
          userRecords_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          userRecordsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public Builder removeUserRecords(int index) {
        if (userRecordsBuilder_ == null) {
          ensureUserRecordsIsMutable();
          userRecords_.remove(index);
          onChanged();
        } else {
          userRecordsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder getUserRecordsBuilder(
          int index) {
        return getUserRecordsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder getUserRecordsOrBuilder(
          int index) {
        if (userRecordsBuilder_ == null) {
          return userRecords_.get(index);  } else {
          return userRecordsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public java.util.List 
           getUserRecordsOrBuilderList() {
        if (userRecordsBuilder_ != null) {
          return userRecordsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(userRecords_);
        }
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder addUserRecordsBuilder() {
        return getUserRecordsFieldBuilder().addBuilder(
            com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.getDefaultInstance());
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder addUserRecordsBuilder(
          int index) {
        return getUserRecordsFieldBuilder().addBuilder(
            index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.getDefaultInstance());
      }
      /**
       * repeated .build.UserRecord user_records = 1;
       */
      public java.util.List 
           getUserRecordsBuilderList() {
        return getUserRecordsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder> 
          getUserRecordsFieldBuilder() {
        if (userRecordsBuilder_ == null) {
          userRecordsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecord.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecordOrBuilder>(
                  userRecords_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          userRecords_ = null;
        }
        return userRecordsBuilder_;
      }
      @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:build.UserRecords)
    }

    // @@protoc_insertion_point(class_scope:build.UserRecords)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public UserRecords parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new UserRecords(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.UserRecords getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CellKeySignedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.CellKeySigned)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * string user_id = 2;
     */
    java.lang.String getUserId();
    /**
     * string user_id = 2;
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    /**
     * string data_id = 3;
     */
    java.lang.String getDataId();
    /**
     * string data_id = 3;
     */
    com.google.protobuf.ByteString
        getDataIdBytes();

    /**
     * bytes cpk = 4;
     */
    com.google.protobuf.ByteString getCpk();

    /**
     * bytes encrypted_csk_cms = 5;
     */
    com.google.protobuf.ByteString getEncryptedCskCms();

    /**
     * bytes encrypted_csk_body = 6;
     */
    com.google.protobuf.ByteString getEncryptedCskBody();
  }
  /**
   * Protobuf type {@code build.CellKeySigned}
   */
  public  static final class CellKeySigned extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.CellKeySigned)
      CellKeySignedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CellKeySigned.newBuilder() to construct.
    private CellKeySigned(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CellKeySigned() {
      userId_ = "";
      dataId_ = "";
      cpk_ = com.google.protobuf.ByteString.EMPTY;
      encryptedCskCms_ = com.google.protobuf.ByteString.EMPTY;
      encryptedCskBody_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CellKeySigned(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              userId_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              dataId_ = s;
              break;
            }
            case 34: {

              cpk_ = input.readBytes();
              break;
            }
            case 42: {

              encryptedCskCms_ = input.readBytes();
              break;
            }
            case 50: {

              encryptedCskBody_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKeySigned_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKeySigned_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object userId_;
    /**
     * string user_id = 2;
     */
    public java.lang.String getUserId() {
      java.lang.Object ref = userId_;
      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();
        userId_ = s;
        return s;
      }
    }
    /**
     * string user_id = 2;
     */
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int DATA_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object dataId_;
    /**
     * string data_id = 3;
     */
    public java.lang.String getDataId() {
      java.lang.Object ref = dataId_;
      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();
        dataId_ = s;
        return s;
      }
    }
    /**
     * string data_id = 3;
     */
    public com.google.protobuf.ByteString
        getDataIdBytes() {
      java.lang.Object ref = dataId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        dataId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CPK_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString cpk_;
    /**
     * bytes cpk = 4;
     */
    public com.google.protobuf.ByteString getCpk() {
      return cpk_;
    }

    public static final int ENCRYPTED_CSK_CMS_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString encryptedCskCms_;
    /**
     * bytes encrypted_csk_cms = 5;
     */
    public com.google.protobuf.ByteString getEncryptedCskCms() {
      return encryptedCskCms_;
    }

    public static final int ENCRYPTED_CSK_BODY_FIELD_NUMBER = 6;
    private com.google.protobuf.ByteString encryptedCskBody_;
    /**
     * bytes encrypted_csk_body = 6;
     */
    public com.google.protobuf.ByteString getEncryptedCskBody() {
      return encryptedCskBody_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userId_);
      }
      if (!getDataIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, dataId_);
      }
      if (!cpk_.isEmpty()) {
        output.writeBytes(4, cpk_);
      }
      if (!encryptedCskCms_.isEmpty()) {
        output.writeBytes(5, encryptedCskCms_);
      }
      if (!encryptedCskBody_.isEmpty()) {
        output.writeBytes(6, encryptedCskBody_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, userId_);
      }
      if (!getDataIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, dataId_);
      }
      if (!cpk_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, cpk_);
      }
      if (!encryptedCskCms_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, encryptedCskCms_);
      }
      if (!encryptedCskBody_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(6, encryptedCskBody_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getUserId()
          .equals(other.getUserId())) return false;
      if (!getDataId()
          .equals(other.getDataId())) return false;
      if (!getCpk()
          .equals(other.getCpk())) return false;
      if (!getEncryptedCskCms()
          .equals(other.getEncryptedCskCms())) return false;
      if (!getEncryptedCskBody()
          .equals(other.getEncryptedCskBody())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId().hashCode();
      hash = (37 * hash) + DATA_ID_FIELD_NUMBER;
      hash = (53 * hash) + getDataId().hashCode();
      hash = (37 * hash) + CPK_FIELD_NUMBER;
      hash = (53 * hash) + getCpk().hashCode();
      hash = (37 * hash) + ENCRYPTED_CSK_CMS_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedCskCms().hashCode();
      hash = (37 * hash) + ENCRYPTED_CSK_BODY_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedCskBody().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned 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;
    }
    /**
     * Protobuf type {@code build.CellKeySigned}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.CellKeySigned)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySignedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKeySigned_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKeySigned_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        userId_ = "";

        dataId_ = "";

        cpk_ = com.google.protobuf.ByteString.EMPTY;

        encryptedCskCms_ = com.google.protobuf.ByteString.EMPTY;

        encryptedCskBody_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKeySigned_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned(this);
        result.version_ = version_;
        result.userId_ = userId_;
        result.dataId_ = dataId_;
        result.cpk_ = cpk_;
        result.encryptedCskCms_ = encryptedCskCms_;
        result.encryptedCskBody_ = encryptedCskBody_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (!other.getUserId().isEmpty()) {
          userId_ = other.userId_;
          onChanged();
        }
        if (!other.getDataId().isEmpty()) {
          dataId_ = other.dataId_;
          onChanged();
        }
        if (other.getCpk() != com.google.protobuf.ByteString.EMPTY) {
          setCpk(other.getCpk());
        }
        if (other.getEncryptedCskCms() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedCskCms(other.getEncryptedCskCms());
        }
        if (other.getEncryptedCskBody() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedCskBody(other.getEncryptedCskBody());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object userId_ = "";
      /**
       * string user_id = 2;
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder clearUserId() {
        
        userId_ = getDefaultInstance().getUserId();
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userId_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object dataId_ = "";
      /**
       * string data_id = 3;
       */
      public java.lang.String getDataId() {
        java.lang.Object ref = dataId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          dataId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string data_id = 3;
       */
      public com.google.protobuf.ByteString
          getDataIdBytes() {
        java.lang.Object ref = dataId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          dataId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string data_id = 3;
       */
      public Builder setDataId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        dataId_ = value;
        onChanged();
        return this;
      }
      /**
       * string data_id = 3;
       */
      public Builder clearDataId() {
        
        dataId_ = getDefaultInstance().getDataId();
        onChanged();
        return this;
      }
      /**
       * string data_id = 3;
       */
      public Builder setDataIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        dataId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString cpk_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes cpk = 4;
       */
      public com.google.protobuf.ByteString getCpk() {
        return cpk_;
      }
      /**
       * bytes cpk = 4;
       */
      public Builder setCpk(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cpk_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes cpk = 4;
       */
      public Builder clearCpk() {
        
        cpk_ = getDefaultInstance().getCpk();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedCskCms_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_csk_cms = 5;
       */
      public com.google.protobuf.ByteString getEncryptedCskCms() {
        return encryptedCskCms_;
      }
      /**
       * bytes encrypted_csk_cms = 5;
       */
      public Builder setEncryptedCskCms(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedCskCms_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_csk_cms = 5;
       */
      public Builder clearEncryptedCskCms() {
        
        encryptedCskCms_ = getDefaultInstance().getEncryptedCskCms();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedCskBody_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_csk_body = 6;
       */
      public com.google.protobuf.ByteString getEncryptedCskBody() {
        return encryptedCskBody_;
      }
      /**
       * bytes encrypted_csk_body = 6;
       */
      public Builder setEncryptedCskBody(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedCskBody_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_csk_body = 6;
       */
      public Builder clearEncryptedCskBody() {
        
        encryptedCskBody_ = getDefaultInstance().getEncryptedCskBody();
        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:build.CellKeySigned)
    }

    // @@protoc_insertion_point(class_scope:build.CellKeySigned)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CellKeySigned parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CellKeySigned(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeySigned getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface CellKeyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.CellKey)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * bytes cell_key_signed = 2;
     */
    com.google.protobuf.ByteString getCellKeySigned();

    /**
     * bytes signature = 3;
     */
    com.google.protobuf.ByteString getSignature();
  }
  /**
   * Protobuf type {@code build.CellKey}
   */
  public  static final class CellKey extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.CellKey)
      CellKeyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use CellKey.newBuilder() to construct.
    private CellKey(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private CellKey() {
      cellKeySigned_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private CellKey(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {

              cellKeySigned_ = input.readBytes();
              break;
            }
            case 26: {

              signature_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKey_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKey_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int CELL_KEY_SIGNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString cellKeySigned_;
    /**
     * bytes cell_key_signed = 2;
     */
    public com.google.protobuf.ByteString getCellKeySigned() {
      return cellKeySigned_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString signature_;
    /**
     * bytes signature = 3;
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!cellKeySigned_.isEmpty()) {
        output.writeBytes(2, cellKeySigned_);
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(3, signature_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!cellKeySigned_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, cellKeySigned_);
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, signature_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getCellKeySigned()
          .equals(other.getCellKeySigned())) return false;
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + CELL_KEY_SIGNED_FIELD_NUMBER;
      hash = (53 * hash) + getCellKeySigned().hashCode();
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey 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;
    }
    /**
     * Protobuf type {@code build.CellKey}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.CellKey)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKeyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKey_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKey_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        cellKeySigned_ = com.google.protobuf.ByteString.EMPTY;

        signature_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_CellKey_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey(this);
        result.version_ = version_;
        result.cellKeySigned_ = cellKeySigned_;
        result.signature_ = signature_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getCellKeySigned() != com.google.protobuf.ByteString.EMPTY) {
          setCellKeySigned(other.getCellKeySigned());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString cellKeySigned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes cell_key_signed = 2;
       */
      public com.google.protobuf.ByteString getCellKeySigned() {
        return cellKeySigned_;
      }
      /**
       * bytes cell_key_signed = 2;
       */
      public Builder setCellKeySigned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        cellKeySigned_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes cell_key_signed = 2;
       */
      public Builder clearCellKeySigned() {
        
        cellKeySigned_ = getDefaultInstance().getCellKeySigned();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 3;
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 3;
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 3;
       */
      public Builder clearSignature() {
        
        signature_ = getDefaultInstance().getSignature();
        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:build.CellKey)
    }

    // @@protoc_insertion_point(class_scope:build.CellKey)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public CellKey parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new CellKey(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.CellKey getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleSignedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.RoleSigned)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * string name = 2;
     */
    java.lang.String getName();
    /**
     * string name = 2;
     */
    com.google.protobuf.ByteString
        getNameBytes();

    /**
     * bytes rpk = 3;
     */
    com.google.protobuf.ByteString getRpk();
  }
  /**
   * Protobuf type {@code build.RoleSigned}
   */
  public  static final class RoleSigned extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.RoleSigned)
      RoleSignedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleSigned.newBuilder() to construct.
    private RoleSigned(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private RoleSigned() {
      name_ = "";
      rpk_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleSigned(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              name_ = s;
              break;
            }
            case 26: {

              rpk_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleSigned_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleSigned_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object name_;
    /**
     * string name = 2;
     */
    public java.lang.String getName() {
      java.lang.Object ref = name_;
      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();
        name_ = s;
        return s;
      }
    }
    /**
     * string name = 2;
     */
    public com.google.protobuf.ByteString
        getNameBytes() {
      java.lang.Object ref = name_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        name_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int RPK_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString rpk_;
    /**
     * bytes rpk = 3;
     */
    public com.google.protobuf.ByteString getRpk() {
      return rpk_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!getNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, name_);
      }
      if (!rpk_.isEmpty()) {
        output.writeBytes(3, rpk_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!getNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, name_);
      }
      if (!rpk_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, rpk_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getName()
          .equals(other.getName())) return false;
      if (!getRpk()
          .equals(other.getRpk())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + NAME_FIELD_NUMBER;
      hash = (53 * hash) + getName().hashCode();
      hash = (37 * hash) + RPK_FIELD_NUMBER;
      hash = (53 * hash) + getRpk().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned 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;
    }
    /**
     * Protobuf type {@code build.RoleSigned}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.RoleSigned)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSignedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleSigned_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleSigned_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        name_ = "";

        rpk_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleSigned_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned(this);
        result.version_ = version_;
        result.name_ = name_;
        result.rpk_ = rpk_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (!other.getName().isEmpty()) {
          name_ = other.name_;
          onChanged();
        }
        if (other.getRpk() != com.google.protobuf.ByteString.EMPTY) {
          setRpk(other.getRpk());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object name_ = "";
      /**
       * string name = 2;
       */
      public java.lang.String getName() {
        java.lang.Object ref = name_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          name_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string name = 2;
       */
      public com.google.protobuf.ByteString
          getNameBytes() {
        java.lang.Object ref = name_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          name_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string name = 2;
       */
      public Builder setName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        name_ = value;
        onChanged();
        return this;
      }
      /**
       * string name = 2;
       */
      public Builder clearName() {
        
        name_ = getDefaultInstance().getName();
        onChanged();
        return this;
      }
      /**
       * string name = 2;
       */
      public Builder setNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        name_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString rpk_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes rpk = 3;
       */
      public com.google.protobuf.ByteString getRpk() {
        return rpk_;
      }
      /**
       * bytes rpk = 3;
       */
      public Builder setRpk(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        rpk_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes rpk = 3;
       */
      public Builder clearRpk() {
        
        rpk_ = getDefaultInstance().getRpk();
        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:build.RoleSigned)
    }

    // @@protoc_insertion_point(class_scope:build.RoleSigned)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public RoleSigned parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RoleSigned(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleSigned getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.Role)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * bytes role_signed = 2;
     */
    com.google.protobuf.ByteString getRoleSigned();

    /**
     * bytes signature = 3;
     */
    com.google.protobuf.ByteString getSignature();
  }
  /**
   * Protobuf type {@code build.Role}
   */
  public  static final class Role extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.Role)
      RoleOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Role.newBuilder() to construct.
    private Role(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Role() {
      roleSigned_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Role(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {

              roleSigned_ = input.readBytes();
              break;
            }
            case 26: {

              signature_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Role_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Role_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int ROLE_SIGNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString roleSigned_;
    /**
     * bytes role_signed = 2;
     */
    public com.google.protobuf.ByteString getRoleSigned() {
      return roleSigned_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString signature_;
    /**
     * bytes signature = 3;
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!roleSigned_.isEmpty()) {
        output.writeBytes(2, roleSigned_);
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(3, signature_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!roleSigned_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, roleSigned_);
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, signature_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getRoleSigned()
          .equals(other.getRoleSigned())) return false;
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + ROLE_SIGNED_FIELD_NUMBER;
      hash = (53 * hash) + getRoleSigned().hashCode();
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role 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;
    }
    /**
     * Protobuf type {@code build.Role}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.Role)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Role_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Role_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        roleSigned_ = com.google.protobuf.ByteString.EMPTY;

        signature_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Role_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role(this);
        result.version_ = version_;
        result.roleSigned_ = roleSigned_;
        result.signature_ = signature_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getRoleSigned() != com.google.protobuf.ByteString.EMPTY) {
          setRoleSigned(other.getRoleSigned());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString roleSigned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes role_signed = 2;
       */
      public com.google.protobuf.ByteString getRoleSigned() {
        return roleSigned_;
      }
      /**
       * bytes role_signed = 2;
       */
      public Builder setRoleSigned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roleSigned_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes role_signed = 2;
       */
      public Builder clearRoleSigned() {
        
        roleSigned_ = getDefaultInstance().getRoleSigned();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 3;
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 3;
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 3;
       */
      public Builder clearSignature() {
        
        signature_ = getDefaultInstance().getSignature();
        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:build.Role)
    }

    // @@protoc_insertion_point(class_scope:build.Role)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Role parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Role(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RolesOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.Roles)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .build.Role roles = 1;
     */
    java.util.List 
        getRolesList();
    /**
     * repeated .build.Role roles = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getRoles(int index);
    /**
     * repeated .build.Role roles = 1;
     */
    int getRolesCount();
    /**
     * repeated .build.Role roles = 1;
     */
    java.util.List 
        getRolesOrBuilderList();
    /**
     * repeated .build.Role roles = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder getRolesOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code build.Roles}
   */
  public  static final class Roles extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.Roles)
      RolesOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Roles.newBuilder() to construct.
    private Roles(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private Roles() {
      roles_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private Roles(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                roles_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              roles_.add(
                  input.readMessage(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          roles_ = java.util.Collections.unmodifiableList(roles_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Roles_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Roles_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.Builder.class);
    }

    public static final int ROLES_FIELD_NUMBER = 1;
    private java.util.List roles_;
    /**
     * repeated .build.Role roles = 1;
     */
    public java.util.List getRolesList() {
      return roles_;
    }
    /**
     * repeated .build.Role roles = 1;
     */
    public java.util.List 
        getRolesOrBuilderList() {
      return roles_;
    }
    /**
     * repeated .build.Role roles = 1;
     */
    public int getRolesCount() {
      return roles_.size();
    }
    /**
     * repeated .build.Role roles = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getRoles(int index) {
      return roles_.get(index);
    }
    /**
     * repeated .build.Role roles = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder getRolesOrBuilder(
        int index) {
      return roles_.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 {
      for (int i = 0; i < roles_.size(); i++) {
        output.writeMessage(1, roles_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < roles_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, roles_.get(i));
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRolesCount() > 0) {
        hash = (37 * hash) + ROLES_FIELD_NUMBER;
        hash = (53 * hash) + getRolesList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles 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;
    }
    /**
     * Protobuf type {@code build.Roles}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.Roles)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RolesOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Roles_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Roles_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRolesFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (rolesBuilder_ == null) {
          roles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          rolesBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_Roles_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles(this);
        int from_bitField0_ = bitField0_;
        if (rolesBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            roles_ = java.util.Collections.unmodifiableList(roles_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.roles_ = roles_;
        } else {
          result.roles_ = rolesBuilder_.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles.getDefaultInstance()) return this;
        if (rolesBuilder_ == null) {
          if (!other.roles_.isEmpty()) {
            if (roles_.isEmpty()) {
              roles_ = other.roles_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRolesIsMutable();
              roles_.addAll(other.roles_);
            }
            onChanged();
          }
        } else {
          if (!other.roles_.isEmpty()) {
            if (rolesBuilder_.isEmpty()) {
              rolesBuilder_.dispose();
              rolesBuilder_ = null;
              roles_ = other.roles_;
              bitField0_ = (bitField0_ & ~0x00000001);
              rolesBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRolesFieldBuilder() : null;
            } else {
              rolesBuilder_.addAllMessages(other.roles_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List roles_ =
        java.util.Collections.emptyList();
      private void ensureRolesIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          roles_ = new java.util.ArrayList(roles_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder> rolesBuilder_;

      /**
       * repeated .build.Role roles = 1;
       */
      public java.util.List getRolesList() {
        if (rolesBuilder_ == null) {
          return java.util.Collections.unmodifiableList(roles_);
        } else {
          return rolesBuilder_.getMessageList();
        }
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public int getRolesCount() {
        if (rolesBuilder_ == null) {
          return roles_.size();
        } else {
          return rolesBuilder_.getCount();
        }
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role getRoles(int index) {
        if (rolesBuilder_ == null) {
          return roles_.get(index);
        } else {
          return rolesBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder setRoles(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role value) {
        if (rolesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRolesIsMutable();
          roles_.set(index, value);
          onChanged();
        } else {
          rolesBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder setRoles(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder builderForValue) {
        if (rolesBuilder_ == null) {
          ensureRolesIsMutable();
          roles_.set(index, builderForValue.build());
          onChanged();
        } else {
          rolesBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder addRoles(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role value) {
        if (rolesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRolesIsMutable();
          roles_.add(value);
          onChanged();
        } else {
          rolesBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder addRoles(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role value) {
        if (rolesBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRolesIsMutable();
          roles_.add(index, value);
          onChanged();
        } else {
          rolesBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder addRoles(
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder builderForValue) {
        if (rolesBuilder_ == null) {
          ensureRolesIsMutable();
          roles_.add(builderForValue.build());
          onChanged();
        } else {
          rolesBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder addRoles(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder builderForValue) {
        if (rolesBuilder_ == null) {
          ensureRolesIsMutable();
          roles_.add(index, builderForValue.build());
          onChanged();
        } else {
          rolesBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder addAllRoles(
          java.lang.Iterable values) {
        if (rolesBuilder_ == null) {
          ensureRolesIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, roles_);
          onChanged();
        } else {
          rolesBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder clearRoles() {
        if (rolesBuilder_ == null) {
          roles_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          rolesBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public Builder removeRoles(int index) {
        if (rolesBuilder_ == null) {
          ensureRolesIsMutable();
          roles_.remove(index);
          onChanged();
        } else {
          rolesBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder getRolesBuilder(
          int index) {
        return getRolesFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder getRolesOrBuilder(
          int index) {
        if (rolesBuilder_ == null) {
          return roles_.get(index);  } else {
          return rolesBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public java.util.List 
           getRolesOrBuilderList() {
        if (rolesBuilder_ != null) {
          return rolesBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(roles_);
        }
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder addRolesBuilder() {
        return getRolesFieldBuilder().addBuilder(
            com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.getDefaultInstance());
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder addRolesBuilder(
          int index) {
        return getRolesFieldBuilder().addBuilder(
            index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.getDefaultInstance());
      }
      /**
       * repeated .build.Role roles = 1;
       */
      public java.util.List 
           getRolesBuilderList() {
        return getRolesFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder> 
          getRolesFieldBuilder() {
        if (rolesBuilder_ == null) {
          rolesBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Role.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleOrBuilder>(
                  roles_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          roles_ = null;
        }
        return rolesBuilder_;
      }
      @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:build.Roles)
    }

    // @@protoc_insertion_point(class_scope:build.Roles)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public Roles parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new Roles(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.Roles getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleAssignmentSignedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.RoleAssignmentSigned)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * string role_name = 2;
     */
    java.lang.String getRoleName();
    /**
     * string role_name = 2;
     */
    com.google.protobuf.ByteString
        getRoleNameBytes();

    /**
     * string user_id = 3;
     */
    java.lang.String getUserId();
    /**
     * string user_id = 3;
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    /**
     * bytes public_key_id = 4;
     */
    com.google.protobuf.ByteString getPublicKeyId();

    /**
     * bytes encrypted_rsk = 5;
     */
    com.google.protobuf.ByteString getEncryptedRsk();
  }
  /**
   * Protobuf type {@code build.RoleAssignmentSigned}
   */
  public  static final class RoleAssignmentSigned extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.RoleAssignmentSigned)
      RoleAssignmentSignedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleAssignmentSigned.newBuilder() to construct.
    private RoleAssignmentSigned(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private RoleAssignmentSigned() {
      roleName_ = "";
      userId_ = "";
      publicKeyId_ = com.google.protobuf.ByteString.EMPTY;
      encryptedRsk_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleAssignmentSigned(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              roleName_ = s;
              break;
            }
            case 26: {
              java.lang.String s = input.readStringRequireUtf8();

              userId_ = s;
              break;
            }
            case 34: {

              publicKeyId_ = input.readBytes();
              break;
            }
            case 42: {

              encryptedRsk_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignmentSigned_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignmentSigned_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int ROLE_NAME_FIELD_NUMBER = 2;
    private volatile java.lang.Object roleName_;
    /**
     * string role_name = 2;
     */
    public java.lang.String getRoleName() {
      java.lang.Object ref = roleName_;
      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();
        roleName_ = s;
        return s;
      }
    }
    /**
     * string role_name = 2;
     */
    public com.google.protobuf.ByteString
        getRoleNameBytes() {
      java.lang.Object ref = roleName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        roleName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int USER_ID_FIELD_NUMBER = 3;
    private volatile java.lang.Object userId_;
    /**
     * string user_id = 3;
     */
    public java.lang.String getUserId() {
      java.lang.Object ref = userId_;
      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();
        userId_ = s;
        return s;
      }
    }
    /**
     * string user_id = 3;
     */
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int PUBLIC_KEY_ID_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString publicKeyId_;
    /**
     * bytes public_key_id = 4;
     */
    public com.google.protobuf.ByteString getPublicKeyId() {
      return publicKeyId_;
    }

    public static final int ENCRYPTED_RSK_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString encryptedRsk_;
    /**
     * bytes encrypted_rsk = 5;
     */
    public com.google.protobuf.ByteString getEncryptedRsk() {
      return encryptedRsk_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!getRoleNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, roleName_);
      }
      if (!getUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, userId_);
      }
      if (!publicKeyId_.isEmpty()) {
        output.writeBytes(4, publicKeyId_);
      }
      if (!encryptedRsk_.isEmpty()) {
        output.writeBytes(5, encryptedRsk_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!getRoleNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, roleName_);
      }
      if (!getUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, userId_);
      }
      if (!publicKeyId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, publicKeyId_);
      }
      if (!encryptedRsk_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, encryptedRsk_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getRoleName()
          .equals(other.getRoleName())) return false;
      if (!getUserId()
          .equals(other.getUserId())) return false;
      if (!getPublicKeyId()
          .equals(other.getPublicKeyId())) return false;
      if (!getEncryptedRsk()
          .equals(other.getEncryptedRsk())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + ROLE_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getRoleName().hashCode();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId().hashCode();
      hash = (37 * hash) + PUBLIC_KEY_ID_FIELD_NUMBER;
      hash = (53 * hash) + getPublicKeyId().hashCode();
      hash = (37 * hash) + ENCRYPTED_RSK_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedRsk().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned 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;
    }
    /**
     * Protobuf type {@code build.RoleAssignmentSigned}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.RoleAssignmentSigned)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSignedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignmentSigned_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignmentSigned_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        roleName_ = "";

        userId_ = "";

        publicKeyId_ = com.google.protobuf.ByteString.EMPTY;

        encryptedRsk_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignmentSigned_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned(this);
        result.version_ = version_;
        result.roleName_ = roleName_;
        result.userId_ = userId_;
        result.publicKeyId_ = publicKeyId_;
        result.encryptedRsk_ = encryptedRsk_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (!other.getRoleName().isEmpty()) {
          roleName_ = other.roleName_;
          onChanged();
        }
        if (!other.getUserId().isEmpty()) {
          userId_ = other.userId_;
          onChanged();
        }
        if (other.getPublicKeyId() != com.google.protobuf.ByteString.EMPTY) {
          setPublicKeyId(other.getPublicKeyId());
        }
        if (other.getEncryptedRsk() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedRsk(other.getEncryptedRsk());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object roleName_ = "";
      /**
       * string role_name = 2;
       */
      public java.lang.String getRoleName() {
        java.lang.Object ref = roleName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          roleName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string role_name = 2;
       */
      public com.google.protobuf.ByteString
          getRoleNameBytes() {
        java.lang.Object ref = roleName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          roleName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string role_name = 2;
       */
      public Builder setRoleName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roleName_ = value;
        onChanged();
        return this;
      }
      /**
       * string role_name = 2;
       */
      public Builder clearRoleName() {
        
        roleName_ = getDefaultInstance().getRoleName();
        onChanged();
        return this;
      }
      /**
       * string role_name = 2;
       */
      public Builder setRoleNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        roleName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object userId_ = "";
      /**
       * string user_id = 3;
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string user_id = 3;
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string user_id = 3;
       */
      public Builder setUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * string user_id = 3;
       */
      public Builder clearUserId() {
        
        userId_ = getDefaultInstance().getUserId();
        onChanged();
        return this;
      }
      /**
       * string user_id = 3;
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString publicKeyId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes public_key_id = 4;
       */
      public com.google.protobuf.ByteString getPublicKeyId() {
        return publicKeyId_;
      }
      /**
       * bytes public_key_id = 4;
       */
      public Builder setPublicKeyId(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        publicKeyId_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes public_key_id = 4;
       */
      public Builder clearPublicKeyId() {
        
        publicKeyId_ = getDefaultInstance().getPublicKeyId();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedRsk_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_rsk = 5;
       */
      public com.google.protobuf.ByteString getEncryptedRsk() {
        return encryptedRsk_;
      }
      /**
       * bytes encrypted_rsk = 5;
       */
      public Builder setEncryptedRsk(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedRsk_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_rsk = 5;
       */
      public Builder clearEncryptedRsk() {
        
        encryptedRsk_ = getDefaultInstance().getEncryptedRsk();
        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:build.RoleAssignmentSigned)
    }

    // @@protoc_insertion_point(class_scope:build.RoleAssignmentSigned)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public RoleAssignmentSigned parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RoleAssignmentSigned(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentSigned getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleAssignmentOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.RoleAssignment)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * bytes role_assignment_signed = 2;
     */
    com.google.protobuf.ByteString getRoleAssignmentSigned();

    /**
     * bytes signature = 3;
     */
    com.google.protobuf.ByteString getSignature();
  }
  /**
   * Protobuf type {@code build.RoleAssignment}
   */
  public  static final class RoleAssignment extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.RoleAssignment)
      RoleAssignmentOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleAssignment.newBuilder() to construct.
    private RoleAssignment(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private RoleAssignment() {
      roleAssignmentSigned_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleAssignment(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {

              roleAssignmentSigned_ = input.readBytes();
              break;
            }
            case 26: {

              signature_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignment_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignment_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int ROLE_ASSIGNMENT_SIGNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString roleAssignmentSigned_;
    /**
     * bytes role_assignment_signed = 2;
     */
    public com.google.protobuf.ByteString getRoleAssignmentSigned() {
      return roleAssignmentSigned_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString signature_;
    /**
     * bytes signature = 3;
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!roleAssignmentSigned_.isEmpty()) {
        output.writeBytes(2, roleAssignmentSigned_);
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(3, signature_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!roleAssignmentSigned_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, roleAssignmentSigned_);
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, signature_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getRoleAssignmentSigned()
          .equals(other.getRoleAssignmentSigned())) return false;
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + ROLE_ASSIGNMENT_SIGNED_FIELD_NUMBER;
      hash = (53 * hash) + getRoleAssignmentSigned().hashCode();
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment 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;
    }
    /**
     * Protobuf type {@code build.RoleAssignment}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.RoleAssignment)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignment_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignment_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        roleAssignmentSigned_ = com.google.protobuf.ByteString.EMPTY;

        signature_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignment_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment(this);
        result.version_ = version_;
        result.roleAssignmentSigned_ = roleAssignmentSigned_;
        result.signature_ = signature_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getRoleAssignmentSigned() != com.google.protobuf.ByteString.EMPTY) {
          setRoleAssignmentSigned(other.getRoleAssignmentSigned());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString roleAssignmentSigned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes role_assignment_signed = 2;
       */
      public com.google.protobuf.ByteString getRoleAssignmentSigned() {
        return roleAssignmentSigned_;
      }
      /**
       * bytes role_assignment_signed = 2;
       */
      public Builder setRoleAssignmentSigned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        roleAssignmentSigned_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes role_assignment_signed = 2;
       */
      public Builder clearRoleAssignmentSigned() {
        
        roleAssignmentSigned_ = getDefaultInstance().getRoleAssignmentSigned();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 3;
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 3;
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 3;
       */
      public Builder clearSignature() {
        
        signature_ = getDefaultInstance().getSignature();
        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:build.RoleAssignment)
    }

    // @@protoc_insertion_point(class_scope:build.RoleAssignment)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public RoleAssignment parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RoleAssignment(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface RoleAssignmentsOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.RoleAssignments)
      com.google.protobuf.MessageOrBuilder {

    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    java.util.List 
        getRoleAssignmentsList();
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getRoleAssignments(int index);
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    int getRoleAssignmentsCount();
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    java.util.List 
        getRoleAssignmentsOrBuilderList();
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder getRoleAssignmentsOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code build.RoleAssignments}
   */
  public  static final class RoleAssignments extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.RoleAssignments)
      RoleAssignmentsOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use RoleAssignments.newBuilder() to construct.
    private RoleAssignments(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private RoleAssignments() {
      roleAssignments_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private RoleAssignments(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      int mutable_bitField0_ = 0;
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 10: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                roleAssignments_ = new java.util.ArrayList();
                mutable_bitField0_ |= 0x00000001;
              }
              roleAssignments_.add(
                  input.readMessage(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.parser(), extensionRegistry));
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        if (((mutable_bitField0_ & 0x00000001) != 0)) {
          roleAssignments_ = java.util.Collections.unmodifiableList(roleAssignments_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignments_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignments_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.Builder.class);
    }

    public static final int ROLE_ASSIGNMENTS_FIELD_NUMBER = 1;
    private java.util.List roleAssignments_;
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    public java.util.List getRoleAssignmentsList() {
      return roleAssignments_;
    }
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    public java.util.List 
        getRoleAssignmentsOrBuilderList() {
      return roleAssignments_;
    }
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    public int getRoleAssignmentsCount() {
      return roleAssignments_.size();
    }
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getRoleAssignments(int index) {
      return roleAssignments_.get(index);
    }
    /**
     * repeated .build.RoleAssignment role_assignments = 1;
     */
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder getRoleAssignmentsOrBuilder(
        int index) {
      return roleAssignments_.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 {
      for (int i = 0; i < roleAssignments_.size(); i++) {
        output.writeMessage(1, roleAssignments_.get(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      for (int i = 0; i < roleAssignments_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, roleAssignments_.get(i));
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments) obj;

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

    @java.lang.Override
    public int hashCode() {
      if (memoizedHashCode != 0) {
        return memoizedHashCode;
      }
      int hash = 41;
      hash = (19 * hash) + getDescriptor().hashCode();
      if (getRoleAssignmentsCount() > 0) {
        hash = (37 * hash) + ROLE_ASSIGNMENTS_FIELD_NUMBER;
        hash = (53 * hash) + getRoleAssignmentsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments 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;
    }
    /**
     * Protobuf type {@code build.RoleAssignments}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.RoleAssignments)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentsOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignments_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignments_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
          getRoleAssignmentsFieldBuilder();
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        if (roleAssignmentsBuilder_ == null) {
          roleAssignments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          roleAssignmentsBuilder_.clear();
        }
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_RoleAssignments_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments(this);
        int from_bitField0_ = bitField0_;
        if (roleAssignmentsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            roleAssignments_ = java.util.Collections.unmodifiableList(roleAssignments_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.roleAssignments_ = roleAssignments_;
        } else {
          result.roleAssignments_ = roleAssignmentsBuilder_.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments.getDefaultInstance()) return this;
        if (roleAssignmentsBuilder_ == null) {
          if (!other.roleAssignments_.isEmpty()) {
            if (roleAssignments_.isEmpty()) {
              roleAssignments_ = other.roleAssignments_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureRoleAssignmentsIsMutable();
              roleAssignments_.addAll(other.roleAssignments_);
            }
            onChanged();
          }
        } else {
          if (!other.roleAssignments_.isEmpty()) {
            if (roleAssignmentsBuilder_.isEmpty()) {
              roleAssignmentsBuilder_.dispose();
              roleAssignmentsBuilder_ = null;
              roleAssignments_ = other.roleAssignments_;
              bitField0_ = (bitField0_ & ~0x00000001);
              roleAssignmentsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getRoleAssignmentsFieldBuilder() : null;
            } else {
              roleAssignmentsBuilder_.addAllMessages(other.roleAssignments_);
            }
          }
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List roleAssignments_ =
        java.util.Collections.emptyList();
      private void ensureRoleAssignmentsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          roleAssignments_ = new java.util.ArrayList(roleAssignments_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder> roleAssignmentsBuilder_;

      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public java.util.List getRoleAssignmentsList() {
        if (roleAssignmentsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(roleAssignments_);
        } else {
          return roleAssignmentsBuilder_.getMessageList();
        }
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public int getRoleAssignmentsCount() {
        if (roleAssignmentsBuilder_ == null) {
          return roleAssignments_.size();
        } else {
          return roleAssignmentsBuilder_.getCount();
        }
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment getRoleAssignments(int index) {
        if (roleAssignmentsBuilder_ == null) {
          return roleAssignments_.get(index);
        } else {
          return roleAssignmentsBuilder_.getMessage(index);
        }
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder setRoleAssignments(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment value) {
        if (roleAssignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.set(index, value);
          onChanged();
        } else {
          roleAssignmentsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder setRoleAssignments(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder builderForValue) {
        if (roleAssignmentsBuilder_ == null) {
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.set(index, builderForValue.build());
          onChanged();
        } else {
          roleAssignmentsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder addRoleAssignments(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment value) {
        if (roleAssignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.add(value);
          onChanged();
        } else {
          roleAssignmentsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder addRoleAssignments(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment value) {
        if (roleAssignmentsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.add(index, value);
          onChanged();
        } else {
          roleAssignmentsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder addRoleAssignments(
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder builderForValue) {
        if (roleAssignmentsBuilder_ == null) {
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.add(builderForValue.build());
          onChanged();
        } else {
          roleAssignmentsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder addRoleAssignments(
          int index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder builderForValue) {
        if (roleAssignmentsBuilder_ == null) {
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.add(index, builderForValue.build());
          onChanged();
        } else {
          roleAssignmentsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder addAllRoleAssignments(
          java.lang.Iterable values) {
        if (roleAssignmentsBuilder_ == null) {
          ensureRoleAssignmentsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, roleAssignments_);
          onChanged();
        } else {
          roleAssignmentsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder clearRoleAssignments() {
        if (roleAssignmentsBuilder_ == null) {
          roleAssignments_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          roleAssignmentsBuilder_.clear();
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public Builder removeRoleAssignments(int index) {
        if (roleAssignmentsBuilder_ == null) {
          ensureRoleAssignmentsIsMutable();
          roleAssignments_.remove(index);
          onChanged();
        } else {
          roleAssignmentsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder getRoleAssignmentsBuilder(
          int index) {
        return getRoleAssignmentsFieldBuilder().getBuilder(index);
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder getRoleAssignmentsOrBuilder(
          int index) {
        if (roleAssignmentsBuilder_ == null) {
          return roleAssignments_.get(index);  } else {
          return roleAssignmentsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public java.util.List 
           getRoleAssignmentsOrBuilderList() {
        if (roleAssignmentsBuilder_ != null) {
          return roleAssignmentsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(roleAssignments_);
        }
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder addRoleAssignmentsBuilder() {
        return getRoleAssignmentsFieldBuilder().addBuilder(
            com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.getDefaultInstance());
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder addRoleAssignmentsBuilder(
          int index) {
        return getRoleAssignmentsFieldBuilder().addBuilder(
            index, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.getDefaultInstance());
      }
      /**
       * repeated .build.RoleAssignment role_assignments = 1;
       */
      public java.util.List 
           getRoleAssignmentsBuilderList() {
        return getRoleAssignmentsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder> 
          getRoleAssignmentsFieldBuilder() {
        if (roleAssignmentsBuilder_ == null) {
          roleAssignmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignment.Builder, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignmentOrBuilder>(
                  roleAssignments_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          roleAssignments_ = null;
        }
        return roleAssignmentsBuilder_;
      }
      @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:build.RoleAssignments)
    }

    // @@protoc_insertion_point(class_scope:build.RoleAssignments)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public RoleAssignments parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new RoleAssignments(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.RoleAssignments getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GrantKeySignedOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.GrantKeySigned)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * string user_id = 2;
     */
    java.lang.String getUserId();
    /**
     * string user_id = 2;
     */
    com.google.protobuf.ByteString
        getUserIdBytes();

    /**
     * bytes key_id = 3;
     */
    com.google.protobuf.ByteString getKeyId();

    /**
     * bytes encrypted_grant_key_blob = 4;
     */
    com.google.protobuf.ByteString getEncryptedGrantKeyBlob();

    /**
     * uint64 creation_date = 5;
     */
    long getCreationDate();

    /**
     * uint64 expiration_date = 6;
     */
    long getExpirationDate();
  }
  /**
   * Protobuf type {@code build.GrantKeySigned}
   */
  public  static final class GrantKeySigned extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.GrantKeySigned)
      GrantKeySignedOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GrantKeySigned.newBuilder() to construct.
    private GrantKeySigned(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private GrantKeySigned() {
      userId_ = "";
      keyId_ = com.google.protobuf.ByteString.EMPTY;
      encryptedGrantKeyBlob_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GrantKeySigned(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {
              java.lang.String s = input.readStringRequireUtf8();

              userId_ = s;
              break;
            }
            case 26: {

              keyId_ = input.readBytes();
              break;
            }
            case 34: {

              encryptedGrantKeyBlob_ = input.readBytes();
              break;
            }
            case 40: {

              creationDate_ = input.readUInt64();
              break;
            }
            case 48: {

              expirationDate_ = input.readUInt64();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKeySigned_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKeySigned_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int USER_ID_FIELD_NUMBER = 2;
    private volatile java.lang.Object userId_;
    /**
     * string user_id = 2;
     */
    public java.lang.String getUserId() {
      java.lang.Object ref = userId_;
      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();
        userId_ = s;
        return s;
      }
    }
    /**
     * string user_id = 2;
     */
    public com.google.protobuf.ByteString
        getUserIdBytes() {
      java.lang.Object ref = userId_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        userId_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int KEY_ID_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString keyId_;
    /**
     * bytes key_id = 3;
     */
    public com.google.protobuf.ByteString getKeyId() {
      return keyId_;
    }

    public static final int ENCRYPTED_GRANT_KEY_BLOB_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString encryptedGrantKeyBlob_;
    /**
     * bytes encrypted_grant_key_blob = 4;
     */
    public com.google.protobuf.ByteString getEncryptedGrantKeyBlob() {
      return encryptedGrantKeyBlob_;
    }

    public static final int CREATION_DATE_FIELD_NUMBER = 5;
    private long creationDate_;
    /**
     * uint64 creation_date = 5;
     */
    public long getCreationDate() {
      return creationDate_;
    }

    public static final int EXPIRATION_DATE_FIELD_NUMBER = 6;
    private long expirationDate_;
    /**
     * uint64 expiration_date = 6;
     */
    public long getExpirationDate() {
      return expirationDate_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, userId_);
      }
      if (!keyId_.isEmpty()) {
        output.writeBytes(3, keyId_);
      }
      if (!encryptedGrantKeyBlob_.isEmpty()) {
        output.writeBytes(4, encryptedGrantKeyBlob_);
      }
      if (creationDate_ != 0L) {
        output.writeUInt64(5, creationDate_);
      }
      if (expirationDate_ != 0L) {
        output.writeUInt64(6, expirationDate_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!getUserIdBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, userId_);
      }
      if (!keyId_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, keyId_);
      }
      if (!encryptedGrantKeyBlob_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, encryptedGrantKeyBlob_);
      }
      if (creationDate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(5, creationDate_);
      }
      if (expirationDate_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt64Size(6, expirationDate_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getUserId()
          .equals(other.getUserId())) return false;
      if (!getKeyId()
          .equals(other.getKeyId())) return false;
      if (!getEncryptedGrantKeyBlob()
          .equals(other.getEncryptedGrantKeyBlob())) return false;
      if (getCreationDate()
          != other.getCreationDate()) return false;
      if (getExpirationDate()
          != other.getExpirationDate()) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + USER_ID_FIELD_NUMBER;
      hash = (53 * hash) + getUserId().hashCode();
      hash = (37 * hash) + KEY_ID_FIELD_NUMBER;
      hash = (53 * hash) + getKeyId().hashCode();
      hash = (37 * hash) + ENCRYPTED_GRANT_KEY_BLOB_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedGrantKeyBlob().hashCode();
      hash = (37 * hash) + CREATION_DATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getCreationDate());
      hash = (37 * hash) + EXPIRATION_DATE_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getExpirationDate());
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned 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;
    }
    /**
     * Protobuf type {@code build.GrantKeySigned}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.GrantKeySigned)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySignedOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKeySigned_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKeySigned_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        userId_ = "";

        keyId_ = com.google.protobuf.ByteString.EMPTY;

        encryptedGrantKeyBlob_ = com.google.protobuf.ByteString.EMPTY;

        creationDate_ = 0L;

        expirationDate_ = 0L;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKeySigned_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned(this);
        result.version_ = version_;
        result.userId_ = userId_;
        result.keyId_ = keyId_;
        result.encryptedGrantKeyBlob_ = encryptedGrantKeyBlob_;
        result.creationDate_ = creationDate_;
        result.expirationDate_ = expirationDate_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (!other.getUserId().isEmpty()) {
          userId_ = other.userId_;
          onChanged();
        }
        if (other.getKeyId() != com.google.protobuf.ByteString.EMPTY) {
          setKeyId(other.getKeyId());
        }
        if (other.getEncryptedGrantKeyBlob() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedGrantKeyBlob(other.getEncryptedGrantKeyBlob());
        }
        if (other.getCreationDate() != 0L) {
          setCreationDate(other.getCreationDate());
        }
        if (other.getExpirationDate() != 0L) {
          setExpirationDate(other.getExpirationDate());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object userId_ = "";
      /**
       * string user_id = 2;
       */
      public java.lang.String getUserId() {
        java.lang.Object ref = userId_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          userId_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public com.google.protobuf.ByteString
          getUserIdBytes() {
        java.lang.Object ref = userId_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          userId_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserId(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        userId_ = value;
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder clearUserId() {
        
        userId_ = getDefaultInstance().getUserId();
        onChanged();
        return this;
      }
      /**
       * string user_id = 2;
       */
      public Builder setUserIdBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        userId_ = value;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString keyId_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes key_id = 3;
       */
      public com.google.protobuf.ByteString getKeyId() {
        return keyId_;
      }
      /**
       * bytes key_id = 3;
       */
      public Builder setKeyId(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        keyId_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes key_id = 3;
       */
      public Builder clearKeyId() {
        
        keyId_ = getDefaultInstance().getKeyId();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedGrantKeyBlob_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_grant_key_blob = 4;
       */
      public com.google.protobuf.ByteString getEncryptedGrantKeyBlob() {
        return encryptedGrantKeyBlob_;
      }
      /**
       * bytes encrypted_grant_key_blob = 4;
       */
      public Builder setEncryptedGrantKeyBlob(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedGrantKeyBlob_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_grant_key_blob = 4;
       */
      public Builder clearEncryptedGrantKeyBlob() {
        
        encryptedGrantKeyBlob_ = getDefaultInstance().getEncryptedGrantKeyBlob();
        onChanged();
        return this;
      }

      private long creationDate_ ;
      /**
       * uint64 creation_date = 5;
       */
      public long getCreationDate() {
        return creationDate_;
      }
      /**
       * uint64 creation_date = 5;
       */
      public Builder setCreationDate(long value) {
        
        creationDate_ = value;
        onChanged();
        return this;
      }
      /**
       * uint64 creation_date = 5;
       */
      public Builder clearCreationDate() {
        
        creationDate_ = 0L;
        onChanged();
        return this;
      }

      private long expirationDate_ ;
      /**
       * uint64 expiration_date = 6;
       */
      public long getExpirationDate() {
        return expirationDate_;
      }
      /**
       * uint64 expiration_date = 6;
       */
      public Builder setExpirationDate(long value) {
        
        expirationDate_ = value;
        onChanged();
        return this;
      }
      /**
       * uint64 expiration_date = 6;
       */
      public Builder clearExpirationDate() {
        
        expirationDate_ = 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:build.GrantKeySigned)
    }

    // @@protoc_insertion_point(class_scope:build.GrantKeySigned)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public GrantKeySigned parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GrantKeySigned(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeySigned getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface GrantKeyOrBuilder extends
      // @@protoc_insertion_point(interface_extends:build.GrantKey)
      com.google.protobuf.MessageOrBuilder {

    /**
     * uint32 version = 1;
     */
    int getVersion();

    /**
     * bytes grant_key_signed = 2;
     */
    com.google.protobuf.ByteString getGrantKeySigned();

    /**
     * bytes signature = 3;
     */
    com.google.protobuf.ByteString getSignature();

    /**
     * uint32 record_version = 4;
     */
    int getRecordVersion();

    /**
     * bytes encrypted_grant_key_wrap = 5;
     */
    com.google.protobuf.ByteString getEncryptedGrantKeyWrap();
  }
  /**
   * Protobuf type {@code build.GrantKey}
   */
  public  static final class GrantKey extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:build.GrantKey)
      GrantKeyOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use GrantKey.newBuilder() to construct.
    private GrantKey(com.google.protobuf.GeneratedMessageV3.Builder builder) {
      super(builder);
    }
    private GrantKey() {
      grantKeySigned_ = com.google.protobuf.ByteString.EMPTY;
      signature_ = com.google.protobuf.ByteString.EMPTY;
      encryptedGrantKeyWrap_ = com.google.protobuf.ByteString.EMPTY;
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private GrantKey(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      this();
      if (extensionRegistry == null) {
        throw new java.lang.NullPointerException();
      }
      com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder();
      try {
        boolean done = false;
        while (!done) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              done = true;
              break;
            case 8: {

              version_ = input.readUInt32();
              break;
            }
            case 18: {

              grantKeySigned_ = input.readBytes();
              break;
            }
            case 26: {

              signature_ = input.readBytes();
              break;
            }
            case 32: {

              recordVersion_ = input.readUInt32();
              break;
            }
            case 42: {

              encryptedGrantKeyWrap_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKey_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKey_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.Builder.class);
    }

    public static final int VERSION_FIELD_NUMBER = 1;
    private int version_;
    /**
     * uint32 version = 1;
     */
    public int getVersion() {
      return version_;
    }

    public static final int GRANT_KEY_SIGNED_FIELD_NUMBER = 2;
    private com.google.protobuf.ByteString grantKeySigned_;
    /**
     * bytes grant_key_signed = 2;
     */
    public com.google.protobuf.ByteString getGrantKeySigned() {
      return grantKeySigned_;
    }

    public static final int SIGNATURE_FIELD_NUMBER = 3;
    private com.google.protobuf.ByteString signature_;
    /**
     * bytes signature = 3;
     */
    public com.google.protobuf.ByteString getSignature() {
      return signature_;
    }

    public static final int RECORD_VERSION_FIELD_NUMBER = 4;
    private int recordVersion_;
    /**
     * uint32 record_version = 4;
     */
    public int getRecordVersion() {
      return recordVersion_;
    }

    public static final int ENCRYPTED_GRANT_KEY_WRAP_FIELD_NUMBER = 5;
    private com.google.protobuf.ByteString encryptedGrantKeyWrap_;
    /**
     * bytes encrypted_grant_key_wrap = 5;
     */
    public com.google.protobuf.ByteString getEncryptedGrantKeyWrap() {
      return encryptedGrantKeyWrap_;
    }

    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 (version_ != 0) {
        output.writeUInt32(1, version_);
      }
      if (!grantKeySigned_.isEmpty()) {
        output.writeBytes(2, grantKeySigned_);
      }
      if (!signature_.isEmpty()) {
        output.writeBytes(3, signature_);
      }
      if (recordVersion_ != 0) {
        output.writeUInt32(4, recordVersion_);
      }
      if (!encryptedGrantKeyWrap_.isEmpty()) {
        output.writeBytes(5, encryptedGrantKeyWrap_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (version_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(1, version_);
      }
      if (!grantKeySigned_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(2, grantKeySigned_);
      }
      if (!signature_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(3, signature_);
      }
      if (recordVersion_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeUInt32Size(4, recordVersion_);
      }
      if (!encryptedGrantKeyWrap_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(5, encryptedGrantKeyWrap_);
      }
      size += unknownFields.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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey)) {
        return super.equals(obj);
      }
      com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey other = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey) obj;

      if (getVersion()
          != other.getVersion()) return false;
      if (!getGrantKeySigned()
          .equals(other.getGrantKeySigned())) return false;
      if (!getSignature()
          .equals(other.getSignature())) return false;
      if (getRecordVersion()
          != other.getRecordVersion()) return false;
      if (!getEncryptedGrantKeyWrap()
          .equals(other.getEncryptedGrantKeyWrap())) return false;
      if (!unknownFields.equals(other.unknownFields)) 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();
      hash = (37 * hash) + GRANT_KEY_SIGNED_FIELD_NUMBER;
      hash = (53 * hash) + getGrantKeySigned().hashCode();
      hash = (37 * hash) + SIGNATURE_FIELD_NUMBER;
      hash = (53 * hash) + getSignature().hashCode();
      hash = (37 * hash) + RECORD_VERSION_FIELD_NUMBER;
      hash = (53 * hash) + getRecordVersion();
      hash = (37 * hash) + ENCRYPTED_GRANT_KEY_WRAP_FIELD_NUMBER;
      hash = (53 * hash) + getEncryptedGrantKeyWrap().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey 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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey 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;
    }
    /**
     * Protobuf type {@code build.GrantKey}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder implements
        // @@protoc_insertion_point(builder_implements:build.GrantKey)
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKeyOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKey_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKey_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.class, com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.Builder.class);
      }

      // Construct using com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

      private Builder(
          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
        super(parent);
        maybeForceBuilderInitialization();
      }
      private void maybeForceBuilderInitialization() {
        if (com.google.protobuf.GeneratedMessageV3
                .alwaysUseFieldBuilders) {
        }
      }
      @java.lang.Override
      public Builder clear() {
        super.clear();
        version_ = 0;

        grantKeySigned_ = com.google.protobuf.ByteString.EMPTY;

        signature_ = com.google.protobuf.ByteString.EMPTY;

        recordVersion_ = 0;

        encryptedGrantKeyWrap_ = com.google.protobuf.ByteString.EMPTY;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.internal_static_build_GrantKey_descriptor;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey getDefaultInstanceForType() {
        return com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.getDefaultInstance();
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey build() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey buildPartial() {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey result = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey(this);
        result.version_ = version_;
        result.grantKeySigned_ = grantKeySigned_;
        result.signature_ = signature_;
        result.recordVersion_ = recordVersion_;
        result.encryptedGrantKeyWrap_ = encryptedGrantKeyWrap_;
        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.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey) {
          return mergeFrom((com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey other) {
        if (other == com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey.getDefaultInstance()) return this;
        if (other.getVersion() != 0) {
          setVersion(other.getVersion());
        }
        if (other.getGrantKeySigned() != com.google.protobuf.ByteString.EMPTY) {
          setGrantKeySigned(other.getGrantKeySigned());
        }
        if (other.getSignature() != com.google.protobuf.ByteString.EMPTY) {
          setSignature(other.getSignature());
        }
        if (other.getRecordVersion() != 0) {
          setRecordVersion(other.getRecordVersion());
        }
        if (other.getEncryptedGrantKeyWrap() != com.google.protobuf.ByteString.EMPTY) {
          setEncryptedGrantKeyWrap(other.getEncryptedGrantKeyWrap());
        }
        this.mergeUnknownFields(other.unknownFields);
        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 {
        com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int version_ ;
      /**
       * uint32 version = 1;
       */
      public int getVersion() {
        return version_;
      }
      /**
       * uint32 version = 1;
       */
      public Builder setVersion(int value) {
        
        version_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 version = 1;
       */
      public Builder clearVersion() {
        
        version_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString grantKeySigned_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes grant_key_signed = 2;
       */
      public com.google.protobuf.ByteString getGrantKeySigned() {
        return grantKeySigned_;
      }
      /**
       * bytes grant_key_signed = 2;
       */
      public Builder setGrantKeySigned(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        grantKeySigned_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes grant_key_signed = 2;
       */
      public Builder clearGrantKeySigned() {
        
        grantKeySigned_ = getDefaultInstance().getGrantKeySigned();
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString signature_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes signature = 3;
       */
      public com.google.protobuf.ByteString getSignature() {
        return signature_;
      }
      /**
       * bytes signature = 3;
       */
      public Builder setSignature(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        signature_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes signature = 3;
       */
      public Builder clearSignature() {
        
        signature_ = getDefaultInstance().getSignature();
        onChanged();
        return this;
      }

      private int recordVersion_ ;
      /**
       * uint32 record_version = 4;
       */
      public int getRecordVersion() {
        return recordVersion_;
      }
      /**
       * uint32 record_version = 4;
       */
      public Builder setRecordVersion(int value) {
        
        recordVersion_ = value;
        onChanged();
        return this;
      }
      /**
       * uint32 record_version = 4;
       */
      public Builder clearRecordVersion() {
        
        recordVersion_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encryptedGrantKeyWrap_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * bytes encrypted_grant_key_wrap = 5;
       */
      public com.google.protobuf.ByteString getEncryptedGrantKeyWrap() {
        return encryptedGrantKeyWrap_;
      }
      /**
       * bytes encrypted_grant_key_wrap = 5;
       */
      public Builder setEncryptedGrantKeyWrap(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encryptedGrantKeyWrap_ = value;
        onChanged();
        return this;
      }
      /**
       * bytes encrypted_grant_key_wrap = 5;
       */
      public Builder clearEncryptedGrantKeyWrap() {
        
        encryptedGrantKeyWrap_ = getDefaultInstance().getEncryptedGrantKeyWrap();
        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:build.GrantKey)
    }

    // @@protoc_insertion_point(class_scope:build.GrantKey)
    private static final com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey();
    }

    public static com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static final com.google.protobuf.Parser
        PARSER = new com.google.protobuf.AbstractParser() {
      @java.lang.Override
      public GrantKey parsePartialFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return new GrantKey(input, extensionRegistry);
      }
    };

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

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

    @java.lang.Override
    public com.virgilsecurity.purekit.protobuf.build.PurekitProtosV3Storage.GrantKey getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_UserRecordSigned_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_UserRecordSigned_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_UserRecord_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_UserRecord_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_UserRecords_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_UserRecords_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_CellKeySigned_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_CellKeySigned_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_CellKey_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_CellKey_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_RoleSigned_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_RoleSigned_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_Role_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_Role_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_Roles_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_Roles_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_RoleAssignmentSigned_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_RoleAssignmentSigned_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_RoleAssignment_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_RoleAssignment_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_RoleAssignments_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_RoleAssignments_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_GrantKeySigned_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_GrantKeySigned_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_build_GrantKey_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_build_GrantKey_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\027purekitV3_storage.proto\022\005build\"\335\001\n\020Use" +
      "rRecordSigned\022\017\n\007version\030\001 \001(\r\022\017\n\007user_i" +
      "d\030\002 \001(\t\022\025\n\rphe_record_ns\030\003 \001(\014\022\025\n\rphe_re" +
      "cord_nc\030\004 \001(\014\022\013\n\003upk\030\005 \001(\014\022\025\n\rencrypted_" +
      "usk\030\006 \001(\014\022\034\n\024encrypted_usk_backup\030\007 \001(\014\022" +
      "\027\n\017backup_pwd_hash\030\010 \001(\014\022\036\n\026password_rec" +
      "overy_blob\030\t \001(\014\"\262\001\n\nUserRecord\022\017\n\007versi" +
      "on\030\001 \001(\r\022\032\n\022user_record_signed\030\002 \001(\014\022\021\n\t" +
      "signature\030\003 \001(\014\022\025\n\rphe_record_t0\030\004 \001(\014\022\025" +
      "\n\rphe_record_t1\030\005 \001(\014\022\026\n\016record_version\030" +
      "\006 \001(\r\022\036\n\026password_recovery_wrap\030\007 \001(\014\"6\n" +
      "\013UserRecords\022\'\n\014user_records\030\001 \003(\0132\021.bui" +
      "ld.UserRecord\"\206\001\n\rCellKeySigned\022\017\n\007versi" +
      "on\030\001 \001(\r\022\017\n\007user_id\030\002 \001(\t\022\017\n\007data_id\030\003 \001" +
      "(\t\022\013\n\003cpk\030\004 \001(\014\022\031\n\021encrypted_csk_cms\030\005 \001" +
      "(\014\022\032\n\022encrypted_csk_body\030\006 \001(\014\"F\n\007CellKe" +
      "y\022\017\n\007version\030\001 \001(\r\022\027\n\017cell_key_signed\030\002 " +
      "\001(\014\022\021\n\tsignature\030\003 \001(\014\"8\n\nRoleSigned\022\017\n\007" +
      "version\030\001 \001(\r\022\014\n\004name\030\002 \001(\t\022\013\n\003rpk\030\003 \001(\014" +
      "\"?\n\004Role\022\017\n\007version\030\001 \001(\r\022\023\n\013role_signed" +
      "\030\002 \001(\014\022\021\n\tsignature\030\003 \001(\014\"#\n\005Roles\022\032\n\005ro" +
      "les\030\001 \003(\0132\013.build.Role\"y\n\024RoleAssignment" +
      "Signed\022\017\n\007version\030\001 \001(\r\022\021\n\trole_name\030\002 \001" +
      "(\t\022\017\n\007user_id\030\003 \001(\t\022\025\n\rpublic_key_id\030\004 \001" +
      "(\014\022\025\n\rencrypted_rsk\030\005 \001(\014\"T\n\016RoleAssignm" +
      "ent\022\017\n\007version\030\001 \001(\r\022\036\n\026role_assignment_" +
      "signed\030\002 \001(\014\022\021\n\tsignature\030\003 \001(\014\"B\n\017RoleA" +
      "ssignments\022/\n\020role_assignments\030\001 \003(\0132\025.b" +
      "uild.RoleAssignment\"\224\001\n\016GrantKeySigned\022\017" +
      "\n\007version\030\001 \001(\r\022\017\n\007user_id\030\002 \001(\t\022\016\n\006key_" +
      "id\030\003 \001(\014\022 \n\030encrypted_grant_key_blob\030\004 \001" +
      "(\014\022\025\n\rcreation_date\030\005 \001(\004\022\027\n\017expiration_" +
      "date\030\006 \001(\004\"\202\001\n\010GrantKey\022\017\n\007version\030\001 \001(\r" +
      "\022\030\n\020grant_key_signed\030\002 \001(\014\022\021\n\tsignature\030" +
      "\003 \001(\014\022\026\n\016record_version\030\004 \001(\r\022 \n\030encrypt" +
      "ed_grant_key_wrap\030\005 \001(\014BC\n)com.virgilsec" +
      "urity.purekit.protobuf.buildB\026PurekitPro" +
      "tosV3Storageb\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_build_UserRecordSigned_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_build_UserRecordSigned_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_UserRecordSigned_descriptor,
        new java.lang.String[] { "Version", "UserId", "PheRecordNs", "PheRecordNc", "Upk", "EncryptedUsk", "EncryptedUskBackup", "BackupPwdHash", "PasswordRecoveryBlob", });
    internal_static_build_UserRecord_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_build_UserRecord_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_UserRecord_descriptor,
        new java.lang.String[] { "Version", "UserRecordSigned", "Signature", "PheRecordT0", "PheRecordT1", "RecordVersion", "PasswordRecoveryWrap", });
    internal_static_build_UserRecords_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_build_UserRecords_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_UserRecords_descriptor,
        new java.lang.String[] { "UserRecords", });
    internal_static_build_CellKeySigned_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_build_CellKeySigned_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_CellKeySigned_descriptor,
        new java.lang.String[] { "Version", "UserId", "DataId", "Cpk", "EncryptedCskCms", "EncryptedCskBody", });
    internal_static_build_CellKey_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_build_CellKey_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_CellKey_descriptor,
        new java.lang.String[] { "Version", "CellKeySigned", "Signature", });
    internal_static_build_RoleSigned_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_build_RoleSigned_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_RoleSigned_descriptor,
        new java.lang.String[] { "Version", "Name", "Rpk", });
    internal_static_build_Role_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_build_Role_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_Role_descriptor,
        new java.lang.String[] { "Version", "RoleSigned", "Signature", });
    internal_static_build_Roles_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_build_Roles_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_Roles_descriptor,
        new java.lang.String[] { "Roles", });
    internal_static_build_RoleAssignmentSigned_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_build_RoleAssignmentSigned_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_RoleAssignmentSigned_descriptor,
        new java.lang.String[] { "Version", "RoleName", "UserId", "PublicKeyId", "EncryptedRsk", });
    internal_static_build_RoleAssignment_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_build_RoleAssignment_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_RoleAssignment_descriptor,
        new java.lang.String[] { "Version", "RoleAssignmentSigned", "Signature", });
    internal_static_build_RoleAssignments_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_build_RoleAssignments_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_RoleAssignments_descriptor,
        new java.lang.String[] { "RoleAssignments", });
    internal_static_build_GrantKeySigned_descriptor =
      getDescriptor().getMessageTypes().get(11);
    internal_static_build_GrantKeySigned_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_GrantKeySigned_descriptor,
        new java.lang.String[] { "Version", "UserId", "KeyId", "EncryptedGrantKeyBlob", "CreationDate", "ExpirationDate", });
    internal_static_build_GrantKey_descriptor =
      getDescriptor().getMessageTypes().get(12);
    internal_static_build_GrantKey_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_build_GrantKey_descriptor,
        new java.lang.String[] { "Version", "GrantKeySigned", "Signature", "RecordVersion", "EncryptedGrantKeyWrap", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy