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

package pb.xiugou.x1.protobuf.handbook;

public final class Handbook {
  private Handbook() {}
  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 HandbookInfoResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookInfoResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> 
        getHandbooksList();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index);
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    int getHandbooksCount();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
        getHandbooksOrBuilderList();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code pb.HandbookInfoResponse}
   */
  public  static final class HandbookInfoResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookInfoResponse)
      HandbookInfoResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookInfoResponse.newBuilder() to construct.
    private HandbookInfoResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookInfoResponse() {
      handbooks_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookInfoResponse(
        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)) {
                handbooks_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook>();
                mutable_bitField0_ |= 0x00000001;
              }
              handbooks_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.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)) {
          handbooks_ = java.util.Collections.unmodifiableList(handbooks_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookInfoResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookInfoResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookInfoResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900001;</code>
       */
      ID(3900001),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900001;</code>
       */
      public static final int ID_VALUE = 3900001;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900001: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookInfoResponse.Proto)
    }

    public static final int HANDBOOKS_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> handbooks_;
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> getHandbooksList() {
      return handbooks_;
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
        getHandbooksOrBuilderList() {
      return handbooks_;
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public int getHandbooksCount() {
      return handbooks_.size();
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index) {
      return handbooks_.get(index);
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
        int index) {
      return handbooks_.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 < handbooks_.size(); i++) {
        output.writeMessage(1, handbooks_.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 < handbooks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, handbooks_.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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse) obj;

      if (!getHandbooksList()
          .equals(other.getHandbooksList())) 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 (getHandbooksCount() > 0) {
        hash = (37 * hash) + HANDBOOKS_FIELD_NUMBER;
        hash = (53 * hash) + getHandbooksList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse 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 pb.HandbookInfoResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookInfoResponse)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookInfoResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookInfoResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookInfoResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse(this);
        int from_bitField0_ = bitField0_;
        if (handbooksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            handbooks_ = java.util.Collections.unmodifiableList(handbooks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.handbooks_ = handbooks_;
        } else {
          result.handbooks_ = handbooksBuilder_.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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse.getDefaultInstance()) return this;
        if (handbooksBuilder_ == null) {
          if (!other.handbooks_.isEmpty()) {
            if (handbooks_.isEmpty()) {
              handbooks_ = other.handbooks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHandbooksIsMutable();
              handbooks_.addAll(other.handbooks_);
            }
            onChanged();
          }
        } else {
          if (!other.handbooks_.isEmpty()) {
            if (handbooksBuilder_.isEmpty()) {
              handbooksBuilder_.dispose();
              handbooksBuilder_ = null;
              handbooks_ = other.handbooks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              handbooksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHandbooksFieldBuilder() : null;
            } else {
              handbooksBuilder_.addAllMessages(other.handbooks_);
            }
          }
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> handbooks_ =
        java.util.Collections.emptyList();
      private void ensureHandbooksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          handbooks_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook>(handbooks_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> handbooksBuilder_;

      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> getHandbooksList() {
        if (handbooksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(handbooks_);
        } else {
          return handbooksBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public int getHandbooksCount() {
        if (handbooksBuilder_ == null) {
          return handbooks_.size();
        } else {
          return handbooksBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index) {
        if (handbooksBuilder_ == null) {
          return handbooks_.get(index);
        } else {
          return handbooksBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder setHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.set(index, value);
          onChanged();
        } else {
          handbooksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder setHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.set(index, builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.add(value);
          onChanged();
        } else {
          handbooksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.add(index, value);
          onChanged();
        } else {
          handbooksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.add(builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.add(index, builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addAllHandbooks(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> values) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, handbooks_);
          onChanged();
        } else {
          handbooksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder clearHandbooks() {
        if (handbooksBuilder_ == null) {
          handbooks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          handbooksBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder removeHandbooks(int index) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.remove(index);
          onChanged();
        } else {
          handbooksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder getHandbooksBuilder(
          int index) {
        return getHandbooksFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
          int index) {
        if (handbooksBuilder_ == null) {
          return handbooks_.get(index);  } else {
          return handbooksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
           getHandbooksOrBuilderList() {
        if (handbooksBuilder_ != null) {
          return handbooksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(handbooks_);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder addHandbooksBuilder() {
        return getHandbooksFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance());
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder addHandbooksBuilder(
          int index) {
        return getHandbooksFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance());
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder> 
           getHandbooksBuilderList() {
        return getHandbooksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
          getHandbooksFieldBuilder() {
        if (handbooksBuilder_ == null) {
          handbooksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder>(
                  handbooks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          handbooks_ = null;
        }
        return handbooksBuilder_;
      }
      @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:pb.HandbookInfoResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookInfoResponse)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookInfoResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookLevelUpRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookLevelUpRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    int getBookIdentity();

    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    int getEleIdentity();
  }
  /**
   * <pre>
   *图鉴激活
   * </pre>
   *
   * Protobuf type {@code pb.HandbookLevelUpRequest}
   */
  public  static final class HandbookLevelUpRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookLevelUpRequest)
      HandbookLevelUpRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookLevelUpRequest.newBuilder() to construct.
    private HandbookLevelUpRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookLevelUpRequest() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookLevelUpRequest(
        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: {

              bookIdentity_ = input.readInt32();
              break;
            }
            case 16: {

              eleIdentity_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookLevelUpRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900002;</code>
       */
      ID(3900002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900002;</code>
       */
      public static final int ID_VALUE = 3900002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookLevelUpRequest.Proto)
    }

    public static final int BOOK_IDENTITY_FIELD_NUMBER = 1;
    private int bookIdentity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    public int getBookIdentity() {
      return bookIdentity_;
    }

    public static final int ELE_IDENTITY_FIELD_NUMBER = 2;
    private int eleIdentity_;
    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    public int getEleIdentity() {
      return eleIdentity_;
    }

    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 (bookIdentity_ != 0) {
        output.writeInt32(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        output.writeInt32(2, eleIdentity_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (bookIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, eleIdentity_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest) obj;

      if (getBookIdentity()
          != other.getBookIdentity()) return false;
      if (getEleIdentity()
          != other.getEleIdentity()) 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) + BOOK_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getBookIdentity();
      hash = (37 * hash) + ELE_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getEleIdentity();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *图鉴激活
     * </pre>
     *
     * Protobuf type {@code pb.HandbookLevelUpRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookLevelUpRequest)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.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();
        bookIdentity_ = 0;

        eleIdentity_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest(this);
        result.bookIdentity_ = bookIdentity_;
        result.eleIdentity_ = eleIdentity_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest.getDefaultInstance()) return this;
        if (other.getBookIdentity() != 0) {
          setBookIdentity(other.getBookIdentity());
        }
        if (other.getEleIdentity() != 0) {
          setEleIdentity(other.getEleIdentity());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int bookIdentity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return The bookIdentity.
       */
      public int getBookIdentity() {
        return bookIdentity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @param value The bookIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setBookIdentity(int value) {
        
        bookIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBookIdentity() {
        
        bookIdentity_ = 0;
        onChanged();
        return this;
      }

      private int eleIdentity_ ;
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return The eleIdentity.
       */
      public int getEleIdentity() {
        return eleIdentity_;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @param value The eleIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setEleIdentity(int value) {
        
        eleIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEleIdentity() {
        
        eleIdentity_ = 0;
        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:pb.HandbookLevelUpRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookLevelUpRequest)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookLevelUpResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookLevelUpResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> 
        getHandbooksList();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index);
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    int getHandbooksCount();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
        getHandbooksOrBuilderList();
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
        int index);
  }
  /**
   * Protobuf type {@code pb.HandbookLevelUpResponse}
   */
  public  static final class HandbookLevelUpResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookLevelUpResponse)
      HandbookLevelUpResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookLevelUpResponse.newBuilder() to construct.
    private HandbookLevelUpResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookLevelUpResponse() {
      handbooks_ = java.util.Collections.emptyList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookLevelUpResponse(
        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)) {
                handbooks_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook>();
                mutable_bitField0_ |= 0x00000001;
              }
              handbooks_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.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)) {
          handbooks_ = java.util.Collections.unmodifiableList(handbooks_);
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookLevelUpResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900002;</code>
       */
      ID(3900002),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900002;</code>
       */
      public static final int ID_VALUE = 3900002;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900002: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookLevelUpResponse.Proto)
    }

    public static final int HANDBOOKS_FIELD_NUMBER = 1;
    private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> handbooks_;
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> getHandbooksList() {
      return handbooks_;
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
        getHandbooksOrBuilderList() {
      return handbooks_;
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public int getHandbooksCount() {
      return handbooks_.size();
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index) {
      return handbooks_.get(index);
    }
    /**
     * <pre>
     *图鉴
     * </pre>
     *
     * <code>repeated .pb.PbHandbook handbooks = 1;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
        int index) {
      return handbooks_.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 < handbooks_.size(); i++) {
        output.writeMessage(1, handbooks_.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 < handbooks_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(1, handbooks_.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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse) obj;

      if (!getHandbooksList()
          .equals(other.getHandbooksList())) 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 (getHandbooksCount() > 0) {
        hash = (37 * hash) + HANDBOOKS_FIELD_NUMBER;
        hash = (53 * hash) + getHandbooksList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse 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 pb.HandbookLevelUpResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookLevelUpResponse)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookLevelUpResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse(this);
        int from_bitField0_ = bitField0_;
        if (handbooksBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            handbooks_ = java.util.Collections.unmodifiableList(handbooks_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.handbooks_ = handbooks_;
        } else {
          result.handbooks_ = handbooksBuilder_.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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse.getDefaultInstance()) return this;
        if (handbooksBuilder_ == null) {
          if (!other.handbooks_.isEmpty()) {
            if (handbooks_.isEmpty()) {
              handbooks_ = other.handbooks_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureHandbooksIsMutable();
              handbooks_.addAll(other.handbooks_);
            }
            onChanged();
          }
        } else {
          if (!other.handbooks_.isEmpty()) {
            if (handbooksBuilder_.isEmpty()) {
              handbooksBuilder_.dispose();
              handbooksBuilder_ = null;
              handbooks_ = other.handbooks_;
              bitField0_ = (bitField0_ & ~0x00000001);
              handbooksBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getHandbooksFieldBuilder() : null;
            } else {
              handbooksBuilder_.addAllMessages(other.handbooks_);
            }
          }
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> handbooks_ =
        java.util.Collections.emptyList();
      private void ensureHandbooksIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          handbooks_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook>(handbooks_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> handbooksBuilder_;

      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> getHandbooksList() {
        if (handbooksBuilder_ == null) {
          return java.util.Collections.unmodifiableList(handbooks_);
        } else {
          return handbooksBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public int getHandbooksCount() {
        if (handbooksBuilder_ == null) {
          return handbooks_.size();
        } else {
          return handbooksBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getHandbooks(int index) {
        if (handbooksBuilder_ == null) {
          return handbooks_.get(index);
        } else {
          return handbooksBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder setHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.set(index, value);
          onChanged();
        } else {
          handbooksBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder setHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.set(index, builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.add(value);
          onChanged();
        } else {
          handbooksBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook value) {
        if (handbooksBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureHandbooksIsMutable();
          handbooks_.add(index, value);
          onChanged();
        } else {
          handbooksBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.add(builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addHandbooks(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder builderForValue) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.add(index, builderForValue.build());
          onChanged();
        } else {
          handbooksBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder addAllHandbooks(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook> values) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, handbooks_);
          onChanged();
        } else {
          handbooksBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder clearHandbooks() {
        if (handbooksBuilder_ == null) {
          handbooks_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          handbooksBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public Builder removeHandbooks(int index) {
        if (handbooksBuilder_ == null) {
          ensureHandbooksIsMutable();
          handbooks_.remove(index);
          onChanged();
        } else {
          handbooksBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder getHandbooksBuilder(
          int index) {
        return getHandbooksFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder getHandbooksOrBuilder(
          int index) {
        if (handbooksBuilder_ == null) {
          return handbooks_.get(index);  } else {
          return handbooksBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
           getHandbooksOrBuilderList() {
        if (handbooksBuilder_ != null) {
          return handbooksBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(handbooks_);
        }
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder addHandbooksBuilder() {
        return getHandbooksFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance());
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder addHandbooksBuilder(
          int index) {
        return getHandbooksFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance());
      }
      /**
       * <pre>
       *图鉴
       * </pre>
       *
       * <code>repeated .pb.PbHandbook handbooks = 1;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder> 
           getHandbooksBuilderList() {
        return getHandbooksFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder> 
          getHandbooksFieldBuilder() {
        if (handbooksBuilder_ == null) {
          handbooksBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder>(
                  handbooks_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          handbooks_ = null;
        }
        return handbooksBuilder_;
      }
      @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:pb.HandbookLevelUpResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookLevelUpResponse)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookLevelUpResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookTakeRewardRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookTakeRewardRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    int getBookIdentity();
  }
  /**
   * <pre>
   *领取图鉴进度积分奖励
   * </pre>
   *
   * Protobuf type {@code pb.HandbookTakeRewardRequest}
   */
  public  static final class HandbookTakeRewardRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookTakeRewardRequest)
      HandbookTakeRewardRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookTakeRewardRequest.newBuilder() to construct.
    private HandbookTakeRewardRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookTakeRewardRequest() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookTakeRewardRequest(
        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: {

              bookIdentity_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookTakeRewardRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900003;</code>
       */
      ID(3900003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900003;</code>
       */
      public static final int ID_VALUE = 3900003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookTakeRewardRequest.Proto)
    }

    public static final int BOOK_IDENTITY_FIELD_NUMBER = 1;
    private int bookIdentity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    public int getBookIdentity() {
      return bookIdentity_;
    }

    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 (bookIdentity_ != 0) {
        output.writeInt32(1, bookIdentity_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (bookIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, bookIdentity_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest) obj;

      if (getBookIdentity()
          != other.getBookIdentity()) 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) + BOOK_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getBookIdentity();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *领取图鉴进度积分奖励
     * </pre>
     *
     * Protobuf type {@code pb.HandbookTakeRewardRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookTakeRewardRequest)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.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();
        bookIdentity_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest(this);
        result.bookIdentity_ = bookIdentity_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest.getDefaultInstance()) return this;
        if (other.getBookIdentity() != 0) {
          setBookIdentity(other.getBookIdentity());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int bookIdentity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return The bookIdentity.
       */
      public int getBookIdentity() {
        return bookIdentity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @param value The bookIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setBookIdentity(int value) {
        
        bookIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBookIdentity() {
        
        bookIdentity_ = 0;
        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:pb.HandbookTakeRewardRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookTakeRewardRequest)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookTakeRewardResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookTakeRewardResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    int getBookIdentity();

    /**
     * <pre>
     *已经领取到的进度奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 2;</code>
     * @return The rewardLv.
     */
    int getRewardLv();
  }
  /**
   * Protobuf type {@code pb.HandbookTakeRewardResponse}
   */
  public  static final class HandbookTakeRewardResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookTakeRewardResponse)
      HandbookTakeRewardResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookTakeRewardResponse.newBuilder() to construct.
    private HandbookTakeRewardResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookTakeRewardResponse() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookTakeRewardResponse(
        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: {

              bookIdentity_ = input.readInt32();
              break;
            }
            case 16: {

              rewardLv_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookTakeRewardResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900003;</code>
       */
      ID(3900003),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900003;</code>
       */
      public static final int ID_VALUE = 3900003;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900003: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookTakeRewardResponse.Proto)
    }

    public static final int BOOK_IDENTITY_FIELD_NUMBER = 1;
    private int bookIdentity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    public int getBookIdentity() {
      return bookIdentity_;
    }

    public static final int REWARD_LV_FIELD_NUMBER = 2;
    private int rewardLv_;
    /**
     * <pre>
     *已经领取到的进度奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 2;</code>
     * @return The rewardLv.
     */
    public int getRewardLv() {
      return rewardLv_;
    }

    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 (bookIdentity_ != 0) {
        output.writeInt32(1, bookIdentity_);
      }
      if (rewardLv_ != 0) {
        output.writeInt32(2, rewardLv_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (bookIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, bookIdentity_);
      }
      if (rewardLv_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, rewardLv_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse) obj;

      if (getBookIdentity()
          != other.getBookIdentity()) return false;
      if (getRewardLv()
          != other.getRewardLv()) 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) + BOOK_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getBookIdentity();
      hash = (37 * hash) + REWARD_LV_FIELD_NUMBER;
      hash = (53 * hash) + getRewardLv();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse 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 pb.HandbookTakeRewardResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookTakeRewardResponse)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.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();
        bookIdentity_ = 0;

        rewardLv_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookTakeRewardResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse(this);
        result.bookIdentity_ = bookIdentity_;
        result.rewardLv_ = rewardLv_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse.getDefaultInstance()) return this;
        if (other.getBookIdentity() != 0) {
          setBookIdentity(other.getBookIdentity());
        }
        if (other.getRewardLv() != 0) {
          setRewardLv(other.getRewardLv());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int bookIdentity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return The bookIdentity.
       */
      public int getBookIdentity() {
        return bookIdentity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @param value The bookIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setBookIdentity(int value) {
        
        bookIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBookIdentity() {
        
        bookIdentity_ = 0;
        onChanged();
        return this;
      }

      private int rewardLv_ ;
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 2;</code>
       * @return The rewardLv.
       */
      public int getRewardLv() {
        return rewardLv_;
      }
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 2;</code>
       * @param value The rewardLv to set.
       * @return This builder for chaining.
       */
      public Builder setRewardLv(int value) {
        
        rewardLv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearRewardLv() {
        
        rewardLv_ = 0;
        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:pb.HandbookTakeRewardResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookTakeRewardResponse)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookTakeRewardResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookIdentityRewardRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookIdentityRewardRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    int getBookIdentity();

    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    int getEleIdentity();
  }
  /**
   * <pre>
   *领取图鉴元素奖励
   * </pre>
   *
   * Protobuf type {@code pb.HandbookIdentityRewardRequest}
   */
  public  static final class HandbookIdentityRewardRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookIdentityRewardRequest)
      HandbookIdentityRewardRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookIdentityRewardRequest.newBuilder() to construct.
    private HandbookIdentityRewardRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookIdentityRewardRequest() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookIdentityRewardRequest(
        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: {

              bookIdentity_ = input.readInt32();
              break;
            }
            case 16: {

              eleIdentity_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookIdentityRewardRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900004;</code>
       */
      ID(3900004),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900004;</code>
       */
      public static final int ID_VALUE = 3900004;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900004: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookIdentityRewardRequest.Proto)
    }

    public static final int BOOK_IDENTITY_FIELD_NUMBER = 1;
    private int bookIdentity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    public int getBookIdentity() {
      return bookIdentity_;
    }

    public static final int ELE_IDENTITY_FIELD_NUMBER = 2;
    private int eleIdentity_;
    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    public int getEleIdentity() {
      return eleIdentity_;
    }

    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 (bookIdentity_ != 0) {
        output.writeInt32(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        output.writeInt32(2, eleIdentity_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (bookIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, eleIdentity_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest) obj;

      if (getBookIdentity()
          != other.getBookIdentity()) return false;
      if (getEleIdentity()
          != other.getEleIdentity()) 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) + BOOK_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getBookIdentity();
      hash = (37 * hash) + ELE_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getEleIdentity();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *领取图鉴元素奖励
     * </pre>
     *
     * Protobuf type {@code pb.HandbookIdentityRewardRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookIdentityRewardRequest)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.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();
        bookIdentity_ = 0;

        eleIdentity_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest(this);
        result.bookIdentity_ = bookIdentity_;
        result.eleIdentity_ = eleIdentity_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest.getDefaultInstance()) return this;
        if (other.getBookIdentity() != 0) {
          setBookIdentity(other.getBookIdentity());
        }
        if (other.getEleIdentity() != 0) {
          setEleIdentity(other.getEleIdentity());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int bookIdentity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return The bookIdentity.
       */
      public int getBookIdentity() {
        return bookIdentity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @param value The bookIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setBookIdentity(int value) {
        
        bookIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBookIdentity() {
        
        bookIdentity_ = 0;
        onChanged();
        return this;
      }

      private int eleIdentity_ ;
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return The eleIdentity.
       */
      public int getEleIdentity() {
        return eleIdentity_;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @param value The eleIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setEleIdentity(int value) {
        
        eleIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEleIdentity() {
        
        eleIdentity_ = 0;
        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:pb.HandbookIdentityRewardRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookIdentityRewardRequest)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookIdentityRewardResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookIdentityRewardResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    int getBookIdentity();

    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    int getEleIdentity();

    /**
     * <pre>
     *已经领取到的奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 3;</code>
     * @return The rewardLv.
     */
    int getRewardLv();

    /**
     * <pre>
     *图鉴进度
     * </pre>
     *
     * <code>int32 point = 4;</code>
     * @return The point.
     */
    int getPoint();
  }
  /**
   * Protobuf type {@code pb.HandbookIdentityRewardResponse}
   */
  public  static final class HandbookIdentityRewardResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookIdentityRewardResponse)
      HandbookIdentityRewardResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookIdentityRewardResponse.newBuilder() to construct.
    private HandbookIdentityRewardResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookIdentityRewardResponse() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookIdentityRewardResponse(
        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: {

              bookIdentity_ = input.readInt32();
              break;
            }
            case 16: {

              eleIdentity_ = input.readInt32();
              break;
            }
            case 24: {

              rewardLv_ = input.readInt32();
              break;
            }
            case 32: {

              point_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookIdentityRewardResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900004;</code>
       */
      ID(3900004),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900004;</code>
       */
      public static final int ID_VALUE = 3900004;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900004: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookIdentityRewardResponse.Proto)
    }

    public static final int BOOK_IDENTITY_FIELD_NUMBER = 1;
    private int bookIdentity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 book_identity = 1;</code>
     * @return The bookIdentity.
     */
    public int getBookIdentity() {
      return bookIdentity_;
    }

    public static final int ELE_IDENTITY_FIELD_NUMBER = 2;
    private int eleIdentity_;
    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 ele_identity = 2;</code>
     * @return The eleIdentity.
     */
    public int getEleIdentity() {
      return eleIdentity_;
    }

    public static final int REWARD_LV_FIELD_NUMBER = 3;
    private int rewardLv_;
    /**
     * <pre>
     *已经领取到的奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 3;</code>
     * @return The rewardLv.
     */
    public int getRewardLv() {
      return rewardLv_;
    }

    public static final int POINT_FIELD_NUMBER = 4;
    private int point_;
    /**
     * <pre>
     *图鉴进度
     * </pre>
     *
     * <code>int32 point = 4;</code>
     * @return The point.
     */
    public int getPoint() {
      return point_;
    }

    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 (bookIdentity_ != 0) {
        output.writeInt32(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        output.writeInt32(2, eleIdentity_);
      }
      if (rewardLv_ != 0) {
        output.writeInt32(3, rewardLv_);
      }
      if (point_ != 0) {
        output.writeInt32(4, point_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (bookIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, bookIdentity_);
      }
      if (eleIdentity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, eleIdentity_);
      }
      if (rewardLv_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, rewardLv_);
      }
      if (point_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, point_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse) obj;

      if (getBookIdentity()
          != other.getBookIdentity()) return false;
      if (getEleIdentity()
          != other.getEleIdentity()) return false;
      if (getRewardLv()
          != other.getRewardLv()) return false;
      if (getPoint()
          != other.getPoint()) 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) + BOOK_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getBookIdentity();
      hash = (37 * hash) + ELE_IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getEleIdentity();
      hash = (37 * hash) + REWARD_LV_FIELD_NUMBER;
      hash = (53 * hash) + getRewardLv();
      hash = (37 * hash) + POINT_FIELD_NUMBER;
      hash = (53 * hash) + getPoint();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse 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 pb.HandbookIdentityRewardResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookIdentityRewardResponse)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.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();
        bookIdentity_ = 0;

        eleIdentity_ = 0;

        rewardLv_ = 0;

        point_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookIdentityRewardResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse(this);
        result.bookIdentity_ = bookIdentity_;
        result.eleIdentity_ = eleIdentity_;
        result.rewardLv_ = rewardLv_;
        result.point_ = point_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse.getDefaultInstance()) return this;
        if (other.getBookIdentity() != 0) {
          setBookIdentity(other.getBookIdentity());
        }
        if (other.getEleIdentity() != 0) {
          setEleIdentity(other.getEleIdentity());
        }
        if (other.getRewardLv() != 0) {
          setRewardLv(other.getRewardLv());
        }
        if (other.getPoint() != 0) {
          setPoint(other.getPoint());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int bookIdentity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return The bookIdentity.
       */
      public int getBookIdentity() {
        return bookIdentity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @param value The bookIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setBookIdentity(int value) {
        
        bookIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 book_identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBookIdentity() {
        
        bookIdentity_ = 0;
        onChanged();
        return this;
      }

      private int eleIdentity_ ;
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return The eleIdentity.
       */
      public int getEleIdentity() {
        return eleIdentity_;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @param value The eleIdentity to set.
       * @return This builder for chaining.
       */
      public Builder setEleIdentity(int value) {
        
        eleIdentity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 ele_identity = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearEleIdentity() {
        
        eleIdentity_ = 0;
        onChanged();
        return this;
      }

      private int rewardLv_ ;
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @return The rewardLv.
       */
      public int getRewardLv() {
        return rewardLv_;
      }
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @param value The rewardLv to set.
       * @return This builder for chaining.
       */
      public Builder setRewardLv(int value) {
        
        rewardLv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRewardLv() {
        
        rewardLv_ = 0;
        onChanged();
        return this;
      }

      private int point_ ;
      /**
       * <pre>
       *图鉴进度
       * </pre>
       *
       * <code>int32 point = 4;</code>
       * @return The point.
       */
      public int getPoint() {
        return point_;
      }
      /**
       * <pre>
       *图鉴进度
       * </pre>
       *
       * <code>int32 point = 4;</code>
       * @param value The point to set.
       * @return This builder for chaining.
       */
      public Builder setPoint(int value) {
        
        point_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴进度
       * </pre>
       *
       * <code>int32 point = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPoint() {
        
        point_ = 0;
        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:pb.HandbookIdentityRewardResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookIdentityRewardResponse)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookIdentityRewardResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookSuitActiveRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookSuitActiveRequest)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *套装ID
     * </pre>
     *
     * <code>int32 suit_id = 1;</code>
     * @return The suitId.
     */
    int getSuitId();
  }
  /**
   * <pre>
   *激活套装
   * </pre>
   *
   * Protobuf type {@code pb.HandbookSuitActiveRequest}
   */
  public  static final class HandbookSuitActiveRequest extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookSuitActiveRequest)
      HandbookSuitActiveRequestOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookSuitActiveRequest.newBuilder() to construct.
    private HandbookSuitActiveRequest(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookSuitActiveRequest() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookSuitActiveRequest(
        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: {

              suitId_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveRequest_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveRequest_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookSuitActiveRequest.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900005;</code>
       */
      ID(3900005),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900005;</code>
       */
      public static final int ID_VALUE = 3900005;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900005: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookSuitActiveRequest.Proto)
    }

    public static final int SUIT_ID_FIELD_NUMBER = 1;
    private int suitId_;
    /**
     * <pre>
     *套装ID
     * </pre>
     *
     * <code>int32 suit_id = 1;</code>
     * @return The suitId.
     */
    public int getSuitId() {
      return suitId_;
    }

    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 (suitId_ != 0) {
        output.writeInt32(1, suitId_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (suitId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, suitId_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest) obj;

      if (getSuitId()
          != other.getSuitId()) 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) + SUIT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSuitId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest prototype) {
      return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
    }
    @java.lang.Override
    public Builder toBuilder() {
      return this == DEFAULT_INSTANCE
          ? new Builder() : new Builder().mergeFrom(this);
    }

    @java.lang.Override
    protected Builder newBuilderForType(
        com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
      Builder builder = new Builder(parent);
      return builder;
    }
    /**
     * <pre>
     *激活套装
     * </pre>
     *
     * Protobuf type {@code pb.HandbookSuitActiveRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookSuitActiveRequest)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequestOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveRequest_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveRequest_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.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();
        suitId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveRequest_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest(this);
        result.suitId_ = suitId_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest.getDefaultInstance()) return this;
        if (other.getSuitId() != 0) {
          setSuitId(other.getSuitId());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int suitId_ ;
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @return The suitId.
       */
      public int getSuitId() {
        return suitId_;
      }
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @param value The suitId to set.
       * @return This builder for chaining.
       */
      public Builder setSuitId(int value) {
        
        suitId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuitId() {
        
        suitId_ = 0;
        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:pb.HandbookSuitActiveRequest)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookSuitActiveRequest)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveRequest getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface HandbookSuitActiveResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.HandbookSuitActiveResponse)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *套装ID
     * </pre>
     *
     * <code>int32 suit_id = 1;</code>
     * @return The suitId.
     */
    int getSuitId();
  }
  /**
   * Protobuf type {@code pb.HandbookSuitActiveResponse}
   */
  public  static final class HandbookSuitActiveResponse extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.HandbookSuitActiveResponse)
      HandbookSuitActiveResponseOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use HandbookSuitActiveResponse.newBuilder() to construct.
    private HandbookSuitActiveResponse(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private HandbookSuitActiveResponse() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private HandbookSuitActiveResponse(
        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: {

              suitId_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveResponse_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveResponse_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.Builder.class);
    }

    /**
     * Protobuf enum {@code pb.HandbookSuitActiveResponse.Proto}
     */
    public enum Proto
        implements com.google.protobuf.ProtocolMessageEnum {
      /**
       * <code>UNKNOWN = 0;</code>
       */
      UNKNOWN(0),
      /**
       * <code>ID = 3900005;</code>
       */
      ID(3900005),
      UNRECOGNIZED(-1),
      ;

      /**
       * <code>UNKNOWN = 0;</code>
       */
      public static final int UNKNOWN_VALUE = 0;
      /**
       * <code>ID = 3900005;</code>
       */
      public static final int ID_VALUE = 3900005;


      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static Proto valueOf(int value) {
        return forNumber(value);
      }

      /**
       * @param value The numeric wire value of the corresponding enum entry.
       * @return The enum associated with the given numeric wire value.
       */
      public static Proto forNumber(int value) {
        switch (value) {
          case 0: return UNKNOWN;
          case 3900005: return ID;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<Proto>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          Proto> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<Proto>() {
              public Proto findValueByNumber(int number) {
                return Proto.forNumber(number);
              }
            };

      public final com.google.protobuf.Descriptors.EnumValueDescriptor
          getValueDescriptor() {
        return getDescriptor().getValues().get(ordinal());
      }
      public final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptorForType() {
        return getDescriptor();
      }
      public static final com.google.protobuf.Descriptors.EnumDescriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.getDescriptor().getEnumTypes().get(0);
      }

      private static final Proto[] VALUES = values();

      public static Proto valueOf(
          com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
        if (desc.getType() != getDescriptor()) {
          throw new java.lang.IllegalArgumentException(
            "EnumValueDescriptor is not for this type.");
        }
        if (desc.getIndex() == -1) {
          return UNRECOGNIZED;
        }
        return VALUES[desc.getIndex()];
      }

      private final int value;

      private Proto(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:pb.HandbookSuitActiveResponse.Proto)
    }

    public static final int SUIT_ID_FIELD_NUMBER = 1;
    private int suitId_;
    /**
     * <pre>
     *套装ID
     * </pre>
     *
     * <code>int32 suit_id = 1;</code>
     * @return The suitId.
     */
    public int getSuitId() {
      return suitId_;
    }

    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 (suitId_ != 0) {
        output.writeInt32(1, suitId_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (suitId_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, suitId_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse other = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse) obj;

      if (getSuitId()
          != other.getSuitId()) 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) + SUIT_ID_FIELD_NUMBER;
      hash = (53 * hash) + getSuitId();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse 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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse 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(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse 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 pb.HandbookSuitActiveResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.HandbookSuitActiveResponse)
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponseOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveResponse_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveResponse_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.class, pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.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();
        suitId_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_HandbookSuitActiveResponse_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse result = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse(this);
        result.suitId_ = suitId_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse.getDefaultInstance()) return this;
        if (other.getSuitId() != 0) {
          setSuitId(other.getSuitId());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int suitId_ ;
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @return The suitId.
       */
      public int getSuitId() {
        return suitId_;
      }
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @param value The suitId to set.
       * @return This builder for chaining.
       */
      public Builder setSuitId(int value) {
        
        suitId_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *套装ID
       * </pre>
       *
       * <code>int32 suit_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuitId() {
        
        suitId_ = 0;
        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:pb.HandbookSuitActiveResponse)
    }

    // @@protoc_insertion_point(class_scope:pb.HandbookSuitActiveResponse)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.HandbookSuitActiveResponse getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbHandbookOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbHandbook)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    int getIdentity();

    /**
     * <pre>
     *积分
     * </pre>
     *
     * <code>int32 point = 2;</code>
     * @return The point.
     */
    int getPoint();

    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> 
        getDetailsList();
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDetails(int index);
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    int getDetailsCount();
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder> 
        getDetailsOrBuilderList();
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder getDetailsOrBuilder(
        int index);

    /**
     * <pre>
     *已经领取到的进度奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 4;</code>
     * @return The rewardLv.
     */
    int getRewardLv();

    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @return A list containing the suits.
     */
    java.util.List<java.lang.Integer> getSuitsList();
    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @return The count of suits.
     */
    int getSuitsCount();
    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @param index The index of the element to return.
     * @return The suits at the given index.
     */
    int getSuits(int index);
  }
  /**
   * Protobuf type {@code pb.PbHandbook}
   */
  public  static final class PbHandbook extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbHandbook)
      PbHandbookOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbHandbook.newBuilder() to construct.
    private PbHandbook(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbHandbook() {
      details_ = java.util.Collections.emptyList();
      suits_ = emptyIntList();
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbHandbook(
        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 8: {

              identity_ = input.readInt32();
              break;
            }
            case 16: {

              point_ = input.readInt32();
              break;
            }
            case 26: {
              if (!((mutable_bitField0_ & 0x00000001) != 0)) {
                details_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail>();
                mutable_bitField0_ |= 0x00000001;
              }
              details_.add(
                  input.readMessage(pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.parser(), extensionRegistry));
              break;
            }
            case 32: {

              rewardLv_ = input.readInt32();
              break;
            }
            case 40: {
              if (!((mutable_bitField0_ & 0x00000002) != 0)) {
                suits_ = newIntList();
                mutable_bitField0_ |= 0x00000002;
              }
              suits_.addInt(input.readInt32());
              break;
            }
            case 42: {
              int length = input.readRawVarint32();
              int limit = input.pushLimit(length);
              if (!((mutable_bitField0_ & 0x00000002) != 0) && input.getBytesUntilLimit() > 0) {
                suits_ = newIntList();
                mutable_bitField0_ |= 0x00000002;
              }
              while (input.getBytesUntilLimit() > 0) {
                suits_.addInt(input.readInt32());
              }
              input.popLimit(limit);
              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)) {
          details_ = java.util.Collections.unmodifiableList(details_);
        }
        if (((mutable_bitField0_ & 0x00000002) != 0)) {
          suits_.makeImmutable(); // C
        }
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbHandbook_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbHandbook_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.class, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder.class);
    }

    public static final int IDENTITY_FIELD_NUMBER = 1;
    private int identity_;
    /**
     * <pre>
     *图鉴标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    public int getIdentity() {
      return identity_;
    }

    public static final int POINT_FIELD_NUMBER = 2;
    private int point_;
    /**
     * <pre>
     *积分
     * </pre>
     *
     * <code>int32 point = 2;</code>
     * @return The point.
     */
    public int getPoint() {
      return point_;
    }

    public static final int DETAILS_FIELD_NUMBER = 3;
    private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> details_;
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> getDetailsList() {
      return details_;
    }
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder> 
        getDetailsOrBuilderList() {
      return details_;
    }
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    public int getDetailsCount() {
      return details_.size();
    }
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDetails(int index) {
      return details_.get(index);
    }
    /**
     * <pre>
     *详情
     * </pre>
     *
     * <code>repeated .pb.PbBookDetail details = 3;</code>
     */
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder getDetailsOrBuilder(
        int index) {
      return details_.get(index);
    }

    public static final int REWARD_LV_FIELD_NUMBER = 4;
    private int rewardLv_;
    /**
     * <pre>
     *已经领取到的进度奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 4;</code>
     * @return The rewardLv.
     */
    public int getRewardLv() {
      return rewardLv_;
    }

    public static final int SUITS_FIELD_NUMBER = 5;
    private com.google.protobuf.Internal.IntList suits_;
    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @return A list containing the suits.
     */
    public java.util.List<java.lang.Integer>
        getSuitsList() {
      return suits_;
    }
    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @return The count of suits.
     */
    public int getSuitsCount() {
      return suits_.size();
    }
    /**
     * <pre>
     *已经激活的套装
     * </pre>
     *
     * <code>repeated int32 suits = 5;</code>
     * @param index The index of the element to return.
     * @return The suits at the given index.
     */
    public int getSuits(int index) {
      return suits_.getInt(index);
    }
    private int suitsMemoizedSerializedSize = -1;

    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 {
      getSerializedSize();
      if (identity_ != 0) {
        output.writeInt32(1, identity_);
      }
      if (point_ != 0) {
        output.writeInt32(2, point_);
      }
      for (int i = 0; i < details_.size(); i++) {
        output.writeMessage(3, details_.get(i));
      }
      if (rewardLv_ != 0) {
        output.writeInt32(4, rewardLv_);
      }
      if (getSuitsList().size() > 0) {
        output.writeUInt32NoTag(42);
        output.writeUInt32NoTag(suitsMemoizedSerializedSize);
      }
      for (int i = 0; i < suits_.size(); i++) {
        output.writeInt32NoTag(suits_.getInt(i));
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (identity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, identity_);
      }
      if (point_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, point_);
      }
      for (int i = 0; i < details_.size(); i++) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(3, details_.get(i));
      }
      if (rewardLv_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(4, rewardLv_);
      }
      {
        int dataSize = 0;
        for (int i = 0; i < suits_.size(); i++) {
          dataSize += com.google.protobuf.CodedOutputStream
            .computeInt32SizeNoTag(suits_.getInt(i));
        }
        size += dataSize;
        if (!getSuitsList().isEmpty()) {
          size += 1;
          size += com.google.protobuf.CodedOutputStream
              .computeInt32SizeNoTag(dataSize);
        }
        suitsMemoizedSerializedSize = dataSize;
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook other = (pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook) obj;

      if (getIdentity()
          != other.getIdentity()) return false;
      if (getPoint()
          != other.getPoint()) return false;
      if (!getDetailsList()
          .equals(other.getDetailsList())) return false;
      if (getRewardLv()
          != other.getRewardLv()) return false;
      if (!getSuitsList()
          .equals(other.getSuitsList())) 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) + IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getIdentity();
      hash = (37 * hash) + POINT_FIELD_NUMBER;
      hash = (53 * hash) + getPoint();
      if (getDetailsCount() > 0) {
        hash = (37 * hash) + DETAILS_FIELD_NUMBER;
        hash = (53 * hash) + getDetailsList().hashCode();
      }
      hash = (37 * hash) + REWARD_LV_FIELD_NUMBER;
      hash = (53 * hash) + getRewardLv();
      if (getSuitsCount() > 0) {
        hash = (37 * hash) + SUITS_FIELD_NUMBER;
        hash = (53 * hash) + getSuitsList().hashCode();
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook 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 pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook 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 pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook 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(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook 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 pb.PbHandbook}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbHandbook)
        pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbookOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbHandbook_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbHandbook_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.class, pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.newBuilder()
      private Builder() {
        maybeForceBuilderInitialization();
      }

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

        point_ = 0;

        if (detailsBuilder_ == null) {
          details_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
        } else {
          detailsBuilder_.clear();
        }
        rewardLv_ = 0;

        suits_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbHandbook_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook result = new pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook(this);
        int from_bitField0_ = bitField0_;
        result.identity_ = identity_;
        result.point_ = point_;
        if (detailsBuilder_ == null) {
          if (((bitField0_ & 0x00000001) != 0)) {
            details_ = java.util.Collections.unmodifiableList(details_);
            bitField0_ = (bitField0_ & ~0x00000001);
          }
          result.details_ = details_;
        } else {
          result.details_ = detailsBuilder_.build();
        }
        result.rewardLv_ = rewardLv_;
        if (((bitField0_ & 0x00000002) != 0)) {
          suits_.makeImmutable();
          bitField0_ = (bitField0_ & ~0x00000002);
        }
        result.suits_ = suits_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook.getDefaultInstance()) return this;
        if (other.getIdentity() != 0) {
          setIdentity(other.getIdentity());
        }
        if (other.getPoint() != 0) {
          setPoint(other.getPoint());
        }
        if (detailsBuilder_ == null) {
          if (!other.details_.isEmpty()) {
            if (details_.isEmpty()) {
              details_ = other.details_;
              bitField0_ = (bitField0_ & ~0x00000001);
            } else {
              ensureDetailsIsMutable();
              details_.addAll(other.details_);
            }
            onChanged();
          }
        } else {
          if (!other.details_.isEmpty()) {
            if (detailsBuilder_.isEmpty()) {
              detailsBuilder_.dispose();
              detailsBuilder_ = null;
              details_ = other.details_;
              bitField0_ = (bitField0_ & ~0x00000001);
              detailsBuilder_ = 
                com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                   getDetailsFieldBuilder() : null;
            } else {
              detailsBuilder_.addAllMessages(other.details_);
            }
          }
        }
        if (other.getRewardLv() != 0) {
          setRewardLv(other.getRewardLv());
        }
        if (!other.suits_.isEmpty()) {
          if (suits_.isEmpty()) {
            suits_ = other.suits_;
            bitField0_ = (bitField0_ & ~0x00000002);
          } else {
            ensureSuitsIsMutable();
            suits_.addAll(other.suits_);
          }
          onChanged();
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int bitField0_;

      private int identity_ ;
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return The identity.
       */
      public int getIdentity() {
        return identity_;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @param value The identity to set.
       * @return This builder for chaining.
       */
      public Builder setIdentity(int value) {
        
        identity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentity() {
        
        identity_ = 0;
        onChanged();
        return this;
      }

      private int point_ ;
      /**
       * <pre>
       *积分
       * </pre>
       *
       * <code>int32 point = 2;</code>
       * @return The point.
       */
      public int getPoint() {
        return point_;
      }
      /**
       * <pre>
       *积分
       * </pre>
       *
       * <code>int32 point = 2;</code>
       * @param value The point to set.
       * @return This builder for chaining.
       */
      public Builder setPoint(int value) {
        
        point_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *积分
       * </pre>
       *
       * <code>int32 point = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearPoint() {
        
        point_ = 0;
        onChanged();
        return this;
      }

      private java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> details_ =
        java.util.Collections.emptyList();
      private void ensureDetailsIsMutable() {
        if (!((bitField0_ & 0x00000001) != 0)) {
          details_ = new java.util.ArrayList<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail>(details_);
          bitField0_ |= 0x00000001;
         }
      }

      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder> detailsBuilder_;

      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> getDetailsList() {
        if (detailsBuilder_ == null) {
          return java.util.Collections.unmodifiableList(details_);
        } else {
          return detailsBuilder_.getMessageList();
        }
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public int getDetailsCount() {
        if (detailsBuilder_ == null) {
          return details_.size();
        } else {
          return detailsBuilder_.getCount();
        }
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDetails(int index) {
        if (detailsBuilder_ == null) {
          return details_.get(index);
        } else {
          return detailsBuilder_.getMessage(index);
        }
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder setDetails(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail value) {
        if (detailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDetailsIsMutable();
          details_.set(index, value);
          onChanged();
        } else {
          detailsBuilder_.setMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder setDetails(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder builderForValue) {
        if (detailsBuilder_ == null) {
          ensureDetailsIsMutable();
          details_.set(index, builderForValue.build());
          onChanged();
        } else {
          detailsBuilder_.setMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder addDetails(pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail value) {
        if (detailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDetailsIsMutable();
          details_.add(value);
          onChanged();
        } else {
          detailsBuilder_.addMessage(value);
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder addDetails(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail value) {
        if (detailsBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          ensureDetailsIsMutable();
          details_.add(index, value);
          onChanged();
        } else {
          detailsBuilder_.addMessage(index, value);
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder addDetails(
          pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder builderForValue) {
        if (detailsBuilder_ == null) {
          ensureDetailsIsMutable();
          details_.add(builderForValue.build());
          onChanged();
        } else {
          detailsBuilder_.addMessage(builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder addDetails(
          int index, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder builderForValue) {
        if (detailsBuilder_ == null) {
          ensureDetailsIsMutable();
          details_.add(index, builderForValue.build());
          onChanged();
        } else {
          detailsBuilder_.addMessage(index, builderForValue.build());
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder addAllDetails(
          java.lang.Iterable<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail> values) {
        if (detailsBuilder_ == null) {
          ensureDetailsIsMutable();
          com.google.protobuf.AbstractMessageLite.Builder.addAll(
              values, details_);
          onChanged();
        } else {
          detailsBuilder_.addAllMessages(values);
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder clearDetails() {
        if (detailsBuilder_ == null) {
          details_ = java.util.Collections.emptyList();
          bitField0_ = (bitField0_ & ~0x00000001);
          onChanged();
        } else {
          detailsBuilder_.clear();
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public Builder removeDetails(int index) {
        if (detailsBuilder_ == null) {
          ensureDetailsIsMutable();
          details_.remove(index);
          onChanged();
        } else {
          detailsBuilder_.remove(index);
        }
        return this;
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder getDetailsBuilder(
          int index) {
        return getDetailsFieldBuilder().getBuilder(index);
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder getDetailsOrBuilder(
          int index) {
        if (detailsBuilder_ == null) {
          return details_.get(index);  } else {
          return detailsBuilder_.getMessageOrBuilder(index);
        }
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public java.util.List<? extends pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder> 
           getDetailsOrBuilderList() {
        if (detailsBuilder_ != null) {
          return detailsBuilder_.getMessageOrBuilderList();
        } else {
          return java.util.Collections.unmodifiableList(details_);
        }
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder addDetailsBuilder() {
        return getDetailsFieldBuilder().addBuilder(
            pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.getDefaultInstance());
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder addDetailsBuilder(
          int index) {
        return getDetailsFieldBuilder().addBuilder(
            index, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.getDefaultInstance());
      }
      /**
       * <pre>
       *详情
       * </pre>
       *
       * <code>repeated .pb.PbBookDetail details = 3;</code>
       */
      public java.util.List<pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder> 
           getDetailsBuilderList() {
        return getDetailsFieldBuilder().getBuilderList();
      }
      private com.google.protobuf.RepeatedFieldBuilderV3<
          pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder> 
          getDetailsFieldBuilder() {
        if (detailsBuilder_ == null) {
          detailsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
              pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder>(
                  details_,
                  ((bitField0_ & 0x00000001) != 0),
                  getParentForChildren(),
                  isClean());
          details_ = null;
        }
        return detailsBuilder_;
      }

      private int rewardLv_ ;
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 4;</code>
       * @return The rewardLv.
       */
      public int getRewardLv() {
        return rewardLv_;
      }
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 4;</code>
       * @param value The rewardLv to set.
       * @return This builder for chaining.
       */
      public Builder setRewardLv(int value) {
        
        rewardLv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经领取到的进度奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearRewardLv() {
        
        rewardLv_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.Internal.IntList suits_ = emptyIntList();
      private void ensureSuitsIsMutable() {
        if (!((bitField0_ & 0x00000002) != 0)) {
          suits_ = mutableCopy(suits_);
          bitField0_ |= 0x00000002;
         }
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @return A list containing the suits.
       */
      public java.util.List<java.lang.Integer>
          getSuitsList() {
        return ((bitField0_ & 0x00000002) != 0) ?
                 java.util.Collections.unmodifiableList(suits_) : suits_;
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @return The count of suits.
       */
      public int getSuitsCount() {
        return suits_.size();
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @param index The index of the element to return.
       * @return The suits at the given index.
       */
      public int getSuits(int index) {
        return suits_.getInt(index);
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @param index The index to set the value at.
       * @param value The suits to set.
       * @return This builder for chaining.
       */
      public Builder setSuits(
          int index, int value) {
        ensureSuitsIsMutable();
        suits_.setInt(index, value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @param value The suits to add.
       * @return This builder for chaining.
       */
      public Builder addSuits(int value) {
        ensureSuitsIsMutable();
        suits_.addInt(value);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @param values The suits to add.
       * @return This builder for chaining.
       */
      public Builder addAllSuits(
          java.lang.Iterable<? extends java.lang.Integer> values) {
        ensureSuitsIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, suits_);
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经激活的套装
       * </pre>
       *
       * <code>repeated int32 suits = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearSuits() {
        suits_ = emptyIntList();
        bitField0_ = (bitField0_ & ~0x00000002);
        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:pb.PbHandbook)
    }

    // @@protoc_insertion_point(class_scope:pb.PbHandbook)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbHandbook getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface PbBookDetailOrBuilder extends
      // @@protoc_insertion_point(interface_extends:pb.PbBookDetail)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    int getIdentity();

    /**
     * <pre>
     *等级
     * </pre>
     *
     * <code>int32 level = 2;</code>
     * @return The level.
     */
    int getLevel();

    /**
     * <pre>
     *已经领取到的奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 3;</code>
     * @return The rewardLv.
     */
    int getRewardLv();
  }
  /**
   * Protobuf type {@code pb.PbBookDetail}
   */
  public  static final class PbBookDetail extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:pb.PbBookDetail)
      PbBookDetailOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use PbBookDetail.newBuilder() to construct.
    private PbBookDetail(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private PbBookDetail() {
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private PbBookDetail(
        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: {

              identity_ = input.readInt32();
              break;
            }
            case 16: {

              level_ = input.readInt32();
              break;
            }
            case 24: {

              rewardLv_ = input.readInt32();
              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 pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbBookDetail_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbBookDetail_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.class, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder.class);
    }

    public static final int IDENTITY_FIELD_NUMBER = 1;
    private int identity_;
    /**
     * <pre>
     *图鉴元素标识
     * </pre>
     *
     * <code>int32 identity = 1;</code>
     * @return The identity.
     */
    public int getIdentity() {
      return identity_;
    }

    public static final int LEVEL_FIELD_NUMBER = 2;
    private int level_;
    /**
     * <pre>
     *等级
     * </pre>
     *
     * <code>int32 level = 2;</code>
     * @return The level.
     */
    public int getLevel() {
      return level_;
    }

    public static final int REWARD_LV_FIELD_NUMBER = 3;
    private int rewardLv_;
    /**
     * <pre>
     *已经领取到的奖励等级
     * </pre>
     *
     * <code>int32 reward_lv = 3;</code>
     * @return The rewardLv.
     */
    public int getRewardLv() {
      return rewardLv_;
    }

    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 (identity_ != 0) {
        output.writeInt32(1, identity_);
      }
      if (level_ != 0) {
        output.writeInt32(2, level_);
      }
      if (rewardLv_ != 0) {
        output.writeInt32(3, rewardLv_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (identity_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, identity_);
      }
      if (level_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, level_);
      }
      if (rewardLv_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, rewardLv_);
      }
      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 pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail)) {
        return super.equals(obj);
      }
      pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail other = (pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail) obj;

      if (getIdentity()
          != other.getIdentity()) return false;
      if (getLevel()
          != other.getLevel()) return false;
      if (getRewardLv()
          != other.getRewardLv()) 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) + IDENTITY_FIELD_NUMBER;
      hash = (53 * hash) + getIdentity();
      hash = (37 * hash) + LEVEL_FIELD_NUMBER;
      hash = (53 * hash) + getLevel();
      hash = (37 * hash) + REWARD_LV_FIELD_NUMBER;
      hash = (53 * hash) + getRewardLv();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail 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 pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail 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 pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail 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(pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail 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 pb.PbBookDetail}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:pb.PbBookDetail)
        pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetailOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbBookDetail_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbBookDetail_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.class, pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.Builder.class);
      }

      // Construct using pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.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();
        identity_ = 0;

        level_ = 0;

        rewardLv_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.internal_static_pb_PbBookDetail_descriptor;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDefaultInstanceForType() {
        return pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.getDefaultInstance();
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail build() {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail buildPartial() {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail result = new pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail(this);
        result.identity_ = identity_;
        result.level_ = level_;
        result.rewardLv_ = rewardLv_;
        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 pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail) {
          return mergeFrom((pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail other) {
        if (other == pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail.getDefaultInstance()) return this;
        if (other.getIdentity() != 0) {
          setIdentity(other.getIdentity());
        }
        if (other.getLevel() != 0) {
          setLevel(other.getLevel());
        }
        if (other.getRewardLv() != 0) {
          setRewardLv(other.getRewardLv());
        }
        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 {
        pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int identity_ ;
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return The identity.
       */
      public int getIdentity() {
        return identity_;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @param value The identity to set.
       * @return This builder for chaining.
       */
      public Builder setIdentity(int value) {
        
        identity_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *图鉴元素标识
       * </pre>
       *
       * <code>int32 identity = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearIdentity() {
        
        identity_ = 0;
        onChanged();
        return this;
      }

      private int level_ ;
      /**
       * <pre>
       *等级
       * </pre>
       *
       * <code>int32 level = 2;</code>
       * @return The level.
       */
      public int getLevel() {
        return level_;
      }
      /**
       * <pre>
       *等级
       * </pre>
       *
       * <code>int32 level = 2;</code>
       * @param value The level to set.
       * @return This builder for chaining.
       */
      public Builder setLevel(int value) {
        
        level_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *等级
       * </pre>
       *
       * <code>int32 level = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearLevel() {
        
        level_ = 0;
        onChanged();
        return this;
      }

      private int rewardLv_ ;
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @return The rewardLv.
       */
      public int getRewardLv() {
        return rewardLv_;
      }
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @param value The rewardLv to set.
       * @return This builder for chaining.
       */
      public Builder setRewardLv(int value) {
        
        rewardLv_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       *已经领取到的奖励等级
       * </pre>
       *
       * <code>int32 reward_lv = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearRewardLv() {
        
        rewardLv_ = 0;
        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:pb.PbBookDetail)
    }

    // @@protoc_insertion_point(class_scope:pb.PbBookDetail)
    private static final pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail();
    }

    public static pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public pb.xiugou.x1.protobuf.handbook.Handbook.PbBookDetail getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookInfoResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookInfoResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookLevelUpRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookLevelUpRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookLevelUpResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookLevelUpResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookTakeRewardRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookTakeRewardRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookTakeRewardResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookTakeRewardResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookIdentityRewardRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookIdentityRewardRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookIdentityRewardResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookIdentityRewardResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookSuitActiveRequest_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookSuitActiveRequest_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_HandbookSuitActiveResponse_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_HandbookSuitActiveResponse_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbHandbook_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbHandbook_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_pb_PbBookDetail_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_pb_PbBookDetail_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\016Handbook.proto\022\002pb\"Z\n\024HandbookInfoResp" +
      "onse\022!\n\thandbooks\030\001 \003(\0132\016.pb.PbHandbook\"" +
      "\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\341\204\356\001\"f\n\026Hand" +
      "bookLevelUpRequest\022\025\n\rbook_identity\030\001 \001(" +
      "\005\022\024\n\014ele_identity\030\002 \001(\005\"\037\n\005Proto\022\013\n\007UNKN" +
      "OWN\020\000\022\t\n\002ID\020\342\204\356\001\"]\n\027HandbookLevelUpRespo" +
      "nse\022!\n\thandbooks\030\001 \003(\0132\016.pb.PbHandbook\"\037" +
      "\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\342\204\356\001\"S\n\031Handb" +
      "ookTakeRewardRequest\022\025\n\rbook_identity\030\001 " +
      "\001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\343\204\356\001\"g\n\032" +
      "HandbookTakeRewardResponse\022\025\n\rbook_ident" +
      "ity\030\001 \001(\005\022\021\n\treward_lv\030\002 \001(\005\"\037\n\005Proto\022\013\n" +
      "\007UNKNOWN\020\000\022\t\n\002ID\020\343\204\356\001\"m\n\035HandbookIdentit" +
      "yRewardRequest\022\025\n\rbook_identity\030\001 \001(\005\022\024\n" +
      "\014ele_identity\030\002 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020" +
      "\000\022\t\n\002ID\020\344\204\356\001\"\220\001\n\036HandbookIdentityRewardR" +
      "esponse\022\025\n\rbook_identity\030\001 \001(\005\022\024\n\014ele_id" +
      "entity\030\002 \001(\005\022\021\n\treward_lv\030\003 \001(\005\022\r\n\005point" +
      "\030\004 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\344\204\356\001\"" +
      "M\n\031HandbookSuitActiveRequest\022\017\n\007suit_id\030" +
      "\001 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\345\204\356\001\"N" +
      "\n\032HandbookSuitActiveResponse\022\017\n\007suit_id\030" +
      "\001 \001(\005\"\037\n\005Proto\022\013\n\007UNKNOWN\020\000\022\t\n\002ID\020\345\204\356\001\"r" +
      "\n\nPbHandbook\022\020\n\010identity\030\001 \001(\005\022\r\n\005point\030" +
      "\002 \001(\005\022!\n\007details\030\003 \003(\0132\020.pb.PbBookDetail" +
      "\022\021\n\treward_lv\030\004 \001(\005\022\r\n\005suits\030\005 \003(\005\"B\n\014Pb" +
      "BookDetail\022\020\n\010identity\030\001 \001(\005\022\r\n\005level\030\002 " +
      "\001(\005\022\021\n\treward_lv\030\003 \001(\005B8\n\036pb.xiugou.x1.p" +
      "rotobuf.handbook\252\002\025pb.xiugou.x1.protobuf" +
      "b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
        });
    internal_static_pb_HandbookInfoResponse_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_pb_HandbookInfoResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookInfoResponse_descriptor,
        new java.lang.String[] { "Handbooks", });
    internal_static_pb_HandbookLevelUpRequest_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_pb_HandbookLevelUpRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookLevelUpRequest_descriptor,
        new java.lang.String[] { "BookIdentity", "EleIdentity", });
    internal_static_pb_HandbookLevelUpResponse_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_pb_HandbookLevelUpResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookLevelUpResponse_descriptor,
        new java.lang.String[] { "Handbooks", });
    internal_static_pb_HandbookTakeRewardRequest_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_pb_HandbookTakeRewardRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookTakeRewardRequest_descriptor,
        new java.lang.String[] { "BookIdentity", });
    internal_static_pb_HandbookTakeRewardResponse_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_pb_HandbookTakeRewardResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookTakeRewardResponse_descriptor,
        new java.lang.String[] { "BookIdentity", "RewardLv", });
    internal_static_pb_HandbookIdentityRewardRequest_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_pb_HandbookIdentityRewardRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookIdentityRewardRequest_descriptor,
        new java.lang.String[] { "BookIdentity", "EleIdentity", });
    internal_static_pb_HandbookIdentityRewardResponse_descriptor =
      getDescriptor().getMessageTypes().get(6);
    internal_static_pb_HandbookIdentityRewardResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookIdentityRewardResponse_descriptor,
        new java.lang.String[] { "BookIdentity", "EleIdentity", "RewardLv", "Point", });
    internal_static_pb_HandbookSuitActiveRequest_descriptor =
      getDescriptor().getMessageTypes().get(7);
    internal_static_pb_HandbookSuitActiveRequest_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookSuitActiveRequest_descriptor,
        new java.lang.String[] { "SuitId", });
    internal_static_pb_HandbookSuitActiveResponse_descriptor =
      getDescriptor().getMessageTypes().get(8);
    internal_static_pb_HandbookSuitActiveResponse_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_HandbookSuitActiveResponse_descriptor,
        new java.lang.String[] { "SuitId", });
    internal_static_pb_PbHandbook_descriptor =
      getDescriptor().getMessageTypes().get(9);
    internal_static_pb_PbHandbook_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbHandbook_descriptor,
        new java.lang.String[] { "Identity", "Point", "Details", "RewardLv", "Suits", });
    internal_static_pb_PbBookDetail_descriptor =
      getDescriptor().getMessageTypes().get(10);
    internal_static_pb_PbBookDetail_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_pb_PbBookDetail_descriptor,
        new java.lang.String[] { "Identity", "Level", "RewardLv", });
  }

  // @@protoc_insertion_point(outer_class_scope)
}
