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

package cash.z.wallet.sdk.rpc;

public final class Darkside {
  private Darkside() {}
  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 DarksideMetaStateOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideMetaState)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 saplingActivation = 1;</code>
     * @return The saplingActivation.
     */
    int getSaplingActivation();

    /**
     * <code>string branchID = 2;</code>
     * @return The branchID.
     */
    java.lang.String getBranchID();
    /**
     * <code>string branchID = 2;</code>
     * @return The bytes for branchID.
     */
    com.google.protobuf.ByteString
        getBranchIDBytes();

    /**
     * <code>string chainName = 3;</code>
     * @return The chainName.
     */
    java.lang.String getChainName();
    /**
     * <code>string chainName = 3;</code>
     * @return The bytes for chainName.
     */
    com.google.protobuf.ByteString
        getChainNameBytes();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideMetaState}
   */
  public static final class DarksideMetaState extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideMetaState)
      DarksideMetaStateOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideMetaState.newBuilder() to construct.
    private DarksideMetaState(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideMetaState() {
      branchID_ = "";
      chainName_ = "";
    }

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

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

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

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

              chainName_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.class, cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.Builder.class);
    }

    public static final int SAPLINGACTIVATION_FIELD_NUMBER = 1;
    private int saplingActivation_;
    /**
     * <code>int32 saplingActivation = 1;</code>
     * @return The saplingActivation.
     */
    @java.lang.Override
    public int getSaplingActivation() {
      return saplingActivation_;
    }

    public static final int BRANCHID_FIELD_NUMBER = 2;
    private volatile java.lang.Object branchID_;
    /**
     * <code>string branchID = 2;</code>
     * @return The branchID.
     */
    @java.lang.Override
    public java.lang.String getBranchID() {
      java.lang.Object ref = branchID_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        branchID_ = s;
        return s;
      }
    }
    /**
     * <code>string branchID = 2;</code>
     * @return The bytes for branchID.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBranchIDBytes() {
      java.lang.Object ref = branchID_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        branchID_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int CHAINNAME_FIELD_NUMBER = 3;
    private volatile java.lang.Object chainName_;
    /**
     * <code>string chainName = 3;</code>
     * @return The chainName.
     */
    @java.lang.Override
    public java.lang.String getChainName() {
      java.lang.Object ref = chainName_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        chainName_ = s;
        return s;
      }
    }
    /**
     * <code>string chainName = 3;</code>
     * @return The bytes for chainName.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getChainNameBytes() {
      java.lang.Object ref = chainName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        chainName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (saplingActivation_ != 0) {
        output.writeInt32(1, saplingActivation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(branchID_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, branchID_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(chainName_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 3, chainName_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (saplingActivation_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, saplingActivation_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(branchID_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, branchID_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(chainName_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(3, chainName_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState other = (cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState) obj;

      if (getSaplingActivation()
          != other.getSaplingActivation()) return false;
      if (!getBranchID()
          .equals(other.getBranchID())) return false;
      if (!getChainName()
          .equals(other.getChainName())) 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) + SAPLINGACTIVATION_FIELD_NUMBER;
      hash = (53 * hash) + getSaplingActivation();
      hash = (37 * hash) + BRANCHID_FIELD_NUMBER;
      hash = (53 * hash) + getBranchID().hashCode();
      hash = (37 * hash) + CHAINNAME_FIELD_NUMBER;
      hash = (53 * hash) + getChainName().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState 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 cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState 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 cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState 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(cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState 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 cash.z.wallet.sdk.rpc.DarksideMetaState}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideMetaState)
        cash.z.wallet.sdk.rpc.Darkside.DarksideMetaStateOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.class, cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.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();
        saplingActivation_ = 0;

        branchID_ = "";

        chainName_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState result = new cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState(this);
        result.saplingActivation_ = saplingActivation_;
        result.branchID_ = branchID_;
        result.chainName_ = chainName_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState.getDefaultInstance()) return this;
        if (other.getSaplingActivation() != 0) {
          setSaplingActivation(other.getSaplingActivation());
        }
        if (!other.getBranchID().isEmpty()) {
          branchID_ = other.branchID_;
          onChanged();
        }
        if (!other.getChainName().isEmpty()) {
          chainName_ = other.chainName_;
          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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int saplingActivation_ ;
      /**
       * <code>int32 saplingActivation = 1;</code>
       * @return The saplingActivation.
       */
      @java.lang.Override
      public int getSaplingActivation() {
        return saplingActivation_;
      }
      /**
       * <code>int32 saplingActivation = 1;</code>
       * @param value The saplingActivation to set.
       * @return This builder for chaining.
       */
      public Builder setSaplingActivation(int value) {
        
        saplingActivation_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 saplingActivation = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearSaplingActivation() {
        
        saplingActivation_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object branchID_ = "";
      /**
       * <code>string branchID = 2;</code>
       * @return The branchID.
       */
      public java.lang.String getBranchID() {
        java.lang.Object ref = branchID_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          branchID_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string branchID = 2;</code>
       * @return The bytes for branchID.
       */
      public com.google.protobuf.ByteString
          getBranchIDBytes() {
        java.lang.Object ref = branchID_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          branchID_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string branchID = 2;</code>
       * @param value The branchID to set.
       * @return This builder for chaining.
       */
      public Builder setBranchID(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        branchID_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string branchID = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearBranchID() {
        
        branchID_ = getDefaultInstance().getBranchID();
        onChanged();
        return this;
      }
      /**
       * <code>string branchID = 2;</code>
       * @param value The bytes for branchID to set.
       * @return This builder for chaining.
       */
      public Builder setBranchIDBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        branchID_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object chainName_ = "";
      /**
       * <code>string chainName = 3;</code>
       * @return The chainName.
       */
      public java.lang.String getChainName() {
        java.lang.Object ref = chainName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          chainName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string chainName = 3;</code>
       * @return The bytes for chainName.
       */
      public com.google.protobuf.ByteString
          getChainNameBytes() {
        java.lang.Object ref = chainName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          chainName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string chainName = 3;</code>
       * @param value The chainName to set.
       * @return This builder for chaining.
       */
      public Builder setChainName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        chainName_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string chainName = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearChainName() {
        
        chainName_ = getDefaultInstance().getChainName();
        onChanged();
        return this;
      }
      /**
       * <code>string chainName = 3;</code>
       * @param value The bytes for chainName to set.
       * @return This builder for chaining.
       */
      public Builder setChainNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        chainName_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.DarksideMetaState)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideMetaState)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideMetaState getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DarksideBlockOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideBlock)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string block = 1;</code>
     * @return The block.
     */
    java.lang.String getBlock();
    /**
     * <code>string block = 1;</code>
     * @return The bytes for block.
     */
    com.google.protobuf.ByteString
        getBlockBytes();
  }
  /**
   * <pre>
   * A block is a hex-encoded string.
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideBlock}
   */
  public static final class DarksideBlock extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideBlock)
      DarksideBlockOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideBlock.newBuilder() to construct.
    private DarksideBlock(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideBlock() {
      block_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DarksideBlock(
        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 10: {
              java.lang.String s = input.readStringRequireUtf8();

              block_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.class, cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.Builder.class);
    }

    public static final int BLOCK_FIELD_NUMBER = 1;
    private volatile java.lang.Object block_;
    /**
     * <code>string block = 1;</code>
     * @return The block.
     */
    @java.lang.Override
    public java.lang.String getBlock() {
      java.lang.Object ref = block_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        block_ = s;
        return s;
      }
    }
    /**
     * <code>string block = 1;</code>
     * @return The bytes for block.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getBlockBytes() {
      java.lang.Object ref = block_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        block_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(block_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, block_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlock)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideBlock other = (cash.z.wallet.sdk.rpc.Darkside.DarksideBlock) obj;

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

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock 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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock 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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock 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(cash.z.wallet.sdk.rpc.Darkside.DarksideBlock 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>
     * A block is a hex-encoded string.
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideBlock}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideBlock)
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlockOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.class, cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.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();
        block_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlock getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlock build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlock result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlock buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlock result = new cash.z.wallet.sdk.rpc.Darkside.DarksideBlock(this);
        result.block_ = block_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlock) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideBlock)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideBlock other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideBlock.getDefaultInstance()) return this;
        if (!other.getBlock().isEmpty()) {
          block_ = other.block_;
          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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlock parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideBlock) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object block_ = "";
      /**
       * <code>string block = 1;</code>
       * @return The block.
       */
      public java.lang.String getBlock() {
        java.lang.Object ref = block_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          block_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string block = 1;</code>
       * @return The bytes for block.
       */
      public com.google.protobuf.ByteString
          getBlockBytes() {
        java.lang.Object ref = block_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          block_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string block = 1;</code>
       * @param value The block to set.
       * @return This builder for chaining.
       */
      public Builder setBlock(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        block_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string block = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearBlock() {
        
        block_ = getDefaultInstance().getBlock();
        onChanged();
        return this;
      }
      /**
       * <code>string block = 1;</code>
       * @param value The bytes for block to set.
       * @return This builder for chaining.
       */
      public Builder setBlockBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        block_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.DarksideBlock)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideBlock)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideBlock DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideBlock();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlock getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideBlock getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DarksideBlocksURLOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideBlocksURL)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>string url = 1;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <code>string url = 1;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();
  }
  /**
   * <pre>
   * DarksideBlocksURL is typically something like:
   * https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideBlocksURL}
   */
  public static final class DarksideBlocksURL extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideBlocksURL)
      DarksideBlocksURLOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideBlocksURL.newBuilder() to construct.
    private DarksideBlocksURL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideBlocksURL() {
      url_ = "";
    }

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

    @java.lang.Override
    public final com.google.protobuf.UnknownFieldSet
    getUnknownFields() {
      return this.unknownFields;
    }
    private DarksideBlocksURL(
        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 10: {
              java.lang.String s = input.readStringRequireUtf8();

              url_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.class, cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.Builder.class);
    }

    public static final int URL_FIELD_NUMBER = 1;
    private volatile java.lang.Object url_;
    /**
     * <code>string url = 1;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        url_ = s;
        return s;
      }
    }
    /**
     * <code>string url = 1;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

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

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

      size = 0;
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, url_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL other = (cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL) obj;

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

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL 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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL 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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL 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(cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL 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>
     * DarksideBlocksURL is typically something like:
     * https://raw.githubusercontent.com/zcash-hackworks/darksidewalletd-test-data/master/basic-reorg/before-reorg.txt
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideBlocksURL}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideBlocksURL)
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURLOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.class, cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.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();
        url_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL result = new cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL(this);
        result.url_ = url_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL.getDefaultInstance()) return this;
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * <code>string url = 1;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string url = 1;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string url = 1;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string url = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * <code>string url = 1;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        url_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.DarksideBlocksURL)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideBlocksURL)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideBlocksURL getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DarksideTransactionsURLOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideTransactionsURL)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    int getHeight();

    /**
     * <code>string url = 2;</code>
     * @return The url.
     */
    java.lang.String getUrl();
    /**
     * <code>string url = 2;</code>
     * @return The bytes for url.
     */
    com.google.protobuf.ByteString
        getUrlBytes();
  }
  /**
   * <pre>
   * DarksideTransactionsURL refers to an HTTP source that contains a list
   * of hex-encoded transactions, one per line, that are to be associated
   * with the given height (fake-mined into the block at that height)
   * </pre>
   *
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideTransactionsURL}
   */
  public static final class DarksideTransactionsURL extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideTransactionsURL)
      DarksideTransactionsURLOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideTransactionsURL.newBuilder() to construct.
    private DarksideTransactionsURL(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideTransactionsURL() {
      url_ = "";
    }

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

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

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

              url_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.class, cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.Builder.class);
    }

    public static final int HEIGHT_FIELD_NUMBER = 1;
    private int height_;
    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    @java.lang.Override
    public int getHeight() {
      return height_;
    }

    public static final int URL_FIELD_NUMBER = 2;
    private volatile java.lang.Object url_;
    /**
     * <code>string url = 2;</code>
     * @return The url.
     */
    @java.lang.Override
    public java.lang.String getUrl() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        return (java.lang.String) ref;
      } else {
        com.google.protobuf.ByteString bs = 
            (com.google.protobuf.ByteString) ref;
        java.lang.String s = bs.toStringUtf8();
        url_ = s;
        return s;
      }
    }
    /**
     * <code>string url = 2;</code>
     * @return The bytes for url.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getUrlBytes() {
      java.lang.Object ref = url_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        url_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (height_ != 0) {
        output.writeInt32(1, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 2, url_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, height_);
      }
      if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(url_)) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, url_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL other = (cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL) obj;

      if (getHeight()
          != other.getHeight()) return false;
      if (!getUrl()
          .equals(other.getUrl())) 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) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (37 * hash) + URL_FIELD_NUMBER;
      hash = (53 * hash) + getUrl().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL 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 cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL 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 cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL 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(cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL 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>
     * DarksideTransactionsURL refers to an HTTP source that contains a list
     * of hex-encoded transactions, one per line, that are to be associated
     * with the given height (fake-mined into the block at that height)
     * </pre>
     *
     * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideTransactionsURL}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideTransactionsURL)
        cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURLOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.class, cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.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();
        height_ = 0;

        url_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL result = new cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL(this);
        result.height_ = height_;
        result.url_ = url_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL.getDefaultInstance()) return this;
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        if (!other.getUrl().isEmpty()) {
          url_ = other.url_;
          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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int height_ ;
      /**
       * <code>int32 height = 1;</code>
       * @return The height.
       */
      @java.lang.Override
      public int getHeight() {
        return height_;
      }
      /**
       * <code>int32 height = 1;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 height = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }

      private java.lang.Object url_ = "";
      /**
       * <code>string url = 2;</code>
       * @return The url.
       */
      public java.lang.String getUrl() {
        java.lang.Object ref = url_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          url_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string url = 2;</code>
       * @return The bytes for url.
       */
      public com.google.protobuf.ByteString
          getUrlBytes() {
        java.lang.Object ref = url_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          url_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string url = 2;</code>
       * @param value The url to set.
       * @return This builder for chaining.
       */
      public Builder setUrl(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        url_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string url = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearUrl() {
        
        url_ = getDefaultInstance().getUrl();
        onChanged();
        return this;
      }
      /**
       * <code>string url = 2;</code>
       * @param value The bytes for url to set.
       * @return This builder for chaining.
       */
      public Builder setUrlBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        url_ = value;
        onChanged();
        return this;
      }
      @java.lang.Override
      public final Builder setUnknownFields(
          final com.google.protobuf.UnknownFieldSet unknownFields) {
        return super.setUnknownFields(unknownFields);
      }

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


      // @@protoc_insertion_point(builder_scope:cash.z.wallet.sdk.rpc.DarksideTransactionsURL)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideTransactionsURL)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideTransactionsURL getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DarksideHeightOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideHeight)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    int getHeight();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideHeight}
   */
  public static final class DarksideHeight extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideHeight)
      DarksideHeightOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideHeight.newBuilder() to construct.
    private DarksideHeight(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideHeight() {
    }

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

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

              height_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.class, cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.Builder.class);
    }

    public static final int HEIGHT_FIELD_NUMBER = 1;
    private int height_;
    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    @java.lang.Override
    public int getHeight() {
      return height_;
    }

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

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

      size = 0;
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, height_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideHeight)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideHeight other = (cash.z.wallet.sdk.rpc.Darkside.DarksideHeight) obj;

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

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight 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 cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight 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 cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight 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(cash.z.wallet.sdk.rpc.Darkside.DarksideHeight 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 cash.z.wallet.sdk.rpc.DarksideHeight}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideHeight)
        cash.z.wallet.sdk.rpc.Darkside.DarksideHeightOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.class, cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.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();
        height_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideHeight getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideHeight build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideHeight result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideHeight buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideHeight result = new cash.z.wallet.sdk.rpc.Darkside.DarksideHeight(this);
        result.height_ = height_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideHeight) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideHeight)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideHeight other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideHeight.getDefaultInstance()) return this;
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideHeight parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideHeight) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int height_ ;
      /**
       * <code>int32 height = 1;</code>
       * @return The height.
       */
      @java.lang.Override
      public int getHeight() {
        return height_;
      }
      /**
       * <code>int32 height = 1;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 height = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 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:cash.z.wallet.sdk.rpc.DarksideHeight)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideHeight)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideHeight DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideHeight();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideHeight getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideHeight getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface DarksideEmptyBlocksOrBuilder extends
      // @@protoc_insertion_point(interface_extends:cash.z.wallet.sdk.rpc.DarksideEmptyBlocks)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    int getHeight();

    /**
     * <code>int32 nonce = 2;</code>
     * @return The nonce.
     */
    int getNonce();

    /**
     * <code>int32 count = 3;</code>
     * @return The count.
     */
    int getCount();
  }
  /**
   * Protobuf type {@code cash.z.wallet.sdk.rpc.DarksideEmptyBlocks}
   */
  public static final class DarksideEmptyBlocks extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:cash.z.wallet.sdk.rpc.DarksideEmptyBlocks)
      DarksideEmptyBlocksOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use DarksideEmptyBlocks.newBuilder() to construct.
    private DarksideEmptyBlocks(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private DarksideEmptyBlocks() {
    }

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

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

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

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

              count_ = input.readInt32();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (com.google.protobuf.UninitializedMessageException e) {
        throw e.asInvalidProtocolBufferException().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 cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.class, cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.Builder.class);
    }

    public static final int HEIGHT_FIELD_NUMBER = 1;
    private int height_;
    /**
     * <code>int32 height = 1;</code>
     * @return The height.
     */
    @java.lang.Override
    public int getHeight() {
      return height_;
    }

    public static final int NONCE_FIELD_NUMBER = 2;
    private int nonce_;
    /**
     * <code>int32 nonce = 2;</code>
     * @return The nonce.
     */
    @java.lang.Override
    public int getNonce() {
      return nonce_;
    }

    public static final int COUNT_FIELD_NUMBER = 3;
    private int count_;
    /**
     * <code>int32 count = 3;</code>
     * @return The count.
     */
    @java.lang.Override
    public int getCount() {
      return count_;
    }

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

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

      size = 0;
      if (height_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(1, height_);
      }
      if (nonce_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, nonce_);
      }
      if (count_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, count_);
      }
      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 cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks)) {
        return super.equals(obj);
      }
      cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks other = (cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks) obj;

      if (getHeight()
          != other.getHeight()) return false;
      if (getNonce()
          != other.getNonce()) return false;
      if (getCount()
          != other.getCount()) 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) + HEIGHT_FIELD_NUMBER;
      hash = (53 * hash) + getHeight();
      hash = (37 * hash) + NONCE_FIELD_NUMBER;
      hash = (53 * hash) + getNonce();
      hash = (37 * hash) + COUNT_FIELD_NUMBER;
      hash = (53 * hash) + getCount();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks 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 cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks 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 cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks 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(cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks 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 cash.z.wallet.sdk.rpc.DarksideEmptyBlocks}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:cash.z.wallet.sdk.rpc.DarksideEmptyBlocks)
        cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocksOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.class, cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.Builder.class);
      }

      // Construct using cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.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();
        height_ = 0;

        nonce_ = 0;

        count_ = 0;

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return cash.z.wallet.sdk.rpc.Darkside.internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks getDefaultInstanceForType() {
        return cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.getDefaultInstance();
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks build() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks buildPartial() {
        cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks result = new cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks(this);
        result.height_ = height_;
        result.nonce_ = nonce_;
        result.count_ = count_;
        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 cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks) {
          return mergeFrom((cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks other) {
        if (other == cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks.getDefaultInstance()) return this;
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        if (other.getNonce() != 0) {
          setNonce(other.getNonce());
        }
        if (other.getCount() != 0) {
          setCount(other.getCount());
        }
        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 {
        cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int height_ ;
      /**
       * <code>int32 height = 1;</code>
       * @return The height.
       */
      @java.lang.Override
      public int getHeight() {
        return height_;
      }
      /**
       * <code>int32 height = 1;</code>
       * @param value The height to set.
       * @return This builder for chaining.
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 height = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }

      private int nonce_ ;
      /**
       * <code>int32 nonce = 2;</code>
       * @return The nonce.
       */
      @java.lang.Override
      public int getNonce() {
        return nonce_;
      }
      /**
       * <code>int32 nonce = 2;</code>
       * @param value The nonce to set.
       * @return This builder for chaining.
       */
      public Builder setNonce(int value) {
        
        nonce_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 nonce = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearNonce() {
        
        nonce_ = 0;
        onChanged();
        return this;
      }

      private int count_ ;
      /**
       * <code>int32 count = 3;</code>
       * @return The count.
       */
      @java.lang.Override
      public int getCount() {
        return count_;
      }
      /**
       * <code>int32 count = 3;</code>
       * @param value The count to set.
       * @return This builder for chaining.
       */
      public Builder setCount(int value) {
        
        count_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 count = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearCount() {
        
        count_ = 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:cash.z.wallet.sdk.rpc.DarksideEmptyBlocks)
    }

    // @@protoc_insertion_point(class_scope:cash.z.wallet.sdk.rpc.DarksideEmptyBlocks)
    private static final cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks();
    }

    public static cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public cash.z.wallet.sdk.rpc.Darkside.DarksideEmptyBlocks getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_fieldAccessorTable;
  private static final com.google.protobuf.Descriptors.Descriptor
    internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor;
  private static final 
    com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_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\016darkside.proto\022\025cash.z.wallet.sdk.rpc\032" +
      "\rservice.proto\"S\n\021DarksideMetaState\022\031\n\021s" +
      "aplingActivation\030\001 \001(\005\022\020\n\010branchID\030\002 \001(\t" +
      "\022\021\n\tchainName\030\003 \001(\t\"\036\n\rDarksideBlock\022\r\n\005" +
      "block\030\001 \001(\t\" \n\021DarksideBlocksURL\022\013\n\003url\030" +
      "\001 \001(\t\"6\n\027DarksideTransactionsURL\022\016\n\006heig" +
      "ht\030\001 \001(\005\022\013\n\003url\030\002 \001(\t\" \n\016DarksideHeight\022" +
      "\016\n\006height\030\001 \001(\005\"C\n\023DarksideEmptyBlocks\022\016" +
      "\n\006height\030\001 \001(\005\022\r\n\005nonce\030\002 \001(\005\022\r\n\005count\030\003" +
      " \001(\0052\332\006\n\020DarksideStreamer\022Q\n\005Reset\022(.cas" +
      "h.z.wallet.sdk.rpc.DarksideMetaState\032\034.c" +
      "ash.z.wallet.sdk.rpc.Empty\"\000\022[\n\021StageBlo" +
      "cksStream\022$.cash.z.wallet.sdk.rpc.Darksi" +
      "deBlock\032\034.cash.z.wallet.sdk.rpc.Empty\"\000(" +
      "\001\022W\n\013StageBlocks\022(.cash.z.wallet.sdk.rpc" +
      ".DarksideBlocksURL\032\034.cash.z.wallet.sdk.r" +
      "pc.Empty\"\000\022_\n\021StageBlocksCreate\022*.cash.z" +
      ".wallet.sdk.rpc.DarksideEmptyBlocks\032\034.ca" +
      "sh.z.wallet.sdk.rpc.Empty\"\000\022b\n\027StageTran" +
      "sactionsStream\022%.cash.z.wallet.sdk.rpc.R" +
      "awTransaction\032\034.cash.z.wallet.sdk.rpc.Em" +
      "pty\"\000(\001\022c\n\021StageTransactions\022..cash.z.wa" +
      "llet.sdk.rpc.DarksideTransactionsURL\032\034.c" +
      "ash.z.wallet.sdk.rpc.Empty\"\000\022T\n\013ApplySta" +
      "ged\022%.cash.z.wallet.sdk.rpc.DarksideHeig" +
      "ht\032\034.cash.z.wallet.sdk.rpc.Empty\"\000\022b\n\027Ge" +
      "tIncomingTransactions\022\034.cash.z.wallet.sd" +
      "k.rpc.Empty\032%.cash.z.wallet.sdk.rpc.RawT" +
      "ransaction\"\0000\001\022Y\n\031ClearIncomingTransacti" +
      "ons\022\034.cash.z.wallet.sdk.rpc.Empty\032\034.cash" +
      ".z.wallet.sdk.rpc.Empty\"\000B\033Z\026lightwallet" +
      "d/walletrpc\272\002\000b\006proto3"
    };
    descriptor = com.google.protobuf.Descriptors.FileDescriptor
      .internalBuildGeneratedFileFrom(descriptorData,
        new com.google.protobuf.Descriptors.FileDescriptor[] {
          cash.z.wallet.sdk.rpc.Service.getDescriptor(),
        });
    internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor =
      getDescriptor().getMessageTypes().get(0);
    internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideMetaState_descriptor,
        new java.lang.String[] { "SaplingActivation", "BranchID", "ChainName", });
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor =
      getDescriptor().getMessageTypes().get(1);
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideBlock_descriptor,
        new java.lang.String[] { "Block", });
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor =
      getDescriptor().getMessageTypes().get(2);
    internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideBlocksURL_descriptor,
        new java.lang.String[] { "Url", });
    internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor =
      getDescriptor().getMessageTypes().get(3);
    internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideTransactionsURL_descriptor,
        new java.lang.String[] { "Height", "Url", });
    internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor =
      getDescriptor().getMessageTypes().get(4);
    internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideHeight_descriptor,
        new java.lang.String[] { "Height", });
    internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor =
      getDescriptor().getMessageTypes().get(5);
    internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_fieldAccessorTable = new
      com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
        internal_static_cash_z_wallet_sdk_rpc_DarksideEmptyBlocks_descriptor,
        new java.lang.String[] { "Height", "Nonce", "Count", });
    cash.z.wallet.sdk.rpc.Service.getDescriptor();
  }

  // @@protoc_insertion_point(outer_class_scope)
}
