// <auto-generated>
//     Generated by the protocol buffer compiler.  DO NOT EDIT!
//     source: tensorflow/core/framework/attr_value.proto
// </auto-generated>
#pragma warning disable 1591, 0612, 3021
#region Designer generated code

using pb = global::Google.Protobuf;
using pbc = global::Google.Protobuf.Collections;
using pbr = global::Google.Protobuf.Reflection;
using scg = global::System.Collections.Generic;
namespace Tensorflow {

  /// <summary>Holder for reflection information generated from tensorflow/core/framework/attr_value.proto</summary>
  public static partial class AttrValueReflection {

    #region Descriptor
    /// <summary>File descriptor for tensorflow/core/framework/attr_value.proto</summary>
    public static pbr::FileDescriptor Descriptor {
      get { return descriptor; }
    }
    private static pbr::FileDescriptor descriptor;

    static AttrValueReflection() {
      byte[] descriptorData = global::System.Convert.FromBase64String(
          string.Concat(
            "Cip0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL2F0dHJfdmFsdWUucHJvdG8S",
            "CnRlbnNvcmZsb3caJnRlbnNvcmZsb3cvY29yZS9mcmFtZXdvcmsvdGVuc29y",
            "LnByb3RvGix0ZW5zb3JmbG93L2NvcmUvZnJhbWV3b3JrL3RlbnNvcl9zaGFw",
            "ZS5wcm90bxoldGVuc29yZmxvdy9jb3JlL2ZyYW1ld29yay90eXBlcy5wcm90",
            "byKmBAoJQXR0clZhbHVlEgsKAXMYAiABKAxIABILCgFpGAMgASgDSAASCwoB",
            "ZhgEIAEoAkgAEgsKAWIYBSABKAhIABIkCgR0eXBlGAYgASgOMhQudGVuc29y",
            "Zmxvdy5EYXRhVHlwZUgAEi0KBXNoYXBlGAcgASgLMhwudGVuc29yZmxvdy5U",
            "ZW5zb3JTaGFwZVByb3RvSAASKQoGdGVuc29yGAggASgLMhcudGVuc29yZmxv",
            "dy5UZW5zb3JQcm90b0gAEi8KBGxpc3QYASABKAsyHy50ZW5zb3JmbG93LkF0",
            "dHJWYWx1ZS5MaXN0VmFsdWVIABIoCgRmdW5jGAogASgLMhgudGVuc29yZmxv",
            "dy5OYW1lQXR0ckxpc3RIABIVCgtwbGFjZWhvbGRlchgJIAEoCUgAGukBCglM",
            "aXN0VmFsdWUSCQoBcxgCIAMoDBINCgFpGAMgAygDQgIQARINCgFmGAQgAygC",
            "QgIQARINCgFiGAUgAygIQgIQARImCgR0eXBlGAYgAygOMhQudGVuc29yZmxv",
            "dy5EYXRhVHlwZUICEAESKwoFc2hhcGUYByADKAsyHC50ZW5zb3JmbG93LlRl",
            "bnNvclNoYXBlUHJvdG8SJwoGdGVuc29yGAggAygLMhcudGVuc29yZmxvdy5U",
            "ZW5zb3JQcm90bxImCgRmdW5jGAkgAygLMhgudGVuc29yZmxvdy5OYW1lQXR0",
            "ckxpc3RCBwoFdmFsdWUikgEKDE5hbWVBdHRyTGlzdBIMCgRuYW1lGAEgASgJ",
            "EjAKBGF0dHIYAiADKAsyIi50ZW5zb3JmbG93Lk5hbWVBdHRyTGlzdC5BdHRy",
            "RW50cnkaQgoJQXR0ckVudHJ5EgsKA2tleRgBIAEoCRIkCgV2YWx1ZRgCIAEo",
            "CzIVLnRlbnNvcmZsb3cuQXR0clZhbHVlOgI4AUJvChhvcmcudGVuc29yZmxv",
            "dy5mcmFtZXdvcmtCD0F0dHJWYWx1ZVByb3Rvc1ABWj1naXRodWIuY29tL3Rl",
            "bnNvcmZsb3cvdGVuc29yZmxvdy90ZW5zb3JmbG93L2dvL2NvcmUvZnJhbWV3",
            "b3Jr+AEBYgZwcm90bzM="));
      descriptor = pbr::FileDescriptor.FromGeneratedCode(descriptorData,
          new pbr::FileDescriptor[] { global::Tensorflow.TensorReflection.Descriptor, global::Tensorflow.TensorShapeReflection.Descriptor, global::Tensorflow.TypesReflection.Descriptor, },
          new pbr::GeneratedClrTypeInfo(null, new pbr::GeneratedClrTypeInfo[] {
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.AttrValue), global::Tensorflow.AttrValue.Parser, new[]{ "S", "I", "F", "B", "Type", "Shape", "Tensor", "List", "Func", "Placeholder" }, new[]{ "Value" }, null, new pbr::GeneratedClrTypeInfo[] { new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.AttrValue.Types.ListValue), global::Tensorflow.AttrValue.Types.ListValue.Parser, new[]{ "S", "I", "F", "B", "Type", "Shape", "Tensor", "Func" }, null, null, null)}),
            new pbr::GeneratedClrTypeInfo(typeof(global::Tensorflow.NameAttrList), global::Tensorflow.NameAttrList.Parser, new[]{ "Name", "Attr" }, null, null, new pbr::GeneratedClrTypeInfo[] { null, })
          }));
    }
    #endregion

  }
  #region Messages
  /// <summary>
  /// Protocol buffer representing the value for an attr used to configure an Op.
  /// Comment indicates the corresponding attr type.  Only the field matching the
  /// attr type may be filled.
  /// </summary>
  public sealed partial class AttrValue : pb::IMessage<AttrValue> {
    private static readonly pb::MessageParser<AttrValue> _parser = new pb::MessageParser<AttrValue>(() => new AttrValue());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<AttrValue> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Tensorflow.AttrValueReflection.Descriptor.MessageTypes[0]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public AttrValue() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public AttrValue(AttrValue other) : this() {
      switch (other.ValueCase) {
        case ValueOneofCase.S:
          S = other.S;
          break;
        case ValueOneofCase.I:
          I = other.I;
          break;
        case ValueOneofCase.F:
          F = other.F;
          break;
        case ValueOneofCase.B:
          B = other.B;
          break;
        case ValueOneofCase.Type:
          Type = other.Type;
          break;
        case ValueOneofCase.Shape:
          Shape = other.Shape.Clone();
          break;
        case ValueOneofCase.Tensor:
          Tensor = other.Tensor.Clone();
          break;
        case ValueOneofCase.List:
          List = other.List.Clone();
          break;
        case ValueOneofCase.Func:
          Func = other.Func.Clone();
          break;
        case ValueOneofCase.Placeholder:
          Placeholder = other.Placeholder;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public AttrValue Clone() {
      return new AttrValue(this);
    }

    /// <summary>Field number for the "s" field.</summary>
    public const int SFieldNumber = 2;
    /// <summary>
    /// "string"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pb::ByteString S {
      get { return valueCase_ == ValueOneofCase.S ? (pb::ByteString) value_ : pb::ByteString.Empty; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        valueCase_ = ValueOneofCase.S;
      }
    }

    /// <summary>Field number for the "i" field.</summary>
    public const int IFieldNumber = 3;
    /// <summary>
    /// "int"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public long I {
      get { return valueCase_ == ValueOneofCase.I ? (long) value_ : 0L; }
      set {
        value_ = value;
        valueCase_ = ValueOneofCase.I;
      }
    }

    /// <summary>Field number for the "f" field.</summary>
    public const int FFieldNumber = 4;
    /// <summary>
    /// "float"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public float F {
      get { return valueCase_ == ValueOneofCase.F ? (float) value_ : 0F; }
      set {
        value_ = value;
        valueCase_ = ValueOneofCase.F;
      }
    }

    /// <summary>Field number for the "b" field.</summary>
    public const int BFieldNumber = 5;
    /// <summary>
    /// "bool"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool B {
      get { return valueCase_ == ValueOneofCase.B ? (bool) value_ : false; }
      set {
        value_ = value;
        valueCase_ = ValueOneofCase.B;
      }
    }

    /// <summary>Field number for the "type" field.</summary>
    public const int TypeFieldNumber = 6;
    /// <summary>
    /// "type"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.DataType Type {
      get { return valueCase_ == ValueOneofCase.Type ? (global::Tensorflow.DataType) value_ : 0; }
      set {
        value_ = value;
        valueCase_ = ValueOneofCase.Type;
      }
    }

    /// <summary>Field number for the "shape" field.</summary>
    public const int ShapeFieldNumber = 7;
    /// <summary>
    /// "shape"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.TensorShapeProto Shape {
      get { return valueCase_ == ValueOneofCase.Shape ? (global::Tensorflow.TensorShapeProto) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Shape;
      }
    }

    /// <summary>Field number for the "tensor" field.</summary>
    public const int TensorFieldNumber = 8;
    /// <summary>
    /// "tensor"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.TensorProto Tensor {
      get { return valueCase_ == ValueOneofCase.Tensor ? (global::Tensorflow.TensorProto) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Tensor;
      }
    }

    /// <summary>Field number for the "list" field.</summary>
    public const int ListFieldNumber = 1;
    /// <summary>
    /// any "list(...)"
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.AttrValue.Types.ListValue List {
      get { return valueCase_ == ValueOneofCase.List ? (global::Tensorflow.AttrValue.Types.ListValue) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.List;
      }
    }

    /// <summary>Field number for the "func" field.</summary>
    public const int FuncFieldNumber = 10;
    /// <summary>
    /// "func" represents a function. func.name is a function's name or
    /// a primitive op's name. func.attr.first is the name of an attr
    /// defined for that function. func.attr.second is the value for
    /// that attr in the instantiation.
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public global::Tensorflow.NameAttrList Func {
      get { return valueCase_ == ValueOneofCase.Func ? (global::Tensorflow.NameAttrList) value_ : null; }
      set {
        value_ = value;
        valueCase_ = value == null ? ValueOneofCase.None : ValueOneofCase.Func;
      }
    }

    /// <summary>Field number for the "placeholder" field.</summary>
    public const int PlaceholderFieldNumber = 9;
    /// <summary>
    /// This is a placeholder only used in nodes defined inside a
    /// function.  It indicates the attr value will be supplied when
    /// the function is instantiated.  For example, let us suppose a
    /// node "N" in function "FN". "N" has an attr "A" with value
    /// placeholder = "foo". When FN is instantiated with attr "foo"
    /// set to "bar", the instantiated node N's attr A will have been
    /// given the value "bar".
    /// </summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Placeholder {
      get { return valueCase_ == ValueOneofCase.Placeholder ? (string) value_ : ""; }
      set {
        value_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
        valueCase_ = ValueOneofCase.Placeholder;
      }
    }

    private object value_;
    /// <summary>Enum of possible cases for the "value" oneof.</summary>
    public enum ValueOneofCase {
      None = 0,
      S = 2,
      I = 3,
      F = 4,
      B = 5,
      Type = 6,
      Shape = 7,
      Tensor = 8,
      List = 1,
      Func = 10,
      Placeholder = 9,
    }
    private ValueOneofCase valueCase_ = ValueOneofCase.None;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public ValueOneofCase ValueCase {
      get { return valueCase_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void ClearValue() {
      valueCase_ = ValueOneofCase.None;
      value_ = null;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as AttrValue);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(AttrValue other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (S != other.S) return false;
      if (I != other.I) return false;
      if (!pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.Equals(F, other.F)) return false;
      if (B != other.B) return false;
      if (Type != other.Type) return false;
      if (!object.Equals(Shape, other.Shape)) return false;
      if (!object.Equals(Tensor, other.Tensor)) return false;
      if (!object.Equals(List, other.List)) return false;
      if (!object.Equals(Func, other.Func)) return false;
      if (Placeholder != other.Placeholder) return false;
      if (ValueCase != other.ValueCase) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (valueCase_ == ValueOneofCase.S) hash ^= S.GetHashCode();
      if (valueCase_ == ValueOneofCase.I) hash ^= I.GetHashCode();
      if (valueCase_ == ValueOneofCase.F) hash ^= pbc::ProtobufEqualityComparers.BitwiseSingleEqualityComparer.GetHashCode(F);
      if (valueCase_ == ValueOneofCase.B) hash ^= B.GetHashCode();
      if (valueCase_ == ValueOneofCase.Type) hash ^= Type.GetHashCode();
      if (valueCase_ == ValueOneofCase.Shape) hash ^= Shape.GetHashCode();
      if (valueCase_ == ValueOneofCase.Tensor) hash ^= Tensor.GetHashCode();
      if (valueCase_ == ValueOneofCase.List) hash ^= List.GetHashCode();
      if (valueCase_ == ValueOneofCase.Func) hash ^= Func.GetHashCode();
      if (valueCase_ == ValueOneofCase.Placeholder) hash ^= Placeholder.GetHashCode();
      hash ^= (int) valueCase_;
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (valueCase_ == ValueOneofCase.List) {
        output.WriteRawTag(10);
        output.WriteMessage(List);
      }
      if (valueCase_ == ValueOneofCase.S) {
        output.WriteRawTag(18);
        output.WriteBytes(S);
      }
      if (valueCase_ == ValueOneofCase.I) {
        output.WriteRawTag(24);
        output.WriteInt64(I);
      }
      if (valueCase_ == ValueOneofCase.F) {
        output.WriteRawTag(37);
        output.WriteFloat(F);
      }
      if (valueCase_ == ValueOneofCase.B) {
        output.WriteRawTag(40);
        output.WriteBool(B);
      }
      if (valueCase_ == ValueOneofCase.Type) {
        output.WriteRawTag(48);
        output.WriteEnum((int) Type);
      }
      if (valueCase_ == ValueOneofCase.Shape) {
        output.WriteRawTag(58);
        output.WriteMessage(Shape);
      }
      if (valueCase_ == ValueOneofCase.Tensor) {
        output.WriteRawTag(66);
        output.WriteMessage(Tensor);
      }
      if (valueCase_ == ValueOneofCase.Placeholder) {
        output.WriteRawTag(74);
        output.WriteString(Placeholder);
      }
      if (valueCase_ == ValueOneofCase.Func) {
        output.WriteRawTag(82);
        output.WriteMessage(Func);
      }
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (valueCase_ == ValueOneofCase.S) {
        size += 1 + pb::CodedOutputStream.ComputeBytesSize(S);
      }
      if (valueCase_ == ValueOneofCase.I) {
        size += 1 + pb::CodedOutputStream.ComputeInt64Size(I);
      }
      if (valueCase_ == ValueOneofCase.F) {
        size += 1 + 4;
      }
      if (valueCase_ == ValueOneofCase.B) {
        size += 1 + 1;
      }
      if (valueCase_ == ValueOneofCase.Type) {
        size += 1 + pb::CodedOutputStream.ComputeEnumSize((int) Type);
      }
      if (valueCase_ == ValueOneofCase.Shape) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Shape);
      }
      if (valueCase_ == ValueOneofCase.Tensor) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Tensor);
      }
      if (valueCase_ == ValueOneofCase.List) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(List);
      }
      if (valueCase_ == ValueOneofCase.Func) {
        size += 1 + pb::CodedOutputStream.ComputeMessageSize(Func);
      }
      if (valueCase_ == ValueOneofCase.Placeholder) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Placeholder);
      }
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(AttrValue other) {
      if (other == null) {
        return;
      }
      switch (other.ValueCase) {
        case ValueOneofCase.S:
          S = other.S;
          break;
        case ValueOneofCase.I:
          I = other.I;
          break;
        case ValueOneofCase.F:
          F = other.F;
          break;
        case ValueOneofCase.B:
          B = other.B;
          break;
        case ValueOneofCase.Type:
          Type = other.Type;
          break;
        case ValueOneofCase.Shape:
          if (Shape == null) {
            Shape = new global::Tensorflow.TensorShapeProto();
          }
          Shape.MergeFrom(other.Shape);
          break;
        case ValueOneofCase.Tensor:
          if (Tensor == null) {
            Tensor = new global::Tensorflow.TensorProto();
          }
          Tensor.MergeFrom(other.Tensor);
          break;
        case ValueOneofCase.List:
          if (List == null) {
            List = new global::Tensorflow.AttrValue.Types.ListValue();
          }
          List.MergeFrom(other.List);
          break;
        case ValueOneofCase.Func:
          if (Func == null) {
            Func = new global::Tensorflow.NameAttrList();
          }
          Func.MergeFrom(other.Func);
          break;
        case ValueOneofCase.Placeholder:
          Placeholder = other.Placeholder;
          break;
      }

      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            global::Tensorflow.AttrValue.Types.ListValue subBuilder = new global::Tensorflow.AttrValue.Types.ListValue();
            if (valueCase_ == ValueOneofCase.List) {
              subBuilder.MergeFrom(List);
            }
            input.ReadMessage(subBuilder);
            List = subBuilder;
            break;
          }
          case 18: {
            S = input.ReadBytes();
            break;
          }
          case 24: {
            I = input.ReadInt64();
            break;
          }
          case 37: {
            F = input.ReadFloat();
            break;
          }
          case 40: {
            B = input.ReadBool();
            break;
          }
          case 48: {
            value_ = input.ReadEnum();
            valueCase_ = ValueOneofCase.Type;
            break;
          }
          case 58: {
            global::Tensorflow.TensorShapeProto subBuilder = new global::Tensorflow.TensorShapeProto();
            if (valueCase_ == ValueOneofCase.Shape) {
              subBuilder.MergeFrom(Shape);
            }
            input.ReadMessage(subBuilder);
            Shape = subBuilder;
            break;
          }
          case 66: {
            global::Tensorflow.TensorProto subBuilder = new global::Tensorflow.TensorProto();
            if (valueCase_ == ValueOneofCase.Tensor) {
              subBuilder.MergeFrom(Tensor);
            }
            input.ReadMessage(subBuilder);
            Tensor = subBuilder;
            break;
          }
          case 74: {
            Placeholder = input.ReadString();
            break;
          }
          case 82: {
            global::Tensorflow.NameAttrList subBuilder = new global::Tensorflow.NameAttrList();
            if (valueCase_ == ValueOneofCase.Func) {
              subBuilder.MergeFrom(Func);
            }
            input.ReadMessage(subBuilder);
            Func = subBuilder;
            break;
          }
        }
      }
    }

    #region Nested types
    /// <summary>Container for nested types declared in the AttrValue message type.</summary>
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static partial class Types {
      /// <summary>
      /// LINT.IfChange
      /// </summary>
      public sealed partial class ListValue : pb::IMessage<ListValue> {
        private static readonly pb::MessageParser<ListValue> _parser = new pb::MessageParser<ListValue>(() => new ListValue());
        private pb::UnknownFieldSet _unknownFields;
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pb::MessageParser<ListValue> Parser { get { return _parser; } }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public static pbr::MessageDescriptor Descriptor {
          get { return global::Tensorflow.AttrValue.Descriptor.NestedTypes[0]; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        pbr::MessageDescriptor pb::IMessage.Descriptor {
          get { return Descriptor; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ListValue() {
          OnConstruction();
        }

        partial void OnConstruction();

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ListValue(ListValue other) : this() {
          s_ = other.s_.Clone();
          i_ = other.i_.Clone();
          f_ = other.f_.Clone();
          b_ = other.b_.Clone();
          type_ = other.type_.Clone();
          shape_ = other.shape_.Clone();
          tensor_ = other.tensor_.Clone();
          func_ = other.func_.Clone();
          _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public ListValue Clone() {
          return new ListValue(this);
        }

        /// <summary>Field number for the "s" field.</summary>
        public const int SFieldNumber = 2;
        private static readonly pb::FieldCodec<pb::ByteString> _repeated_s_codec
            = pb::FieldCodec.ForBytes(18);
        private readonly pbc::RepeatedField<pb::ByteString> s_ = new pbc::RepeatedField<pb::ByteString>();
        /// <summary>
        /// "list(string)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<pb::ByteString> S {
          get { return s_; }
        }

        /// <summary>Field number for the "i" field.</summary>
        public const int IFieldNumber = 3;
        private static readonly pb::FieldCodec<long> _repeated_i_codec
            = pb::FieldCodec.ForInt64(26);
        private readonly pbc::RepeatedField<long> i_ = new pbc::RepeatedField<long>();
        /// <summary>
        /// "list(int)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<long> I {
          get { return i_; }
        }

        /// <summary>Field number for the "f" field.</summary>
        public const int FFieldNumber = 4;
        private static readonly pb::FieldCodec<float> _repeated_f_codec
            = pb::FieldCodec.ForFloat(34);
        private readonly pbc::RepeatedField<float> f_ = new pbc::RepeatedField<float>();
        /// <summary>
        /// "list(float)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<float> F {
          get { return f_; }
        }

        /// <summary>Field number for the "b" field.</summary>
        public const int BFieldNumber = 5;
        private static readonly pb::FieldCodec<bool> _repeated_b_codec
            = pb::FieldCodec.ForBool(42);
        private readonly pbc::RepeatedField<bool> b_ = new pbc::RepeatedField<bool>();
        /// <summary>
        /// "list(bool)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<bool> B {
          get { return b_; }
        }

        /// <summary>Field number for the "type" field.</summary>
        public const int TypeFieldNumber = 6;
        private static readonly pb::FieldCodec<global::Tensorflow.DataType> _repeated_type_codec
            = pb::FieldCodec.ForEnum(50, x => (int) x, x => (global::Tensorflow.DataType) x);
        private readonly pbc::RepeatedField<global::Tensorflow.DataType> type_ = new pbc::RepeatedField<global::Tensorflow.DataType>();
        /// <summary>
        /// "list(type)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Tensorflow.DataType> Type {
          get { return type_; }
        }

        /// <summary>Field number for the "shape" field.</summary>
        public const int ShapeFieldNumber = 7;
        private static readonly pb::FieldCodec<global::Tensorflow.TensorShapeProto> _repeated_shape_codec
            = pb::FieldCodec.ForMessage(58, global::Tensorflow.TensorShapeProto.Parser);
        private readonly pbc::RepeatedField<global::Tensorflow.TensorShapeProto> shape_ = new pbc::RepeatedField<global::Tensorflow.TensorShapeProto>();
        /// <summary>
        /// "list(shape)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Tensorflow.TensorShapeProto> Shape {
          get { return shape_; }
        }

        /// <summary>Field number for the "tensor" field.</summary>
        public const int TensorFieldNumber = 8;
        private static readonly pb::FieldCodec<global::Tensorflow.TensorProto> _repeated_tensor_codec
            = pb::FieldCodec.ForMessage(66, global::Tensorflow.TensorProto.Parser);
        private readonly pbc::RepeatedField<global::Tensorflow.TensorProto> tensor_ = new pbc::RepeatedField<global::Tensorflow.TensorProto>();
        /// <summary>
        /// "list(tensor)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Tensorflow.TensorProto> Tensor {
          get { return tensor_; }
        }

        /// <summary>Field number for the "func" field.</summary>
        public const int FuncFieldNumber = 9;
        private static readonly pb::FieldCodec<global::Tensorflow.NameAttrList> _repeated_func_codec
            = pb::FieldCodec.ForMessage(74, global::Tensorflow.NameAttrList.Parser);
        private readonly pbc::RepeatedField<global::Tensorflow.NameAttrList> func_ = new pbc::RepeatedField<global::Tensorflow.NameAttrList>();
        /// <summary>
        /// "list(attr)"
        /// </summary>
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public pbc::RepeatedField<global::Tensorflow.NameAttrList> Func {
          get { return func_; }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override bool Equals(object other) {
          return Equals(other as ListValue);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public bool Equals(ListValue other) {
          if (ReferenceEquals(other, null)) {
            return false;
          }
          if (ReferenceEquals(other, this)) {
            return true;
          }
          if(!s_.Equals(other.s_)) return false;
          if(!i_.Equals(other.i_)) return false;
          if(!f_.Equals(other.f_)) return false;
          if(!b_.Equals(other.b_)) return false;
          if(!type_.Equals(other.type_)) return false;
          if(!shape_.Equals(other.shape_)) return false;
          if(!tensor_.Equals(other.tensor_)) return false;
          if(!func_.Equals(other.func_)) return false;
          return Equals(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override int GetHashCode() {
          int hash = 1;
          hash ^= s_.GetHashCode();
          hash ^= i_.GetHashCode();
          hash ^= f_.GetHashCode();
          hash ^= b_.GetHashCode();
          hash ^= type_.GetHashCode();
          hash ^= shape_.GetHashCode();
          hash ^= tensor_.GetHashCode();
          hash ^= func_.GetHashCode();
          if (_unknownFields != null) {
            hash ^= _unknownFields.GetHashCode();
          }
          return hash;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public override string ToString() {
          return pb::JsonFormatter.ToDiagnosticString(this);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void WriteTo(pb::CodedOutputStream output) {
          s_.WriteTo(output, _repeated_s_codec);
          i_.WriteTo(output, _repeated_i_codec);
          f_.WriteTo(output, _repeated_f_codec);
          b_.WriteTo(output, _repeated_b_codec);
          type_.WriteTo(output, _repeated_type_codec);
          shape_.WriteTo(output, _repeated_shape_codec);
          tensor_.WriteTo(output, _repeated_tensor_codec);
          func_.WriteTo(output, _repeated_func_codec);
          if (_unknownFields != null) {
            _unknownFields.WriteTo(output);
          }
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public int CalculateSize() {
          int size = 0;
          size += s_.CalculateSize(_repeated_s_codec);
          size += i_.CalculateSize(_repeated_i_codec);
          size += f_.CalculateSize(_repeated_f_codec);
          size += b_.CalculateSize(_repeated_b_codec);
          size += type_.CalculateSize(_repeated_type_codec);
          size += shape_.CalculateSize(_repeated_shape_codec);
          size += tensor_.CalculateSize(_repeated_tensor_codec);
          size += func_.CalculateSize(_repeated_func_codec);
          if (_unknownFields != null) {
            size += _unknownFields.CalculateSize();
          }
          return size;
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(ListValue other) {
          if (other == null) {
            return;
          }
          s_.Add(other.s_);
          i_.Add(other.i_);
          f_.Add(other.f_);
          b_.Add(other.b_);
          type_.Add(other.type_);
          shape_.Add(other.shape_);
          tensor_.Add(other.tensor_);
          func_.Add(other.func_);
          _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
        }

        [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
        public void MergeFrom(pb::CodedInputStream input) {
          uint tag;
          while ((tag = input.ReadTag()) != 0) {
            switch(tag) {
              default:
                _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
                break;
              case 18: {
                s_.AddEntriesFrom(input, _repeated_s_codec);
                break;
              }
              case 26:
              case 24: {
                i_.AddEntriesFrom(input, _repeated_i_codec);
                break;
              }
              case 34:
              case 37: {
                f_.AddEntriesFrom(input, _repeated_f_codec);
                break;
              }
              case 42:
              case 40: {
                b_.AddEntriesFrom(input, _repeated_b_codec);
                break;
              }
              case 50:
              case 48: {
                type_.AddEntriesFrom(input, _repeated_type_codec);
                break;
              }
              case 58: {
                shape_.AddEntriesFrom(input, _repeated_shape_codec);
                break;
              }
              case 66: {
                tensor_.AddEntriesFrom(input, _repeated_tensor_codec);
                break;
              }
              case 74: {
                func_.AddEntriesFrom(input, _repeated_func_codec);
                break;
              }
            }
          }
        }

      }

    }
    #endregion

  }

  /// <summary>
  /// A list of attr names and their values. The whole list is attached
  /// with a string name.  E.g., MatMul[T=float].
  /// </summary>
  public sealed partial class NameAttrList : pb::IMessage<NameAttrList> {
    private static readonly pb::MessageParser<NameAttrList> _parser = new pb::MessageParser<NameAttrList>(() => new NameAttrList());
    private pb::UnknownFieldSet _unknownFields;
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pb::MessageParser<NameAttrList> Parser { get { return _parser; } }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public static pbr::MessageDescriptor Descriptor {
      get { return global::Tensorflow.AttrValueReflection.Descriptor.MessageTypes[1]; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    pbr::MessageDescriptor pb::IMessage.Descriptor {
      get { return Descriptor; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NameAttrList() {
      OnConstruction();
    }

    partial void OnConstruction();

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NameAttrList(NameAttrList other) : this() {
      name_ = other.name_;
      attr_ = other.attr_.Clone();
      _unknownFields = pb::UnknownFieldSet.Clone(other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public NameAttrList Clone() {
      return new NameAttrList(this);
    }

    /// <summary>Field number for the "name" field.</summary>
    public const int NameFieldNumber = 1;
    private string name_ = "";
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public string Name {
      get { return name_; }
      set {
        name_ = pb::ProtoPreconditions.CheckNotNull(value, "value");
      }
    }

    /// <summary>Field number for the "attr" field.</summary>
    public const int AttrFieldNumber = 2;
    private static readonly pbc::MapField<string, global::Tensorflow.AttrValue>.Codec _map_attr_codec
        = new pbc::MapField<string, global::Tensorflow.AttrValue>.Codec(pb::FieldCodec.ForString(10), pb::FieldCodec.ForMessage(18, global::Tensorflow.AttrValue.Parser), 18);
    private readonly pbc::MapField<string, global::Tensorflow.AttrValue> attr_ = new pbc::MapField<string, global::Tensorflow.AttrValue>();
    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public pbc::MapField<string, global::Tensorflow.AttrValue> Attr {
      get { return attr_; }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override bool Equals(object other) {
      return Equals(other as NameAttrList);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public bool Equals(NameAttrList other) {
      if (ReferenceEquals(other, null)) {
        return false;
      }
      if (ReferenceEquals(other, this)) {
        return true;
      }
      if (Name != other.Name) return false;
      if (!Attr.Equals(other.Attr)) return false;
      return Equals(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override int GetHashCode() {
      int hash = 1;
      if (Name.Length != 0) hash ^= Name.GetHashCode();
      hash ^= Attr.GetHashCode();
      if (_unknownFields != null) {
        hash ^= _unknownFields.GetHashCode();
      }
      return hash;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public override string ToString() {
      return pb::JsonFormatter.ToDiagnosticString(this);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void WriteTo(pb::CodedOutputStream output) {
      if (Name.Length != 0) {
        output.WriteRawTag(10);
        output.WriteString(Name);
      }
      attr_.WriteTo(output, _map_attr_codec);
      if (_unknownFields != null) {
        _unknownFields.WriteTo(output);
      }
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public int CalculateSize() {
      int size = 0;
      if (Name.Length != 0) {
        size += 1 + pb::CodedOutputStream.ComputeStringSize(Name);
      }
      size += attr_.CalculateSize(_map_attr_codec);
      if (_unknownFields != null) {
        size += _unknownFields.CalculateSize();
      }
      return size;
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(NameAttrList other) {
      if (other == null) {
        return;
      }
      if (other.Name.Length != 0) {
        Name = other.Name;
      }
      attr_.Add(other.attr_);
      _unknownFields = pb::UnknownFieldSet.MergeFrom(_unknownFields, other._unknownFields);
    }

    [global::System.Diagnostics.DebuggerNonUserCodeAttribute]
    public void MergeFrom(pb::CodedInputStream input) {
      uint tag;
      while ((tag = input.ReadTag()) != 0) {
        switch(tag) {
          default:
            _unknownFields = pb::UnknownFieldSet.MergeFieldFrom(_unknownFields, input);
            break;
          case 10: {
            Name = input.ReadString();
            break;
          }
          case 18: {
            attr_.AddEntriesFrom(input, _map_attr_codec);
            break;
          }
        }
      }
    }

  }

  #endregion

}

#endregion Designer generated code
