// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: tensorflow/core/framework/summary.proto

package org.tensorflow.proto.framework;

/**
 * <pre>
 * A Summary is a set of named values to be displayed by the
 * visualizer.
 * Summaries are produced regularly during training, as controlled by
 * the "summary_interval_secs" attribute of the training operation.
 * Summaries are also produced at the end of an evaluation.
 * </pre>
 *
 * Protobuf type {@code tensorflow.Summary}
 */
public  final class Summary extends
    com.google.protobuf.GeneratedMessageV3 implements
    // @@protoc_insertion_point(message_implements:tensorflow.Summary)
    SummaryOrBuilder {
private static final long serialVersionUID = 0L;
  // Use Summary.newBuilder() to construct.
  private Summary(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
    super(builder);
  }
  private Summary() {
    value_ = java.util.Collections.emptyList();
  }

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

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

  @java.lang.Override
  protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
      internalGetFieldAccessorTable() {
    return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_fieldAccessorTable
        .ensureFieldAccessorsInitialized(
            org.tensorflow.proto.framework.Summary.class, org.tensorflow.proto.framework.Summary.Builder.class);
  }

  public interface ImageOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.Summary.Image)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Dimensions of the image.
     * </pre>
     *
     * <code>int32 height = 1;</code>
     */
    int getHeight();

    /**
     * <code>int32 width = 2;</code>
     */
    int getWidth();

    /**
     * <pre>
     * Valid colorspace values are
     *   1 - grayscale
     *   2 - grayscale + alpha
     *   3 - RGB
     *   4 - RGBA
     *   5 - DIGITAL_YUV
     *   6 - BGRA
     * </pre>
     *
     * <code>int32 colorspace = 3;</code>
     */
    int getColorspace();

    /**
     * <pre>
     * Image data in encoded format.  All image formats supported by
     * image_codec::CoderUtil can be stored here.
     * </pre>
     *
     * <code>bytes encoded_image_string = 4;</code>
     */
    com.google.protobuf.ByteString getEncodedImageString();
  }
  /**
   * Protobuf type {@code tensorflow.Summary.Image}
   */
  public  static final class Image extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.Summary.Image)
      ImageOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Image.newBuilder() to construct.
    private Image(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Image() {
      encodedImageString_ = com.google.protobuf.ByteString.EMPTY;
    }

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

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

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

              colorspace_ = input.readInt32();
              break;
            }
            case 34: {

              encodedImageString_ = input.readBytes();
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Image_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Image_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.Summary.Image.class, org.tensorflow.proto.framework.Summary.Image.Builder.class);
    }

    public static final int HEIGHT_FIELD_NUMBER = 1;
    private int height_;
    /**
     * <pre>
     * Dimensions of the image.
     * </pre>
     *
     * <code>int32 height = 1;</code>
     */
    public int getHeight() {
      return height_;
    }

    public static final int WIDTH_FIELD_NUMBER = 2;
    private int width_;
    /**
     * <code>int32 width = 2;</code>
     */
    public int getWidth() {
      return width_;
    }

    public static final int COLORSPACE_FIELD_NUMBER = 3;
    private int colorspace_;
    /**
     * <pre>
     * Valid colorspace values are
     *   1 - grayscale
     *   2 - grayscale + alpha
     *   3 - RGB
     *   4 - RGBA
     *   5 - DIGITAL_YUV
     *   6 - BGRA
     * </pre>
     *
     * <code>int32 colorspace = 3;</code>
     */
    public int getColorspace() {
      return colorspace_;
    }

    public static final int ENCODED_IMAGE_STRING_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString encodedImageString_;
    /**
     * <pre>
     * Image data in encoded format.  All image formats supported by
     * image_codec::CoderUtil can be stored here.
     * </pre>
     *
     * <code>bytes encoded_image_string = 4;</code>
     */
    public com.google.protobuf.ByteString getEncodedImageString() {
      return encodedImageString_;
    }

    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 (width_ != 0) {
        output.writeInt32(2, width_);
      }
      if (colorspace_ != 0) {
        output.writeInt32(3, colorspace_);
      }
      if (!encodedImageString_.isEmpty()) {
        output.writeBytes(4, encodedImageString_);
      }
      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 (width_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(2, width_);
      }
      if (colorspace_ != 0) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt32Size(3, colorspace_);
      }
      if (!encodedImageString_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, encodedImageString_);
      }
      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 org.tensorflow.proto.framework.Summary.Image)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.Summary.Image other = (org.tensorflow.proto.framework.Summary.Image) obj;

      if (getHeight()
          != other.getHeight()) return false;
      if (getWidth()
          != other.getWidth()) return false;
      if (getColorspace()
          != other.getColorspace()) return false;
      if (!getEncodedImageString()
          .equals(other.getEncodedImageString())) 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) + WIDTH_FIELD_NUMBER;
      hash = (53 * hash) + getWidth();
      hash = (37 * hash) + COLORSPACE_FIELD_NUMBER;
      hash = (53 * hash) + getColorspace();
      hash = (37 * hash) + ENCODED_IMAGE_STRING_FIELD_NUMBER;
      hash = (53 * hash) + getEncodedImageString().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tensorflow.proto.framework.Summary.Image parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Image parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Image 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 org.tensorflow.proto.framework.Summary.Image parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Image 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 org.tensorflow.proto.framework.Summary.Image parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Image 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(org.tensorflow.proto.framework.Summary.Image 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 tensorflow.Summary.Image}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.Summary.Image)
        org.tensorflow.proto.framework.Summary.ImageOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Image_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Image_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.Summary.Image.class, org.tensorflow.proto.framework.Summary.Image.Builder.class);
      }

      // Construct using org.tensorflow.proto.framework.Summary.Image.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;

        width_ = 0;

        colorspace_ = 0;

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

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Image_descriptor;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Image getDefaultInstanceForType() {
        return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Image build() {
        org.tensorflow.proto.framework.Summary.Image result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Image buildPartial() {
        org.tensorflow.proto.framework.Summary.Image result = new org.tensorflow.proto.framework.Summary.Image(this);
        result.height_ = height_;
        result.width_ = width_;
        result.colorspace_ = colorspace_;
        result.encodedImageString_ = encodedImageString_;
        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 org.tensorflow.proto.framework.Summary.Image) {
          return mergeFrom((org.tensorflow.proto.framework.Summary.Image)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tensorflow.proto.framework.Summary.Image other) {
        if (other == org.tensorflow.proto.framework.Summary.Image.getDefaultInstance()) return this;
        if (other.getHeight() != 0) {
          setHeight(other.getHeight());
        }
        if (other.getWidth() != 0) {
          setWidth(other.getWidth());
        }
        if (other.getColorspace() != 0) {
          setColorspace(other.getColorspace());
        }
        if (other.getEncodedImageString() != com.google.protobuf.ByteString.EMPTY) {
          setEncodedImageString(other.getEncodedImageString());
        }
        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 {
        org.tensorflow.proto.framework.Summary.Image parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.Summary.Image) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private int height_ ;
      /**
       * <pre>
       * Dimensions of the image.
       * </pre>
       *
       * <code>int32 height = 1;</code>
       */
      public int getHeight() {
        return height_;
      }
      /**
       * <pre>
       * Dimensions of the image.
       * </pre>
       *
       * <code>int32 height = 1;</code>
       */
      public Builder setHeight(int value) {
        
        height_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Dimensions of the image.
       * </pre>
       *
       * <code>int32 height = 1;</code>
       */
      public Builder clearHeight() {
        
        height_ = 0;
        onChanged();
        return this;
      }

      private int width_ ;
      /**
       * <code>int32 width = 2;</code>
       */
      public int getWidth() {
        return width_;
      }
      /**
       * <code>int32 width = 2;</code>
       */
      public Builder setWidth(int value) {
        
        width_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>int32 width = 2;</code>
       */
      public Builder clearWidth() {
        
        width_ = 0;
        onChanged();
        return this;
      }

      private int colorspace_ ;
      /**
       * <pre>
       * Valid colorspace values are
       *   1 - grayscale
       *   2 - grayscale + alpha
       *   3 - RGB
       *   4 - RGBA
       *   5 - DIGITAL_YUV
       *   6 - BGRA
       * </pre>
       *
       * <code>int32 colorspace = 3;</code>
       */
      public int getColorspace() {
        return colorspace_;
      }
      /**
       * <pre>
       * Valid colorspace values are
       *   1 - grayscale
       *   2 - grayscale + alpha
       *   3 - RGB
       *   4 - RGBA
       *   5 - DIGITAL_YUV
       *   6 - BGRA
       * </pre>
       *
       * <code>int32 colorspace = 3;</code>
       */
      public Builder setColorspace(int value) {
        
        colorspace_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Valid colorspace values are
       *   1 - grayscale
       *   2 - grayscale + alpha
       *   3 - RGB
       *   4 - RGBA
       *   5 - DIGITAL_YUV
       *   6 - BGRA
       * </pre>
       *
       * <code>int32 colorspace = 3;</code>
       */
      public Builder clearColorspace() {
        
        colorspace_ = 0;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encodedImageString_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Image data in encoded format.  All image formats supported by
       * image_codec::CoderUtil can be stored here.
       * </pre>
       *
       * <code>bytes encoded_image_string = 4;</code>
       */
      public com.google.protobuf.ByteString getEncodedImageString() {
        return encodedImageString_;
      }
      /**
       * <pre>
       * Image data in encoded format.  All image formats supported by
       * image_codec::CoderUtil can be stored here.
       * </pre>
       *
       * <code>bytes encoded_image_string = 4;</code>
       */
      public Builder setEncodedImageString(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encodedImageString_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Image data in encoded format.  All image formats supported by
       * image_codec::CoderUtil can be stored here.
       * </pre>
       *
       * <code>bytes encoded_image_string = 4;</code>
       */
      public Builder clearEncodedImageString() {
        
        encodedImageString_ = getDefaultInstance().getEncodedImageString();
        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:tensorflow.Summary.Image)
    }

    // @@protoc_insertion_point(class_scope:tensorflow.Summary.Image)
    private static final org.tensorflow.proto.framework.Summary.Image DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tensorflow.proto.framework.Summary.Image();
    }

    public static org.tensorflow.proto.framework.Summary.Image getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary.Image getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface AudioOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.Summary.Audio)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * Sample rate of the audio in Hz.
     * </pre>
     *
     * <code>float sample_rate = 1;</code>
     */
    float getSampleRate();

    /**
     * <pre>
     * Number of channels of audio.
     * </pre>
     *
     * <code>int64 num_channels = 2;</code>
     */
    long getNumChannels();

    /**
     * <pre>
     * Length of the audio in frames (samples per channel).
     * </pre>
     *
     * <code>int64 length_frames = 3;</code>
     */
    long getLengthFrames();

    /**
     * <pre>
     * Encoded audio data and its associated RFC 2045 content type (e.g.
     * "audio/wav").
     * </pre>
     *
     * <code>bytes encoded_audio_string = 4;</code>
     */
    com.google.protobuf.ByteString getEncodedAudioString();

    /**
     * <code>string content_type = 5;</code>
     */
    java.lang.String getContentType();
    /**
     * <code>string content_type = 5;</code>
     */
    com.google.protobuf.ByteString
        getContentTypeBytes();
  }
  /**
   * Protobuf type {@code tensorflow.Summary.Audio}
   */
  public  static final class Audio extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.Summary.Audio)
      AudioOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Audio.newBuilder() to construct.
    private Audio(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Audio() {
      encodedAudioString_ = com.google.protobuf.ByteString.EMPTY;
      contentType_ = "";
    }

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

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

              sampleRate_ = input.readFloat();
              break;
            }
            case 16: {

              numChannels_ = input.readInt64();
              break;
            }
            case 24: {

              lengthFrames_ = input.readInt64();
              break;
            }
            case 34: {

              encodedAudioString_ = input.readBytes();
              break;
            }
            case 42: {
              java.lang.String s = input.readStringRequireUtf8();

              contentType_ = s;
              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Audio_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Audio_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.Summary.Audio.class, org.tensorflow.proto.framework.Summary.Audio.Builder.class);
    }

    public static final int SAMPLE_RATE_FIELD_NUMBER = 1;
    private float sampleRate_;
    /**
     * <pre>
     * Sample rate of the audio in Hz.
     * </pre>
     *
     * <code>float sample_rate = 1;</code>
     */
    public float getSampleRate() {
      return sampleRate_;
    }

    public static final int NUM_CHANNELS_FIELD_NUMBER = 2;
    private long numChannels_;
    /**
     * <pre>
     * Number of channels of audio.
     * </pre>
     *
     * <code>int64 num_channels = 2;</code>
     */
    public long getNumChannels() {
      return numChannels_;
    }

    public static final int LENGTH_FRAMES_FIELD_NUMBER = 3;
    private long lengthFrames_;
    /**
     * <pre>
     * Length of the audio in frames (samples per channel).
     * </pre>
     *
     * <code>int64 length_frames = 3;</code>
     */
    public long getLengthFrames() {
      return lengthFrames_;
    }

    public static final int ENCODED_AUDIO_STRING_FIELD_NUMBER = 4;
    private com.google.protobuf.ByteString encodedAudioString_;
    /**
     * <pre>
     * Encoded audio data and its associated RFC 2045 content type (e.g.
     * "audio/wav").
     * </pre>
     *
     * <code>bytes encoded_audio_string = 4;</code>
     */
    public com.google.protobuf.ByteString getEncodedAudioString() {
      return encodedAudioString_;
    }

    public static final int CONTENT_TYPE_FIELD_NUMBER = 5;
    private volatile java.lang.Object contentType_;
    /**
     * <code>string content_type = 5;</code>
     */
    public java.lang.String getContentType() {
      java.lang.Object ref = contentType_;
      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();
        contentType_ = s;
        return s;
      }
    }
    /**
     * <code>string content_type = 5;</code>
     */
    public com.google.protobuf.ByteString
        getContentTypeBytes() {
      java.lang.Object ref = contentType_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        contentType_ = 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 (sampleRate_ != 0F) {
        output.writeFloat(1, sampleRate_);
      }
      if (numChannels_ != 0L) {
        output.writeInt64(2, numChannels_);
      }
      if (lengthFrames_ != 0L) {
        output.writeInt64(3, lengthFrames_);
      }
      if (!encodedAudioString_.isEmpty()) {
        output.writeBytes(4, encodedAudioString_);
      }
      if (!getContentTypeBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 5, contentType_);
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (sampleRate_ != 0F) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(1, sampleRate_);
      }
      if (numChannels_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(2, numChannels_);
      }
      if (lengthFrames_ != 0L) {
        size += com.google.protobuf.CodedOutputStream
          .computeInt64Size(3, lengthFrames_);
      }
      if (!encodedAudioString_.isEmpty()) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(4, encodedAudioString_);
      }
      if (!getContentTypeBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(5, contentType_);
      }
      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 org.tensorflow.proto.framework.Summary.Audio)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.Summary.Audio other = (org.tensorflow.proto.framework.Summary.Audio) obj;

      if (java.lang.Float.floatToIntBits(getSampleRate())
          != java.lang.Float.floatToIntBits(
              other.getSampleRate())) return false;
      if (getNumChannels()
          != other.getNumChannels()) return false;
      if (getLengthFrames()
          != other.getLengthFrames()) return false;
      if (!getEncodedAudioString()
          .equals(other.getEncodedAudioString())) return false;
      if (!getContentType()
          .equals(other.getContentType())) 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) + SAMPLE_RATE_FIELD_NUMBER;
      hash = (53 * hash) + java.lang.Float.floatToIntBits(
          getSampleRate());
      hash = (37 * hash) + NUM_CHANNELS_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getNumChannels());
      hash = (37 * hash) + LENGTH_FRAMES_FIELD_NUMBER;
      hash = (53 * hash) + com.google.protobuf.Internal.hashLong(
          getLengthFrames());
      hash = (37 * hash) + ENCODED_AUDIO_STRING_FIELD_NUMBER;
      hash = (53 * hash) + getEncodedAudioString().hashCode();
      hash = (37 * hash) + CONTENT_TYPE_FIELD_NUMBER;
      hash = (53 * hash) + getContentType().hashCode();
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Audio parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Audio 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 org.tensorflow.proto.framework.Summary.Audio parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Audio 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 org.tensorflow.proto.framework.Summary.Audio parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Audio 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(org.tensorflow.proto.framework.Summary.Audio 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 tensorflow.Summary.Audio}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.Summary.Audio)
        org.tensorflow.proto.framework.Summary.AudioOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Audio_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Audio_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.Summary.Audio.class, org.tensorflow.proto.framework.Summary.Audio.Builder.class);
      }

      // Construct using org.tensorflow.proto.framework.Summary.Audio.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();
        sampleRate_ = 0F;

        numChannels_ = 0L;

        lengthFrames_ = 0L;

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

        contentType_ = "";

        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Audio_descriptor;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Audio getDefaultInstanceForType() {
        return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Audio build() {
        org.tensorflow.proto.framework.Summary.Audio result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Audio buildPartial() {
        org.tensorflow.proto.framework.Summary.Audio result = new org.tensorflow.proto.framework.Summary.Audio(this);
        result.sampleRate_ = sampleRate_;
        result.numChannels_ = numChannels_;
        result.lengthFrames_ = lengthFrames_;
        result.encodedAudioString_ = encodedAudioString_;
        result.contentType_ = contentType_;
        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 org.tensorflow.proto.framework.Summary.Audio) {
          return mergeFrom((org.tensorflow.proto.framework.Summary.Audio)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tensorflow.proto.framework.Summary.Audio other) {
        if (other == org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance()) return this;
        if (other.getSampleRate() != 0F) {
          setSampleRate(other.getSampleRate());
        }
        if (other.getNumChannels() != 0L) {
          setNumChannels(other.getNumChannels());
        }
        if (other.getLengthFrames() != 0L) {
          setLengthFrames(other.getLengthFrames());
        }
        if (other.getEncodedAudioString() != com.google.protobuf.ByteString.EMPTY) {
          setEncodedAudioString(other.getEncodedAudioString());
        }
        if (!other.getContentType().isEmpty()) {
          contentType_ = other.contentType_;
          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 {
        org.tensorflow.proto.framework.Summary.Audio parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.Summary.Audio) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }

      private float sampleRate_ ;
      /**
       * <pre>
       * Sample rate of the audio in Hz.
       * </pre>
       *
       * <code>float sample_rate = 1;</code>
       */
      public float getSampleRate() {
        return sampleRate_;
      }
      /**
       * <pre>
       * Sample rate of the audio in Hz.
       * </pre>
       *
       * <code>float sample_rate = 1;</code>
       */
      public Builder setSampleRate(float value) {
        
        sampleRate_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Sample rate of the audio in Hz.
       * </pre>
       *
       * <code>float sample_rate = 1;</code>
       */
      public Builder clearSampleRate() {
        
        sampleRate_ = 0F;
        onChanged();
        return this;
      }

      private long numChannels_ ;
      /**
       * <pre>
       * Number of channels of audio.
       * </pre>
       *
       * <code>int64 num_channels = 2;</code>
       */
      public long getNumChannels() {
        return numChannels_;
      }
      /**
       * <pre>
       * Number of channels of audio.
       * </pre>
       *
       * <code>int64 num_channels = 2;</code>
       */
      public Builder setNumChannels(long value) {
        
        numChannels_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Number of channels of audio.
       * </pre>
       *
       * <code>int64 num_channels = 2;</code>
       */
      public Builder clearNumChannels() {
        
        numChannels_ = 0L;
        onChanged();
        return this;
      }

      private long lengthFrames_ ;
      /**
       * <pre>
       * Length of the audio in frames (samples per channel).
       * </pre>
       *
       * <code>int64 length_frames = 3;</code>
       */
      public long getLengthFrames() {
        return lengthFrames_;
      }
      /**
       * <pre>
       * Length of the audio in frames (samples per channel).
       * </pre>
       *
       * <code>int64 length_frames = 3;</code>
       */
      public Builder setLengthFrames(long value) {
        
        lengthFrames_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Length of the audio in frames (samples per channel).
       * </pre>
       *
       * <code>int64 length_frames = 3;</code>
       */
      public Builder clearLengthFrames() {
        
        lengthFrames_ = 0L;
        onChanged();
        return this;
      }

      private com.google.protobuf.ByteString encodedAudioString_ = com.google.protobuf.ByteString.EMPTY;
      /**
       * <pre>
       * Encoded audio data and its associated RFC 2045 content type (e.g.
       * "audio/wav").
       * </pre>
       *
       * <code>bytes encoded_audio_string = 4;</code>
       */
      public com.google.protobuf.ByteString getEncodedAudioString() {
        return encodedAudioString_;
      }
      /**
       * <pre>
       * Encoded audio data and its associated RFC 2045 content type (e.g.
       * "audio/wav").
       * </pre>
       *
       * <code>bytes encoded_audio_string = 4;</code>
       */
      public Builder setEncodedAudioString(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        encodedAudioString_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Encoded audio data and its associated RFC 2045 content type (e.g.
       * "audio/wav").
       * </pre>
       *
       * <code>bytes encoded_audio_string = 4;</code>
       */
      public Builder clearEncodedAudioString() {
        
        encodedAudioString_ = getDefaultInstance().getEncodedAudioString();
        onChanged();
        return this;
      }

      private java.lang.Object contentType_ = "";
      /**
       * <code>string content_type = 5;</code>
       */
      public java.lang.String getContentType() {
        java.lang.Object ref = contentType_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          contentType_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <code>string content_type = 5;</code>
       */
      public com.google.protobuf.ByteString
          getContentTypeBytes() {
        java.lang.Object ref = contentType_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          contentType_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <code>string content_type = 5;</code>
       */
      public Builder setContentType(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        contentType_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>string content_type = 5;</code>
       */
      public Builder clearContentType() {
        
        contentType_ = getDefaultInstance().getContentType();
        onChanged();
        return this;
      }
      /**
       * <code>string content_type = 5;</code>
       */
      public Builder setContentTypeBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        contentType_ = 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:tensorflow.Summary.Audio)
    }

    // @@protoc_insertion_point(class_scope:tensorflow.Summary.Audio)
    private static final org.tensorflow.proto.framework.Summary.Audio DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tensorflow.proto.framework.Summary.Audio();
    }

    public static org.tensorflow.proto.framework.Summary.Audio getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary.Audio getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public interface ValueOrBuilder extends
      // @@protoc_insertion_point(interface_extends:tensorflow.Summary.Value)
      com.google.protobuf.MessageOrBuilder {

    /**
     * <pre>
     * This field is deprecated and will not be set.
     * </pre>
     *
     * <code>string node_name = 7;</code>
     */
    java.lang.String getNodeName();
    /**
     * <pre>
     * This field is deprecated and will not be set.
     * </pre>
     *
     * <code>string node_name = 7;</code>
     */
    com.google.protobuf.ByteString
        getNodeNameBytes();

    /**
     * <pre>
     * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
     * are often organized by scope (which contains slashes to convey
     * hierarchy). For example: foo/bar/0
     * </pre>
     *
     * <code>string tag = 1;</code>
     */
    java.lang.String getTag();
    /**
     * <pre>
     * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
     * are often organized by scope (which contains slashes to convey
     * hierarchy). For example: foo/bar/0
     * </pre>
     *
     * <code>string tag = 1;</code>
     */
    com.google.protobuf.ByteString
        getTagBytes();

    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    boolean hasMetadata();
    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    org.tensorflow.proto.framework.SummaryMetadata getMetadata();
    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    org.tensorflow.proto.framework.SummaryMetadataOrBuilder getMetadataOrBuilder();

    /**
     * <code>float simple_value = 2;</code>
     */
    float getSimpleValue();

    /**
     * <code>bytes obsolete_old_style_histogram = 3;</code>
     */
    com.google.protobuf.ByteString getObsoleteOldStyleHistogram();

    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    boolean hasImage();
    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    org.tensorflow.proto.framework.Summary.Image getImage();
    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    org.tensorflow.proto.framework.Summary.ImageOrBuilder getImageOrBuilder();

    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    boolean hasHisto();
    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    org.tensorflow.proto.framework.HistogramProto getHisto();
    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    org.tensorflow.proto.framework.HistogramProtoOrBuilder getHistoOrBuilder();

    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    boolean hasAudio();
    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    org.tensorflow.proto.framework.Summary.Audio getAudio();
    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    org.tensorflow.proto.framework.Summary.AudioOrBuilder getAudioOrBuilder();

    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    boolean hasTensor();
    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    org.tensorflow.proto.framework.TensorProto getTensor();
    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    org.tensorflow.proto.framework.TensorProtoOrBuilder getTensorOrBuilder();

    public org.tensorflow.proto.framework.Summary.Value.ValueCase getValueCase();
  }
  /**
   * Protobuf type {@code tensorflow.Summary.Value}
   */
  public  static final class Value extends
      com.google.protobuf.GeneratedMessageV3 implements
      // @@protoc_insertion_point(message_implements:tensorflow.Summary.Value)
      ValueOrBuilder {
  private static final long serialVersionUID = 0L;
    // Use Value.newBuilder() to construct.
    private Value(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
      super(builder);
    }
    private Value() {
      nodeName_ = "";
      tag_ = "";
    }

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

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

              tag_ = s;
              break;
            }
            case 21: {
              valueCase_ = 2;
              value_ = input.readFloat();
              break;
            }
            case 26: {
              valueCase_ = 3;
              value_ = input.readBytes();
              break;
            }
            case 34: {
              org.tensorflow.proto.framework.Summary.Image.Builder subBuilder = null;
              if (valueCase_ == 4) {
                subBuilder = ((org.tensorflow.proto.framework.Summary.Image) value_).toBuilder();
              }
              value_ =
                  input.readMessage(org.tensorflow.proto.framework.Summary.Image.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.tensorflow.proto.framework.Summary.Image) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 4;
              break;
            }
            case 42: {
              org.tensorflow.proto.framework.HistogramProto.Builder subBuilder = null;
              if (valueCase_ == 5) {
                subBuilder = ((org.tensorflow.proto.framework.HistogramProto) value_).toBuilder();
              }
              value_ =
                  input.readMessage(org.tensorflow.proto.framework.HistogramProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.tensorflow.proto.framework.HistogramProto) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 5;
              break;
            }
            case 50: {
              org.tensorflow.proto.framework.Summary.Audio.Builder subBuilder = null;
              if (valueCase_ == 6) {
                subBuilder = ((org.tensorflow.proto.framework.Summary.Audio) value_).toBuilder();
              }
              value_ =
                  input.readMessage(org.tensorflow.proto.framework.Summary.Audio.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.tensorflow.proto.framework.Summary.Audio) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 6;
              break;
            }
            case 58: {
              java.lang.String s = input.readStringRequireUtf8();

              nodeName_ = s;
              break;
            }
            case 66: {
              org.tensorflow.proto.framework.TensorProto.Builder subBuilder = null;
              if (valueCase_ == 8) {
                subBuilder = ((org.tensorflow.proto.framework.TensorProto) value_).toBuilder();
              }
              value_ =
                  input.readMessage(org.tensorflow.proto.framework.TensorProto.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom((org.tensorflow.proto.framework.TensorProto) value_);
                value_ = subBuilder.buildPartial();
              }
              valueCase_ = 8;
              break;
            }
            case 74: {
              org.tensorflow.proto.framework.SummaryMetadata.Builder subBuilder = null;
              if (metadata_ != null) {
                subBuilder = metadata_.toBuilder();
              }
              metadata_ = input.readMessage(org.tensorflow.proto.framework.SummaryMetadata.parser(), extensionRegistry);
              if (subBuilder != null) {
                subBuilder.mergeFrom(metadata_);
                metadata_ = subBuilder.buildPartial();
              }

              break;
            }
            default: {
              if (!parseUnknownField(
                  input, unknownFields, extensionRegistry, tag)) {
                done = true;
              }
              break;
            }
          }
        }
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        throw e.setUnfinishedMessage(this);
      } catch (java.io.IOException e) {
        throw new com.google.protobuf.InvalidProtocolBufferException(
            e).setUnfinishedMessage(this);
      } finally {
        this.unknownFields = unknownFields.build();
        makeExtensionsImmutable();
      }
    }
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Value_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Value_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.Summary.Value.class, org.tensorflow.proto.framework.Summary.Value.Builder.class);
    }

    private int valueCase_ = 0;
    private java.lang.Object value_;
    public enum ValueCase
        implements com.google.protobuf.Internal.EnumLite {
      SIMPLE_VALUE(2),
      OBSOLETE_OLD_STYLE_HISTOGRAM(3),
      IMAGE(4),
      HISTO(5),
      AUDIO(6),
      TENSOR(8),
      VALUE_NOT_SET(0);
      private final int value;
      private ValueCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static ValueCase valueOf(int value) {
        return forNumber(value);
      }

      public static ValueCase forNumber(int value) {
        switch (value) {
          case 2: return SIMPLE_VALUE;
          case 3: return OBSOLETE_OLD_STYLE_HISTOGRAM;
          case 4: return IMAGE;
          case 5: return HISTO;
          case 6: return AUDIO;
          case 8: return TENSOR;
          case 0: return VALUE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    public ValueCase
    getValueCase() {
      return ValueCase.forNumber(
          valueCase_);
    }

    public static final int NODE_NAME_FIELD_NUMBER = 7;
    private volatile java.lang.Object nodeName_;
    /**
     * <pre>
     * This field is deprecated and will not be set.
     * </pre>
     *
     * <code>string node_name = 7;</code>
     */
    public java.lang.String getNodeName() {
      java.lang.Object ref = nodeName_;
      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();
        nodeName_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * This field is deprecated and will not be set.
     * </pre>
     *
     * <code>string node_name = 7;</code>
     */
    public com.google.protobuf.ByteString
        getNodeNameBytes() {
      java.lang.Object ref = nodeName_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        nodeName_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int TAG_FIELD_NUMBER = 1;
    private volatile java.lang.Object tag_;
    /**
     * <pre>
     * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
     * are often organized by scope (which contains slashes to convey
     * hierarchy). For example: foo/bar/0
     * </pre>
     *
     * <code>string tag = 1;</code>
     */
    public java.lang.String getTag() {
      java.lang.Object ref = tag_;
      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();
        tag_ = s;
        return s;
      }
    }
    /**
     * <pre>
     * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
     * are often organized by scope (which contains slashes to convey
     * hierarchy). For example: foo/bar/0
     * </pre>
     *
     * <code>string tag = 1;</code>
     */
    public com.google.protobuf.ByteString
        getTagBytes() {
      java.lang.Object ref = tag_;
      if (ref instanceof java.lang.String) {
        com.google.protobuf.ByteString b = 
            com.google.protobuf.ByteString.copyFromUtf8(
                (java.lang.String) ref);
        tag_ = b;
        return b;
      } else {
        return (com.google.protobuf.ByteString) ref;
      }
    }

    public static final int METADATA_FIELD_NUMBER = 9;
    private org.tensorflow.proto.framework.SummaryMetadata metadata_;
    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    public boolean hasMetadata() {
      return metadata_ != null;
    }
    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    public org.tensorflow.proto.framework.SummaryMetadata getMetadata() {
      return metadata_ == null ? org.tensorflow.proto.framework.SummaryMetadata.getDefaultInstance() : metadata_;
    }
    /**
     * <pre>
     * Contains metadata on the summary value such as which plugins may use it.
     * Take note that many summary values may lack a metadata field. This is
     * because the FileWriter only keeps a metadata object on the first summary
     * value with a certain tag for each tag. TensorBoard then remembers which
     * tags are associated with which plugins. This saves space.
     * </pre>
     *
     * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
     */
    public org.tensorflow.proto.framework.SummaryMetadataOrBuilder getMetadataOrBuilder() {
      return getMetadata();
    }

    public static final int SIMPLE_VALUE_FIELD_NUMBER = 2;
    /**
     * <code>float simple_value = 2;</code>
     */
    public float getSimpleValue() {
      if (valueCase_ == 2) {
        return (java.lang.Float) value_;
      }
      return 0F;
    }

    public static final int OBSOLETE_OLD_STYLE_HISTOGRAM_FIELD_NUMBER = 3;
    /**
     * <code>bytes obsolete_old_style_histogram = 3;</code>
     */
    public com.google.protobuf.ByteString getObsoleteOldStyleHistogram() {
      if (valueCase_ == 3) {
        return (com.google.protobuf.ByteString) value_;
      }
      return com.google.protobuf.ByteString.EMPTY;
    }

    public static final int IMAGE_FIELD_NUMBER = 4;
    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    public boolean hasImage() {
      return valueCase_ == 4;
    }
    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    public org.tensorflow.proto.framework.Summary.Image getImage() {
      if (valueCase_ == 4) {
         return (org.tensorflow.proto.framework.Summary.Image) value_;
      }
      return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
    }
    /**
     * <code>.tensorflow.Summary.Image image = 4;</code>
     */
    public org.tensorflow.proto.framework.Summary.ImageOrBuilder getImageOrBuilder() {
      if (valueCase_ == 4) {
         return (org.tensorflow.proto.framework.Summary.Image) value_;
      }
      return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
    }

    public static final int HISTO_FIELD_NUMBER = 5;
    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    public boolean hasHisto() {
      return valueCase_ == 5;
    }
    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    public org.tensorflow.proto.framework.HistogramProto getHisto() {
      if (valueCase_ == 5) {
         return (org.tensorflow.proto.framework.HistogramProto) value_;
      }
      return org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
    }
    /**
     * <code>.tensorflow.HistogramProto histo = 5;</code>
     */
    public org.tensorflow.proto.framework.HistogramProtoOrBuilder getHistoOrBuilder() {
      if (valueCase_ == 5) {
         return (org.tensorflow.proto.framework.HistogramProto) value_;
      }
      return org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
    }

    public static final int AUDIO_FIELD_NUMBER = 6;
    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    public boolean hasAudio() {
      return valueCase_ == 6;
    }
    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    public org.tensorflow.proto.framework.Summary.Audio getAudio() {
      if (valueCase_ == 6) {
         return (org.tensorflow.proto.framework.Summary.Audio) value_;
      }
      return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
    }
    /**
     * <code>.tensorflow.Summary.Audio audio = 6;</code>
     */
    public org.tensorflow.proto.framework.Summary.AudioOrBuilder getAudioOrBuilder() {
      if (valueCase_ == 6) {
         return (org.tensorflow.proto.framework.Summary.Audio) value_;
      }
      return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
    }

    public static final int TENSOR_FIELD_NUMBER = 8;
    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    public boolean hasTensor() {
      return valueCase_ == 8;
    }
    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    public org.tensorflow.proto.framework.TensorProto getTensor() {
      if (valueCase_ == 8) {
         return (org.tensorflow.proto.framework.TensorProto) value_;
      }
      return org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
    }
    /**
     * <code>.tensorflow.TensorProto tensor = 8;</code>
     */
    public org.tensorflow.proto.framework.TensorProtoOrBuilder getTensorOrBuilder() {
      if (valueCase_ == 8) {
         return (org.tensorflow.proto.framework.TensorProto) value_;
      }
      return org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
    }

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

      memoizedIsInitialized = 1;
      return true;
    }

    @java.lang.Override
    public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      if (!getTagBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 1, tag_);
      }
      if (valueCase_ == 2) {
        output.writeFloat(
            2, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 3) {
        output.writeBytes(
            3, (com.google.protobuf.ByteString) value_);
      }
      if (valueCase_ == 4) {
        output.writeMessage(4, (org.tensorflow.proto.framework.Summary.Image) value_);
      }
      if (valueCase_ == 5) {
        output.writeMessage(5, (org.tensorflow.proto.framework.HistogramProto) value_);
      }
      if (valueCase_ == 6) {
        output.writeMessage(6, (org.tensorflow.proto.framework.Summary.Audio) value_);
      }
      if (!getNodeNameBytes().isEmpty()) {
        com.google.protobuf.GeneratedMessageV3.writeString(output, 7, nodeName_);
      }
      if (valueCase_ == 8) {
        output.writeMessage(8, (org.tensorflow.proto.framework.TensorProto) value_);
      }
      if (metadata_ != null) {
        output.writeMessage(9, getMetadata());
      }
      unknownFields.writeTo(output);
    }

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

      size = 0;
      if (!getTagBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, tag_);
      }
      if (valueCase_ == 2) {
        size += com.google.protobuf.CodedOutputStream
          .computeFloatSize(
              2, (float)((java.lang.Float) value_));
      }
      if (valueCase_ == 3) {
        size += com.google.protobuf.CodedOutputStream
          .computeBytesSize(
              3, (com.google.protobuf.ByteString) value_);
      }
      if (valueCase_ == 4) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(4, (org.tensorflow.proto.framework.Summary.Image) value_);
      }
      if (valueCase_ == 5) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(5, (org.tensorflow.proto.framework.HistogramProto) value_);
      }
      if (valueCase_ == 6) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(6, (org.tensorflow.proto.framework.Summary.Audio) value_);
      }
      if (!getNodeNameBytes().isEmpty()) {
        size += com.google.protobuf.GeneratedMessageV3.computeStringSize(7, nodeName_);
      }
      if (valueCase_ == 8) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(8, (org.tensorflow.proto.framework.TensorProto) value_);
      }
      if (metadata_ != null) {
        size += com.google.protobuf.CodedOutputStream
          .computeMessageSize(9, getMetadata());
      }
      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 org.tensorflow.proto.framework.Summary.Value)) {
        return super.equals(obj);
      }
      org.tensorflow.proto.framework.Summary.Value other = (org.tensorflow.proto.framework.Summary.Value) obj;

      if (!getNodeName()
          .equals(other.getNodeName())) return false;
      if (!getTag()
          .equals(other.getTag())) return false;
      if (hasMetadata() != other.hasMetadata()) return false;
      if (hasMetadata()) {
        if (!getMetadata()
            .equals(other.getMetadata())) return false;
      }
      if (!getValueCase().equals(other.getValueCase())) return false;
      switch (valueCase_) {
        case 2:
          if (java.lang.Float.floatToIntBits(getSimpleValue())
              != java.lang.Float.floatToIntBits(
                  other.getSimpleValue())) return false;
          break;
        case 3:
          if (!getObsoleteOldStyleHistogram()
              .equals(other.getObsoleteOldStyleHistogram())) return false;
          break;
        case 4:
          if (!getImage()
              .equals(other.getImage())) return false;
          break;
        case 5:
          if (!getHisto()
              .equals(other.getHisto())) return false;
          break;
        case 6:
          if (!getAudio()
              .equals(other.getAudio())) return false;
          break;
        case 8:
          if (!getTensor()
              .equals(other.getTensor())) return false;
          break;
        case 0:
        default:
      }
      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) + NODE_NAME_FIELD_NUMBER;
      hash = (53 * hash) + getNodeName().hashCode();
      hash = (37 * hash) + TAG_FIELD_NUMBER;
      hash = (53 * hash) + getTag().hashCode();
      if (hasMetadata()) {
        hash = (37 * hash) + METADATA_FIELD_NUMBER;
        hash = (53 * hash) + getMetadata().hashCode();
      }
      switch (valueCase_) {
        case 2:
          hash = (37 * hash) + SIMPLE_VALUE_FIELD_NUMBER;
          hash = (53 * hash) + java.lang.Float.floatToIntBits(
              getSimpleValue());
          break;
        case 3:
          hash = (37 * hash) + OBSOLETE_OLD_STYLE_HISTOGRAM_FIELD_NUMBER;
          hash = (53 * hash) + getObsoleteOldStyleHistogram().hashCode();
          break;
        case 4:
          hash = (37 * hash) + IMAGE_FIELD_NUMBER;
          hash = (53 * hash) + getImage().hashCode();
          break;
        case 5:
          hash = (37 * hash) + HISTO_FIELD_NUMBER;
          hash = (53 * hash) + getHisto().hashCode();
          break;
        case 6:
          hash = (37 * hash) + AUDIO_FIELD_NUMBER;
          hash = (53 * hash) + getAudio().hashCode();
          break;
        case 8:
          hash = (37 * hash) + TENSOR_FIELD_NUMBER;
          hash = (53 * hash) + getTensor().hashCode();
          break;
        case 0:
        default:
      }
      hash = (29 * hash) + unknownFields.hashCode();
      memoizedHashCode = hash;
      return hash;
    }

    public static org.tensorflow.proto.framework.Summary.Value parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return PARSER.parseFrom(data, extensionRegistry);
    }
    public static org.tensorflow.proto.framework.Summary.Value parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Value 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 org.tensorflow.proto.framework.Summary.Value parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseDelimitedWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Value 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 org.tensorflow.proto.framework.Summary.Value parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageV3
          .parseWithIOException(PARSER, input);
    }
    public static org.tensorflow.proto.framework.Summary.Value 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(org.tensorflow.proto.framework.Summary.Value 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 tensorflow.Summary.Value}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
        // @@protoc_insertion_point(builder_implements:tensorflow.Summary.Value)
        org.tensorflow.proto.framework.Summary.ValueOrBuilder {
      public static final com.google.protobuf.Descriptors.Descriptor
          getDescriptor() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Value_descriptor;
      }

      @java.lang.Override
      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
          internalGetFieldAccessorTable() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Value_fieldAccessorTable
            .ensureFieldAccessorsInitialized(
                org.tensorflow.proto.framework.Summary.Value.class, org.tensorflow.proto.framework.Summary.Value.Builder.class);
      }

      // Construct using org.tensorflow.proto.framework.Summary.Value.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();
        nodeName_ = "";

        tag_ = "";

        if (metadataBuilder_ == null) {
          metadata_ = null;
        } else {
          metadata_ = null;
          metadataBuilder_ = null;
        }
        valueCase_ = 0;
        value_ = null;
        return this;
      }

      @java.lang.Override
      public com.google.protobuf.Descriptors.Descriptor
          getDescriptorForType() {
        return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_Value_descriptor;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Value getDefaultInstanceForType() {
        return org.tensorflow.proto.framework.Summary.Value.getDefaultInstance();
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Value build() {
        org.tensorflow.proto.framework.Summary.Value result = buildPartial();
        if (!result.isInitialized()) {
          throw newUninitializedMessageException(result);
        }
        return result;
      }

      @java.lang.Override
      public org.tensorflow.proto.framework.Summary.Value buildPartial() {
        org.tensorflow.proto.framework.Summary.Value result = new org.tensorflow.proto.framework.Summary.Value(this);
        result.nodeName_ = nodeName_;
        result.tag_ = tag_;
        if (metadataBuilder_ == null) {
          result.metadata_ = metadata_;
        } else {
          result.metadata_ = metadataBuilder_.build();
        }
        if (valueCase_ == 2) {
          result.value_ = value_;
        }
        if (valueCase_ == 3) {
          result.value_ = value_;
        }
        if (valueCase_ == 4) {
          if (imageBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = imageBuilder_.build();
          }
        }
        if (valueCase_ == 5) {
          if (histoBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = histoBuilder_.build();
          }
        }
        if (valueCase_ == 6) {
          if (audioBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = audioBuilder_.build();
          }
        }
        if (valueCase_ == 8) {
          if (tensorBuilder_ == null) {
            result.value_ = value_;
          } else {
            result.value_ = tensorBuilder_.build();
          }
        }
        result.valueCase_ = valueCase_;
        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 org.tensorflow.proto.framework.Summary.Value) {
          return mergeFrom((org.tensorflow.proto.framework.Summary.Value)other);
        } else {
          super.mergeFrom(other);
          return this;
        }
      }

      public Builder mergeFrom(org.tensorflow.proto.framework.Summary.Value other) {
        if (other == org.tensorflow.proto.framework.Summary.Value.getDefaultInstance()) return this;
        if (!other.getNodeName().isEmpty()) {
          nodeName_ = other.nodeName_;
          onChanged();
        }
        if (!other.getTag().isEmpty()) {
          tag_ = other.tag_;
          onChanged();
        }
        if (other.hasMetadata()) {
          mergeMetadata(other.getMetadata());
        }
        switch (other.getValueCase()) {
          case SIMPLE_VALUE: {
            setSimpleValue(other.getSimpleValue());
            break;
          }
          case OBSOLETE_OLD_STYLE_HISTOGRAM: {
            setObsoleteOldStyleHistogram(other.getObsoleteOldStyleHistogram());
            break;
          }
          case IMAGE: {
            mergeImage(other.getImage());
            break;
          }
          case HISTO: {
            mergeHisto(other.getHisto());
            break;
          }
          case AUDIO: {
            mergeAudio(other.getAudio());
            break;
          }
          case TENSOR: {
            mergeTensor(other.getTensor());
            break;
          }
          case VALUE_NOT_SET: {
            break;
          }
        }
        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 {
        org.tensorflow.proto.framework.Summary.Value parsedMessage = null;
        try {
          parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
          parsedMessage = (org.tensorflow.proto.framework.Summary.Value) e.getUnfinishedMessage();
          throw e.unwrapIOException();
        } finally {
          if (parsedMessage != null) {
            mergeFrom(parsedMessage);
          }
        }
        return this;
      }
      private int valueCase_ = 0;
      private java.lang.Object value_;
      public ValueCase
          getValueCase() {
        return ValueCase.forNumber(
            valueCase_);
      }

      public Builder clearValue() {
        valueCase_ = 0;
        value_ = null;
        onChanged();
        return this;
      }


      private java.lang.Object nodeName_ = "";
      /**
       * <pre>
       * This field is deprecated and will not be set.
       * </pre>
       *
       * <code>string node_name = 7;</code>
       */
      public java.lang.String getNodeName() {
        java.lang.Object ref = nodeName_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          nodeName_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * This field is deprecated and will not be set.
       * </pre>
       *
       * <code>string node_name = 7;</code>
       */
      public com.google.protobuf.ByteString
          getNodeNameBytes() {
        java.lang.Object ref = nodeName_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          nodeName_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * This field is deprecated and will not be set.
       * </pre>
       *
       * <code>string node_name = 7;</code>
       */
      public Builder setNodeName(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        nodeName_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This field is deprecated and will not be set.
       * </pre>
       *
       * <code>string node_name = 7;</code>
       */
      public Builder clearNodeName() {
        
        nodeName_ = getDefaultInstance().getNodeName();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * This field is deprecated and will not be set.
       * </pre>
       *
       * <code>string node_name = 7;</code>
       */
      public Builder setNodeNameBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        nodeName_ = value;
        onChanged();
        return this;
      }

      private java.lang.Object tag_ = "";
      /**
       * <pre>
       * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
       * are often organized by scope (which contains slashes to convey
       * hierarchy). For example: foo/bar/0
       * </pre>
       *
       * <code>string tag = 1;</code>
       */
      public java.lang.String getTag() {
        java.lang.Object ref = tag_;
        if (!(ref instanceof java.lang.String)) {
          com.google.protobuf.ByteString bs =
              (com.google.protobuf.ByteString) ref;
          java.lang.String s = bs.toStringUtf8();
          tag_ = s;
          return s;
        } else {
          return (java.lang.String) ref;
        }
      }
      /**
       * <pre>
       * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
       * are often organized by scope (which contains slashes to convey
       * hierarchy). For example: foo/bar/0
       * </pre>
       *
       * <code>string tag = 1;</code>
       */
      public com.google.protobuf.ByteString
          getTagBytes() {
        java.lang.Object ref = tag_;
        if (ref instanceof String) {
          com.google.protobuf.ByteString b = 
              com.google.protobuf.ByteString.copyFromUtf8(
                  (java.lang.String) ref);
          tag_ = b;
          return b;
        } else {
          return (com.google.protobuf.ByteString) ref;
        }
      }
      /**
       * <pre>
       * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
       * are often organized by scope (which contains slashes to convey
       * hierarchy). For example: foo/bar/0
       * </pre>
       *
       * <code>string tag = 1;</code>
       */
      public Builder setTag(
          java.lang.String value) {
        if (value == null) {
    throw new NullPointerException();
  }
  
        tag_ = value;
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
       * are often organized by scope (which contains slashes to convey
       * hierarchy). For example: foo/bar/0
       * </pre>
       *
       * <code>string tag = 1;</code>
       */
      public Builder clearTag() {
        
        tag_ = getDefaultInstance().getTag();
        onChanged();
        return this;
      }
      /**
       * <pre>
       * Tag name for the data. Used by TensorBoard plugins to organize data. Tags
       * are often organized by scope (which contains slashes to convey
       * hierarchy). For example: foo/bar/0
       * </pre>
       *
       * <code>string tag = 1;</code>
       */
      public Builder setTagBytes(
          com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  checkByteStringIsUtf8(value);
        
        tag_ = value;
        onChanged();
        return this;
      }

      private org.tensorflow.proto.framework.SummaryMetadata metadata_;
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.SummaryMetadata, org.tensorflow.proto.framework.SummaryMetadata.Builder, org.tensorflow.proto.framework.SummaryMetadataOrBuilder> metadataBuilder_;
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public boolean hasMetadata() {
        return metadataBuilder_ != null || metadata_ != null;
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public org.tensorflow.proto.framework.SummaryMetadata getMetadata() {
        if (metadataBuilder_ == null) {
          return metadata_ == null ? org.tensorflow.proto.framework.SummaryMetadata.getDefaultInstance() : metadata_;
        } else {
          return metadataBuilder_.getMessage();
        }
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public Builder setMetadata(org.tensorflow.proto.framework.SummaryMetadata value) {
        if (metadataBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          metadata_ = value;
          onChanged();
        } else {
          metadataBuilder_.setMessage(value);
        }

        return this;
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public Builder setMetadata(
          org.tensorflow.proto.framework.SummaryMetadata.Builder builderForValue) {
        if (metadataBuilder_ == null) {
          metadata_ = builderForValue.build();
          onChanged();
        } else {
          metadataBuilder_.setMessage(builderForValue.build());
        }

        return this;
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public Builder mergeMetadata(org.tensorflow.proto.framework.SummaryMetadata value) {
        if (metadataBuilder_ == null) {
          if (metadata_ != null) {
            metadata_ =
              org.tensorflow.proto.framework.SummaryMetadata.newBuilder(metadata_).mergeFrom(value).buildPartial();
          } else {
            metadata_ = value;
          }
          onChanged();
        } else {
          metadataBuilder_.mergeFrom(value);
        }

        return this;
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public Builder clearMetadata() {
        if (metadataBuilder_ == null) {
          metadata_ = null;
          onChanged();
        } else {
          metadata_ = null;
          metadataBuilder_ = null;
        }

        return this;
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public org.tensorflow.proto.framework.SummaryMetadata.Builder getMetadataBuilder() {
        
        onChanged();
        return getMetadataFieldBuilder().getBuilder();
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      public org.tensorflow.proto.framework.SummaryMetadataOrBuilder getMetadataOrBuilder() {
        if (metadataBuilder_ != null) {
          return metadataBuilder_.getMessageOrBuilder();
        } else {
          return metadata_ == null ?
              org.tensorflow.proto.framework.SummaryMetadata.getDefaultInstance() : metadata_;
        }
      }
      /**
       * <pre>
       * Contains metadata on the summary value such as which plugins may use it.
       * Take note that many summary values may lack a metadata field. This is
       * because the FileWriter only keeps a metadata object on the first summary
       * value with a certain tag for each tag. TensorBoard then remembers which
       * tags are associated with which plugins. This saves space.
       * </pre>
       *
       * <code>.tensorflow.SummaryMetadata metadata = 9;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.SummaryMetadata, org.tensorflow.proto.framework.SummaryMetadata.Builder, org.tensorflow.proto.framework.SummaryMetadataOrBuilder> 
          getMetadataFieldBuilder() {
        if (metadataBuilder_ == null) {
          metadataBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.SummaryMetadata, org.tensorflow.proto.framework.SummaryMetadata.Builder, org.tensorflow.proto.framework.SummaryMetadataOrBuilder>(
                  getMetadata(),
                  getParentForChildren(),
                  isClean());
          metadata_ = null;
        }
        return metadataBuilder_;
      }

      /**
       * <code>float simple_value = 2;</code>
       */
      public float getSimpleValue() {
        if (valueCase_ == 2) {
          return (java.lang.Float) value_;
        }
        return 0F;
      }
      /**
       * <code>float simple_value = 2;</code>
       */
      public Builder setSimpleValue(float value) {
        valueCase_ = 2;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>float simple_value = 2;</code>
       */
      public Builder clearSimpleValue() {
        if (valueCase_ == 2) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      /**
       * <code>bytes obsolete_old_style_histogram = 3;</code>
       */
      public com.google.protobuf.ByteString getObsoleteOldStyleHistogram() {
        if (valueCase_ == 3) {
          return (com.google.protobuf.ByteString) value_;
        }
        return com.google.protobuf.ByteString.EMPTY;
      }
      /**
       * <code>bytes obsolete_old_style_histogram = 3;</code>
       */
      public Builder setObsoleteOldStyleHistogram(com.google.protobuf.ByteString value) {
        if (value == null) {
    throw new NullPointerException();
  }
  valueCase_ = 3;
        value_ = value;
        onChanged();
        return this;
      }
      /**
       * <code>bytes obsolete_old_style_histogram = 3;</code>
       */
      public Builder clearObsoleteOldStyleHistogram() {
        if (valueCase_ == 3) {
          valueCase_ = 0;
          value_ = null;
          onChanged();
        }
        return this;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.Summary.Image, org.tensorflow.proto.framework.Summary.Image.Builder, org.tensorflow.proto.framework.Summary.ImageOrBuilder> imageBuilder_;
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public boolean hasImage() {
        return valueCase_ == 4;
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public org.tensorflow.proto.framework.Summary.Image getImage() {
        if (imageBuilder_ == null) {
          if (valueCase_ == 4) {
            return (org.tensorflow.proto.framework.Summary.Image) value_;
          }
          return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
        } else {
          if (valueCase_ == 4) {
            return imageBuilder_.getMessage();
          }
          return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public Builder setImage(org.tensorflow.proto.framework.Summary.Image value) {
        if (imageBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          imageBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public Builder setImage(
          org.tensorflow.proto.framework.Summary.Image.Builder builderForValue) {
        if (imageBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          imageBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public Builder mergeImage(org.tensorflow.proto.framework.Summary.Image value) {
        if (imageBuilder_ == null) {
          if (valueCase_ == 4 &&
              value_ != org.tensorflow.proto.framework.Summary.Image.getDefaultInstance()) {
            value_ = org.tensorflow.proto.framework.Summary.Image.newBuilder((org.tensorflow.proto.framework.Summary.Image) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 4) {
            imageBuilder_.mergeFrom(value);
          }
          imageBuilder_.setMessage(value);
        }
        valueCase_ = 4;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public Builder clearImage() {
        if (imageBuilder_ == null) {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 4) {
            valueCase_ = 0;
            value_ = null;
          }
          imageBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public org.tensorflow.proto.framework.Summary.Image.Builder getImageBuilder() {
        return getImageFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      public org.tensorflow.proto.framework.Summary.ImageOrBuilder getImageOrBuilder() {
        if ((valueCase_ == 4) && (imageBuilder_ != null)) {
          return imageBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 4) {
            return (org.tensorflow.proto.framework.Summary.Image) value_;
          }
          return org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.Summary.Image image = 4;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.Summary.Image, org.tensorflow.proto.framework.Summary.Image.Builder, org.tensorflow.proto.framework.Summary.ImageOrBuilder> 
          getImageFieldBuilder() {
        if (imageBuilder_ == null) {
          if (!(valueCase_ == 4)) {
            value_ = org.tensorflow.proto.framework.Summary.Image.getDefaultInstance();
          }
          imageBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.Summary.Image, org.tensorflow.proto.framework.Summary.Image.Builder, org.tensorflow.proto.framework.Summary.ImageOrBuilder>(
                  (org.tensorflow.proto.framework.Summary.Image) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 4;
        onChanged();;
        return imageBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.HistogramProto, org.tensorflow.proto.framework.HistogramProto.Builder, org.tensorflow.proto.framework.HistogramProtoOrBuilder> histoBuilder_;
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public boolean hasHisto() {
        return valueCase_ == 5;
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public org.tensorflow.proto.framework.HistogramProto getHisto() {
        if (histoBuilder_ == null) {
          if (valueCase_ == 5) {
            return (org.tensorflow.proto.framework.HistogramProto) value_;
          }
          return org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
        } else {
          if (valueCase_ == 5) {
            return histoBuilder_.getMessage();
          }
          return org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public Builder setHisto(org.tensorflow.proto.framework.HistogramProto value) {
        if (histoBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          histoBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public Builder setHisto(
          org.tensorflow.proto.framework.HistogramProto.Builder builderForValue) {
        if (histoBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          histoBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public Builder mergeHisto(org.tensorflow.proto.framework.HistogramProto value) {
        if (histoBuilder_ == null) {
          if (valueCase_ == 5 &&
              value_ != org.tensorflow.proto.framework.HistogramProto.getDefaultInstance()) {
            value_ = org.tensorflow.proto.framework.HistogramProto.newBuilder((org.tensorflow.proto.framework.HistogramProto) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 5) {
            histoBuilder_.mergeFrom(value);
          }
          histoBuilder_.setMessage(value);
        }
        valueCase_ = 5;
        return this;
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public Builder clearHisto() {
        if (histoBuilder_ == null) {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 5) {
            valueCase_ = 0;
            value_ = null;
          }
          histoBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public org.tensorflow.proto.framework.HistogramProto.Builder getHistoBuilder() {
        return getHistoFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      public org.tensorflow.proto.framework.HistogramProtoOrBuilder getHistoOrBuilder() {
        if ((valueCase_ == 5) && (histoBuilder_ != null)) {
          return histoBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 5) {
            return (org.tensorflow.proto.framework.HistogramProto) value_;
          }
          return org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.HistogramProto histo = 5;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.HistogramProto, org.tensorflow.proto.framework.HistogramProto.Builder, org.tensorflow.proto.framework.HistogramProtoOrBuilder> 
          getHistoFieldBuilder() {
        if (histoBuilder_ == null) {
          if (!(valueCase_ == 5)) {
            value_ = org.tensorflow.proto.framework.HistogramProto.getDefaultInstance();
          }
          histoBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.HistogramProto, org.tensorflow.proto.framework.HistogramProto.Builder, org.tensorflow.proto.framework.HistogramProtoOrBuilder>(
                  (org.tensorflow.proto.framework.HistogramProto) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 5;
        onChanged();;
        return histoBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.Summary.Audio, org.tensorflow.proto.framework.Summary.Audio.Builder, org.tensorflow.proto.framework.Summary.AudioOrBuilder> audioBuilder_;
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public boolean hasAudio() {
        return valueCase_ == 6;
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public org.tensorflow.proto.framework.Summary.Audio getAudio() {
        if (audioBuilder_ == null) {
          if (valueCase_ == 6) {
            return (org.tensorflow.proto.framework.Summary.Audio) value_;
          }
          return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
        } else {
          if (valueCase_ == 6) {
            return audioBuilder_.getMessage();
          }
          return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public Builder setAudio(org.tensorflow.proto.framework.Summary.Audio value) {
        if (audioBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          audioBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public Builder setAudio(
          org.tensorflow.proto.framework.Summary.Audio.Builder builderForValue) {
        if (audioBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          audioBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public Builder mergeAudio(org.tensorflow.proto.framework.Summary.Audio value) {
        if (audioBuilder_ == null) {
          if (valueCase_ == 6 &&
              value_ != org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance()) {
            value_ = org.tensorflow.proto.framework.Summary.Audio.newBuilder((org.tensorflow.proto.framework.Summary.Audio) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 6) {
            audioBuilder_.mergeFrom(value);
          }
          audioBuilder_.setMessage(value);
        }
        valueCase_ = 6;
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public Builder clearAudio() {
        if (audioBuilder_ == null) {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 6) {
            valueCase_ = 0;
            value_ = null;
          }
          audioBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public org.tensorflow.proto.framework.Summary.Audio.Builder getAudioBuilder() {
        return getAudioFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      public org.tensorflow.proto.framework.Summary.AudioOrBuilder getAudioOrBuilder() {
        if ((valueCase_ == 6) && (audioBuilder_ != null)) {
          return audioBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 6) {
            return (org.tensorflow.proto.framework.Summary.Audio) value_;
          }
          return org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.Summary.Audio audio = 6;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.Summary.Audio, org.tensorflow.proto.framework.Summary.Audio.Builder, org.tensorflow.proto.framework.Summary.AudioOrBuilder> 
          getAudioFieldBuilder() {
        if (audioBuilder_ == null) {
          if (!(valueCase_ == 6)) {
            value_ = org.tensorflow.proto.framework.Summary.Audio.getDefaultInstance();
          }
          audioBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.Summary.Audio, org.tensorflow.proto.framework.Summary.Audio.Builder, org.tensorflow.proto.framework.Summary.AudioOrBuilder>(
                  (org.tensorflow.proto.framework.Summary.Audio) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 6;
        onChanged();;
        return audioBuilder_;
      }

      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.TensorProto, org.tensorflow.proto.framework.TensorProto.Builder, org.tensorflow.proto.framework.TensorProtoOrBuilder> tensorBuilder_;
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public boolean hasTensor() {
        return valueCase_ == 8;
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public org.tensorflow.proto.framework.TensorProto getTensor() {
        if (tensorBuilder_ == null) {
          if (valueCase_ == 8) {
            return (org.tensorflow.proto.framework.TensorProto) value_;
          }
          return org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
        } else {
          if (valueCase_ == 8) {
            return tensorBuilder_.getMessage();
          }
          return org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public Builder setTensor(org.tensorflow.proto.framework.TensorProto value) {
        if (tensorBuilder_ == null) {
          if (value == null) {
            throw new NullPointerException();
          }
          value_ = value;
          onChanged();
        } else {
          tensorBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public Builder setTensor(
          org.tensorflow.proto.framework.TensorProto.Builder builderForValue) {
        if (tensorBuilder_ == null) {
          value_ = builderForValue.build();
          onChanged();
        } else {
          tensorBuilder_.setMessage(builderForValue.build());
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public Builder mergeTensor(org.tensorflow.proto.framework.TensorProto value) {
        if (tensorBuilder_ == null) {
          if (valueCase_ == 8 &&
              value_ != org.tensorflow.proto.framework.TensorProto.getDefaultInstance()) {
            value_ = org.tensorflow.proto.framework.TensorProto.newBuilder((org.tensorflow.proto.framework.TensorProto) value_)
                .mergeFrom(value).buildPartial();
          } else {
            value_ = value;
          }
          onChanged();
        } else {
          if (valueCase_ == 8) {
            tensorBuilder_.mergeFrom(value);
          }
          tensorBuilder_.setMessage(value);
        }
        valueCase_ = 8;
        return this;
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public Builder clearTensor() {
        if (tensorBuilder_ == null) {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
            onChanged();
          }
        } else {
          if (valueCase_ == 8) {
            valueCase_ = 0;
            value_ = null;
          }
          tensorBuilder_.clear();
        }
        return this;
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public org.tensorflow.proto.framework.TensorProto.Builder getTensorBuilder() {
        return getTensorFieldBuilder().getBuilder();
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      public org.tensorflow.proto.framework.TensorProtoOrBuilder getTensorOrBuilder() {
        if ((valueCase_ == 8) && (tensorBuilder_ != null)) {
          return tensorBuilder_.getMessageOrBuilder();
        } else {
          if (valueCase_ == 8) {
            return (org.tensorflow.proto.framework.TensorProto) value_;
          }
          return org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
        }
      }
      /**
       * <code>.tensorflow.TensorProto tensor = 8;</code>
       */
      private com.google.protobuf.SingleFieldBuilderV3<
          org.tensorflow.proto.framework.TensorProto, org.tensorflow.proto.framework.TensorProto.Builder, org.tensorflow.proto.framework.TensorProtoOrBuilder> 
          getTensorFieldBuilder() {
        if (tensorBuilder_ == null) {
          if (!(valueCase_ == 8)) {
            value_ = org.tensorflow.proto.framework.TensorProto.getDefaultInstance();
          }
          tensorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
              org.tensorflow.proto.framework.TensorProto, org.tensorflow.proto.framework.TensorProto.Builder, org.tensorflow.proto.framework.TensorProtoOrBuilder>(
                  (org.tensorflow.proto.framework.TensorProto) value_,
                  getParentForChildren(),
                  isClean());
          value_ = null;
        }
        valueCase_ = 8;
        onChanged();;
        return tensorBuilder_;
      }
      @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:tensorflow.Summary.Value)
    }

    // @@protoc_insertion_point(class_scope:tensorflow.Summary.Value)
    private static final org.tensorflow.proto.framework.Summary.Value DEFAULT_INSTANCE;
    static {
      DEFAULT_INSTANCE = new org.tensorflow.proto.framework.Summary.Value();
    }

    public static org.tensorflow.proto.framework.Summary.Value getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

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

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

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

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary.Value getDefaultInstanceForType() {
      return DEFAULT_INSTANCE;
    }

  }

  public static final int VALUE_FIELD_NUMBER = 1;
  private java.util.List<org.tensorflow.proto.framework.Summary.Value> value_;
  /**
   * <pre>
   * Set of values for the summary.
   * </pre>
   *
   * <code>repeated .tensorflow.Summary.Value value = 1;</code>
   */
  public java.util.List<org.tensorflow.proto.framework.Summary.Value> getValueList() {
    return value_;
  }
  /**
   * <pre>
   * Set of values for the summary.
   * </pre>
   *
   * <code>repeated .tensorflow.Summary.Value value = 1;</code>
   */
  public java.util.List<? extends org.tensorflow.proto.framework.Summary.ValueOrBuilder> 
      getValueOrBuilderList() {
    return value_;
  }
  /**
   * <pre>
   * Set of values for the summary.
   * </pre>
   *
   * <code>repeated .tensorflow.Summary.Value value = 1;</code>
   */
  public int getValueCount() {
    return value_.size();
  }
  /**
   * <pre>
   * Set of values for the summary.
   * </pre>
   *
   * <code>repeated .tensorflow.Summary.Value value = 1;</code>
   */
  public org.tensorflow.proto.framework.Summary.Value getValue(int index) {
    return value_.get(index);
  }
  /**
   * <pre>
   * Set of values for the summary.
   * </pre>
   *
   * <code>repeated .tensorflow.Summary.Value value = 1;</code>
   */
  public org.tensorflow.proto.framework.Summary.ValueOrBuilder getValueOrBuilder(
      int index) {
    return value_.get(index);
  }

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

    memoizedIsInitialized = 1;
    return true;
  }

  @java.lang.Override
  public void writeTo(com.google.protobuf.CodedOutputStream output)
                      throws java.io.IOException {
    for (int i = 0; i < value_.size(); i++) {
      output.writeMessage(1, value_.get(i));
    }
    unknownFields.writeTo(output);
  }

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

    size = 0;
    for (int i = 0; i < value_.size(); i++) {
      size += com.google.protobuf.CodedOutputStream
        .computeMessageSize(1, value_.get(i));
    }
    size += unknownFields.getSerializedSize();
    memoizedSize = size;
    return size;
  }

  @java.lang.Override
  public boolean equals(final java.lang.Object obj) {
    if (obj == this) {
     return true;
    }
    if (!(obj instanceof org.tensorflow.proto.framework.Summary)) {
      return super.equals(obj);
    }
    org.tensorflow.proto.framework.Summary other = (org.tensorflow.proto.framework.Summary) obj;

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

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

  public static org.tensorflow.proto.framework.Summary parseFrom(
      java.nio.ByteBuffer data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(
      java.nio.ByteBuffer data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(
      com.google.protobuf.ByteString data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(
      com.google.protobuf.ByteString data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(byte[] data)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(
      byte[] data,
      com.google.protobuf.ExtensionRegistryLite extensionRegistry)
      throws com.google.protobuf.InvalidProtocolBufferException {
    return PARSER.parseFrom(data, extensionRegistry);
  }
  public static org.tensorflow.proto.framework.Summary parseFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.Summary 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 org.tensorflow.proto.framework.Summary parseDelimitedFrom(java.io.InputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseDelimitedWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.Summary 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 org.tensorflow.proto.framework.Summary parseFrom(
      com.google.protobuf.CodedInputStream input)
      throws java.io.IOException {
    return com.google.protobuf.GeneratedMessageV3
        .parseWithIOException(PARSER, input);
  }
  public static org.tensorflow.proto.framework.Summary 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(org.tensorflow.proto.framework.Summary 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 Summary is a set of named values to be displayed by the
   * visualizer.
   * Summaries are produced regularly during training, as controlled by
   * the "summary_interval_secs" attribute of the training operation.
   * Summaries are also produced at the end of an evaluation.
   * </pre>
   *
   * Protobuf type {@code tensorflow.Summary}
   */
  public static final class Builder extends
      com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
      // @@protoc_insertion_point(builder_implements:tensorflow.Summary)
      org.tensorflow.proto.framework.SummaryOrBuilder {
    public static final com.google.protobuf.Descriptors.Descriptor
        getDescriptor() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_descriptor;
    }

    @java.lang.Override
    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
        internalGetFieldAccessorTable() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_fieldAccessorTable
          .ensureFieldAccessorsInitialized(
              org.tensorflow.proto.framework.Summary.class, org.tensorflow.proto.framework.Summary.Builder.class);
    }

    // Construct using org.tensorflow.proto.framework.Summary.newBuilder()
    private Builder() {
      maybeForceBuilderInitialization();
    }

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

    @java.lang.Override
    public com.google.protobuf.Descriptors.Descriptor
        getDescriptorForType() {
      return org.tensorflow.proto.framework.SummaryProtos.internal_static_tensorflow_Summary_descriptor;
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary getDefaultInstanceForType() {
      return org.tensorflow.proto.framework.Summary.getDefaultInstance();
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary build() {
      org.tensorflow.proto.framework.Summary result = buildPartial();
      if (!result.isInitialized()) {
        throw newUninitializedMessageException(result);
      }
      return result;
    }

    @java.lang.Override
    public org.tensorflow.proto.framework.Summary buildPartial() {
      org.tensorflow.proto.framework.Summary result = new org.tensorflow.proto.framework.Summary(this);
      int from_bitField0_ = bitField0_;
      if (valueBuilder_ == null) {
        if (((bitField0_ & 0x00000001) != 0)) {
          value_ = java.util.Collections.unmodifiableList(value_);
          bitField0_ = (bitField0_ & ~0x00000001);
        }
        result.value_ = value_;
      } else {
        result.value_ = valueBuilder_.build();
      }
      onBuilt();
      return result;
    }

    @java.lang.Override
    public Builder clone() {
      return super.clone();
    }
    @java.lang.Override
    public Builder setField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.setField(field, value);
    }
    @java.lang.Override
    public Builder clearField(
        com.google.protobuf.Descriptors.FieldDescriptor field) {
      return super.clearField(field);
    }
    @java.lang.Override
    public Builder clearOneof(
        com.google.protobuf.Descriptors.OneofDescriptor oneof) {
      return super.clearOneof(oneof);
    }
    @java.lang.Override
    public Builder setRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        int index, java.lang.Object value) {
      return super.setRepeatedField(field, index, value);
    }
    @java.lang.Override
    public Builder addRepeatedField(
        com.google.protobuf.Descriptors.FieldDescriptor field,
        java.lang.Object value) {
      return super.addRepeatedField(field, value);
    }
    @java.lang.Override
    public Builder mergeFrom(com.google.protobuf.Message other) {
      if (other instanceof org.tensorflow.proto.framework.Summary) {
        return mergeFrom((org.tensorflow.proto.framework.Summary)other);
      } else {
        super.mergeFrom(other);
        return this;
      }
    }

    public Builder mergeFrom(org.tensorflow.proto.framework.Summary other) {
      if (other == org.tensorflow.proto.framework.Summary.getDefaultInstance()) return this;
      if (valueBuilder_ == null) {
        if (!other.value_.isEmpty()) {
          if (value_.isEmpty()) {
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000001);
          } else {
            ensureValueIsMutable();
            value_.addAll(other.value_);
          }
          onChanged();
        }
      } else {
        if (!other.value_.isEmpty()) {
          if (valueBuilder_.isEmpty()) {
            valueBuilder_.dispose();
            valueBuilder_ = null;
            value_ = other.value_;
            bitField0_ = (bitField0_ & ~0x00000001);
            valueBuilder_ = 
              com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
                 getValueFieldBuilder() : null;
          } else {
            valueBuilder_.addAllMessages(other.value_);
          }
        }
      }
      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 {
      org.tensorflow.proto.framework.Summary parsedMessage = null;
      try {
        parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
        parsedMessage = (org.tensorflow.proto.framework.Summary) e.getUnfinishedMessage();
        throw e.unwrapIOException();
      } finally {
        if (parsedMessage != null) {
          mergeFrom(parsedMessage);
        }
      }
      return this;
    }
    private int bitField0_;

    private java.util.List<org.tensorflow.proto.framework.Summary.Value> value_ =
      java.util.Collections.emptyList();
    private void ensureValueIsMutable() {
      if (!((bitField0_ & 0x00000001) != 0)) {
        value_ = new java.util.ArrayList<org.tensorflow.proto.framework.Summary.Value>(value_);
        bitField0_ |= 0x00000001;
       }
    }

    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.Summary.Value, org.tensorflow.proto.framework.Summary.Value.Builder, org.tensorflow.proto.framework.Summary.ValueOrBuilder> valueBuilder_;

    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.Summary.Value> getValueList() {
      if (valueBuilder_ == null) {
        return java.util.Collections.unmodifiableList(value_);
      } else {
        return valueBuilder_.getMessageList();
      }
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public int getValueCount() {
      if (valueBuilder_ == null) {
        return value_.size();
      } else {
        return valueBuilder_.getCount();
      }
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public org.tensorflow.proto.framework.Summary.Value getValue(int index) {
      if (valueBuilder_ == null) {
        return value_.get(index);
      } else {
        return valueBuilder_.getMessage(index);
      }
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder setValue(
        int index, org.tensorflow.proto.framework.Summary.Value value) {
      if (valueBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueIsMutable();
        value_.set(index, value);
        onChanged();
      } else {
        valueBuilder_.setMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder setValue(
        int index, org.tensorflow.proto.framework.Summary.Value.Builder builderForValue) {
      if (valueBuilder_ == null) {
        ensureValueIsMutable();
        value_.set(index, builderForValue.build());
        onChanged();
      } else {
        valueBuilder_.setMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder addValue(org.tensorflow.proto.framework.Summary.Value value) {
      if (valueBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueIsMutable();
        value_.add(value);
        onChanged();
      } else {
        valueBuilder_.addMessage(value);
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder addValue(
        int index, org.tensorflow.proto.framework.Summary.Value value) {
      if (valueBuilder_ == null) {
        if (value == null) {
          throw new NullPointerException();
        }
        ensureValueIsMutable();
        value_.add(index, value);
        onChanged();
      } else {
        valueBuilder_.addMessage(index, value);
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder addValue(
        org.tensorflow.proto.framework.Summary.Value.Builder builderForValue) {
      if (valueBuilder_ == null) {
        ensureValueIsMutable();
        value_.add(builderForValue.build());
        onChanged();
      } else {
        valueBuilder_.addMessage(builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder addValue(
        int index, org.tensorflow.proto.framework.Summary.Value.Builder builderForValue) {
      if (valueBuilder_ == null) {
        ensureValueIsMutable();
        value_.add(index, builderForValue.build());
        onChanged();
      } else {
        valueBuilder_.addMessage(index, builderForValue.build());
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder addAllValue(
        java.lang.Iterable<? extends org.tensorflow.proto.framework.Summary.Value> values) {
      if (valueBuilder_ == null) {
        ensureValueIsMutable();
        com.google.protobuf.AbstractMessageLite.Builder.addAll(
            values, value_);
        onChanged();
      } else {
        valueBuilder_.addAllMessages(values);
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder clearValue() {
      if (valueBuilder_ == null) {
        value_ = java.util.Collections.emptyList();
        bitField0_ = (bitField0_ & ~0x00000001);
        onChanged();
      } else {
        valueBuilder_.clear();
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public Builder removeValue(int index) {
      if (valueBuilder_ == null) {
        ensureValueIsMutable();
        value_.remove(index);
        onChanged();
      } else {
        valueBuilder_.remove(index);
      }
      return this;
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public org.tensorflow.proto.framework.Summary.Value.Builder getValueBuilder(
        int index) {
      return getValueFieldBuilder().getBuilder(index);
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public org.tensorflow.proto.framework.Summary.ValueOrBuilder getValueOrBuilder(
        int index) {
      if (valueBuilder_ == null) {
        return value_.get(index);  } else {
        return valueBuilder_.getMessageOrBuilder(index);
      }
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public java.util.List<? extends org.tensorflow.proto.framework.Summary.ValueOrBuilder> 
         getValueOrBuilderList() {
      if (valueBuilder_ != null) {
        return valueBuilder_.getMessageOrBuilderList();
      } else {
        return java.util.Collections.unmodifiableList(value_);
      }
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public org.tensorflow.proto.framework.Summary.Value.Builder addValueBuilder() {
      return getValueFieldBuilder().addBuilder(
          org.tensorflow.proto.framework.Summary.Value.getDefaultInstance());
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public org.tensorflow.proto.framework.Summary.Value.Builder addValueBuilder(
        int index) {
      return getValueFieldBuilder().addBuilder(
          index, org.tensorflow.proto.framework.Summary.Value.getDefaultInstance());
    }
    /**
     * <pre>
     * Set of values for the summary.
     * </pre>
     *
     * <code>repeated .tensorflow.Summary.Value value = 1;</code>
     */
    public java.util.List<org.tensorflow.proto.framework.Summary.Value.Builder> 
         getValueBuilderList() {
      return getValueFieldBuilder().getBuilderList();
    }
    private com.google.protobuf.RepeatedFieldBuilderV3<
        org.tensorflow.proto.framework.Summary.Value, org.tensorflow.proto.framework.Summary.Value.Builder, org.tensorflow.proto.framework.Summary.ValueOrBuilder> 
        getValueFieldBuilder() {
      if (valueBuilder_ == null) {
        valueBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
            org.tensorflow.proto.framework.Summary.Value, org.tensorflow.proto.framework.Summary.Value.Builder, org.tensorflow.proto.framework.Summary.ValueOrBuilder>(
                value_,
                ((bitField0_ & 0x00000001) != 0),
                getParentForChildren(),
                isClean());
        value_ = null;
      }
      return valueBuilder_;
    }
    @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:tensorflow.Summary)
  }

  // @@protoc_insertion_point(class_scope:tensorflow.Summary)
  private static final org.tensorflow.proto.framework.Summary DEFAULT_INSTANCE;
  static {
    DEFAULT_INSTANCE = new org.tensorflow.proto.framework.Summary();
  }

  public static org.tensorflow.proto.framework.Summary getDefaultInstance() {
    return DEFAULT_INSTANCE;
  }

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

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

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

  @java.lang.Override
  public org.tensorflow.proto.framework.Summary getDefaultInstanceForType() {
    return DEFAULT_INSTANCE;
  }

}

